文章目录
- 
- 
- [方法 1:使用 Ubuntu 内置网络共享(界面)](#方法 1:使用 Ubuntu 内置网络共享(界面))
 - 
- [1. 确保 Ubuntu 已连接 Wi-Fi](#1. 确保 Ubuntu 已连接 Wi-Fi)
 - [2. 用网线连接 Ubuntu 和 Windows](#2. 用网线连接 Ubuntu 和 Windows)
 - [3. 在 Ubuntu 上启用网络共享](#3. 在 Ubuntu 上启用网络共享)
 - [4. 检查 Ubuntu 有线接口 IP*](#4. 检查 Ubuntu 有线接口 IP*)
 - [5. 在 Windows 上配置网络](#5. 在 Windows 上配置网络)
 - [6. 测试网络连接](#6. 测试网络连接)
 
 - [方法 2:手动配置 IP 转发(配置命令行配置)](#方法 2:手动配置 IP 转发(配置命令行配置))
 - 
- [1. 在 Ubuntu 上启用 IP 转发](#1. 在 Ubuntu 上启用 IP 转发)
 - [2. 设置 NAT 规则](#2. 设置 NAT 规则)
 - [3. 配置有线接口 IP](#3. 配置有线接口 IP)
 - [4. 在 Windows 上手动设置 IP](#4. 在 Windows 上手动设置 IP)
 
 - 常见问题解决
 - 
- [1. Windows 无法上网](#1. Windows 无法上网)
 - [2. 接口名称不同](#2. 接口名称不同)
 - [3. NAT 规则重启失效](#3. NAT 规则重启失效)
 
 
 
 - 
 
使用Ubuntu 通过有线共享无线网络给 Windows,可以按照以下步骤操作:
方法 1:使用 Ubuntu 内置网络共享(界面)
1. 确保 Ubuntu 已连接 Wi-Fi
- 点击右上角网络图标,确保已连接到可用的 Wi-Fi 网络。
 
2. 用网线连接 Ubuntu 和 Windows
- 使用以太网线将 Ubuntu 主机和 Windows 电脑连接起来。
 
3. 在 Ubuntu 上启用网络共享
- 打开 "设置" (Settings)→ "网络"(Network)。
 - 选择左侧的 "有线"(Wired)连接,点击齿轮图标(⚙️)。
 - 在 IPv4 设置 选项卡中,选择 "共享给其他计算机"(Shared to other computers)。
 - 点击 "应用"(Apply)保存设置。
 
4. 检查 Ubuntu 有线接口 IP*
- 
打开终端,运行:
baship addr show有线接口(如
enp0s25或eth0)的 IP 应为10.42.0.1(Ubuntu 会自动分配)。 
5. 在 Windows 上配置网络
- 
确保 Windows 使用 DHCP(自动获取 IP):
- 打开 "控制面板" → "网络和共享中心" → "更改适配器设置"。
 - 右键点击 以太网 → "属性" → 双击 "Internet 协议版本 4 (TCP/IPv4)"。
 - 选择 "自动获取 IP 地址" 和 "自动获取 DNS 服务器地址"。
 - 点击 "确定" 保存。
 
 - 
手动设置(可选,如果 DHCP 不生效):
- IP 地址:
10.42.0.2 - 子网掩码:
255.255.255.0 - 默认网关:
10.42.0.1 - DNS:
8.8.8.8(或 Ubuntu 的 IP10.42.0.1) 
 - IP 地址:
 
6. 测试网络连接
- 
在 Windows 上打开命令提示符(
cmd),运行:cmdping 8.8.8.8如果成功,说明网络共享已生效。
 
方法 2:手动配置 IP 转发(配置命令行配置)
如果方法 1 不生效,可以手动设置 NAT 转发:
1. 在 Ubuntu 上启用 IP 转发
- 
编辑
/etc/sysctl.conf:bashsudo nano /etc/sysctl.conf - 
取消注释或添加:
ininet.ipv4.ip_forward=1 - 
应用更改:
bashsudo sysctl -p 
2. 设置 NAT 规则
- 
假设:
- 无线接口(Wi-Fi):
wlp3s0(用ip a查看) - 有线接口(以太网):
enp0s25(用ip a查看) 
 - 无线接口(Wi-Fi):
 - 
运行以下命令:
bashsudo iptables -t nat -A POSTROUTING -o wlp3s0 -j MASQUERADE sudo iptables -A FORWARD -i enp0s25 -o wlp3s0 -j ACCEPT sudo iptables -A FORWARD -i wlp3s0 -o enp0s25 -m state --state RELATED,ESTABLISHED -j ACCEPT 
以下是三条iptables命令的详细解释:
- NAT地址伪装(MASQUERADE)
 
            
            
              bash
              
              
            
          
          sudo iptables -t nat -A POSTROUTING -o wlp3s0 -j MASQUERADE
        - 作用 :将来自有线网卡
enp0s25的流量通过无线网卡wlp3s0发出时,自动修改源IP为无线网卡的IP地址 - 关键点 :
-t nat:操作NAT表POSTROUTING:在数据包发出前的最后处理阶段-o wlp3s0:指定出口网卡MASQUERADE:动态IP伪装(适用于DHCP获取IP的情况)
 
- 正向流量放行规则
 
            
            
              bash
              
              
            
          
          sudo iptables -A FORWARD -i enp0s25 -o wlp3s0 -j ACCEPT
        - 作用 :允许从有线网卡(
enp0s25)进入,从无线网卡(wlp3s0)转发的流量 - 流向 :
客户端 → 有线网卡 → 无线网卡 → 互联网 
- 反向流量控制规则
 
            
            
              bash
              
              
            
          
          sudo iptables -A FORWARD -i wlp3s0 -o enp0s25 -m state --state RELATED,ESTABLISHED -j ACCEPT
        - 作用:仅允许与已有连接相关的返回流量通过
 - 保护机制 :
-m state:启用连接状态检测RELATED,ESTABLISHED:只放行已建立的连接或关联的新连接(如FTP数据传输)- 阻止外部主动发起的连接请求,增强安全性
 
 
整体网络流 :
客户端请求 → enp0s25 → (NAT转换) → wlp3s0 → 互联网
互联网响应 → wlp3s0 → (状态检测) → enp0s25 → 客户端
3. 配置有线接口 IP
- 
将有线接口设为静态 IP:
bashsudo ip addr add 10.42.0.1/24 dev enp0s25 
4. 在 Windows 上手动设置 IP
- 按照 方法 1 的步骤 5 手动设置 Windows 的 IP 为 
10.42.0.2,网关为10.42.0.1。 
常见问题解决
1. Windows 无法上网
- 
检查 Ubuntu 的防火墙是否允许转发:
bashsudo ufw allow in on enp0s25 - 
确保 Windows 的网关和 DNS 设置正确。
 
如果windwos 已获取了10.42.0.x的IP,但是不能访问互联网,则需要手动写NAT规则。
- 
假设:
- 无线接口(Wi-Fi):
wlp3s0(用ip a查看) - 有线接口(以太网):
enp0s25(用ip a查看) 
 - 无线接口(Wi-Fi):
 - 
运行以下命令:
bashsudo iptables -t nat -A POSTROUTING -o wlp3s0 -j MASQUERADE sudo iptables -A FORWARD -i enp0s25 -o wlp3s0 -j ACCEPT sudo iptables -A FORWARD -i wlp3s0 -o enp0s25 -m state --state RELATED,ESTABLISHED -j ACCEPT 
2. 接口名称不同
- 用 
ip a或ifconfig确认你的实际接口名(如eth0、enp0s3等)。 
3. NAT 规则重启失效
- 
若要持久化 iptables 规则,安装
iptables-persistent:bashsudo apt install iptables-persistent sudo netfilter-persistent save 
- 推荐方法 1(图形化设置),简单快捷,NAT规则。
 - 如果无效,再尝试 方法 2(手动配置 NAT)。
 - 确保 Windows 使用 自动获取 IP 或手动设置正确的网关(
10.42.0.1)。