win-ubuntu网络转发

好的,这是一个非常典型的场景,我们将把你的 Ubuntu 台式机配置成一个路由器,让你的 Windows 电脑通过它的 Wi-Fi 连接来访问互联网。

整个过程分为三大部分:

  1. 配置 Ubuntu 网络:设置有线和无线网卡的 IP 地址。
  2. 开启 IP 转发:让 Ubuntu 系统具备路由数据包的能力。
  3. 配置 iptables 防火墙:实现网络地址转换(NAT),让来自 Windows 的数据包能伪装成从 Ubuntu 发出。

第一步:配置 Ubuntu 台式机的网络

我们需要为你的有线网卡 enp5s0 设置一个静态 IP 地址,它将作为 Windows 电脑的网关。Wi-Fi 网卡 wlo1 则保持正常连接互联网的状态(通常是通过 DHCP 自动获取 IP)。

方法一:使用 Netplan (推荐,适用于 Ubuntu 18.04 及以上版本)
  1. 找到你的 Netplan 配置文件 。它通常在 /etc/netplan/ 目录下,文件名可能是 01-network-manager-all.yaml50-cloud-init.yaml

    bash 复制代码
    sudo nano /etc/netplan/01-network-manager-all.yaml
  2. 修改配置文件 。将 enp5s0 的配置改为静态 IP,并确保 wlo1 使用 DHCP。

    yaml 复制代码
    # Let NetworkManager manage all devices on this system
    network:
      version: 2
      renderer: NetworkManager
      ethernets:
        enp5s0:  # 你的有线网卡
          dhcp4: no  # 关闭 DHCP
          addresses: [192.168.100.1/24]  # 为有线网卡设置一个静态IP和子网掩码
          nameservers:
            addresses: [8.8.8.8, 1.1.1.1] # 可选:设置DNS服务器
      wifis:
        wlo1:  # 你的无线网卡
          dhcp4: yes  # 开启 DHCP,自动获取上网IP
          access-points:
            "你的WiFi名称":  # 替换成你的WiFi名称
              password: "你的WiFi密码" # 替换成你的WiFi密码

    说明

    • addresses: [192.168.100.1/24]:我们给有线网卡分配了 192.168.100.1 这个 IP 地址。/24 表示子网掩码是 255.255.255.0,这意味着内网网段是 192.168.100.0/24。你可以根据喜好修改这个网段。
    • wlo1 的配置保持自动获取 IP 即可,它负责连接你的主路由器上网。
  3. 应用配置

    bash 复制代码
    sudo netplan apply
  4. 验证 。执行 ip addr 命令,检查 enp5s0 的 IP 是否已变为 192.168.100.1,并且 wlo1 已经成功连接 Wi-Fi 并获取了 IP。

方法二:使用图形界面 (更简单)
  1. 点击屏幕右上角的网络图标,选择 "有线网络设置"。
  2. 在打开的窗口中,找到你的有线连接(可能叫 "有线" 或 "Wired connection 1"),点击旁边的齿轮 ⚙️ 图标。
  3. 切换到 "IPv4" 标签页。
  4. 将 IPv4 方法从 "自动 (DHCP) " 改为 "手动"。
  5. 在地址部分,填写:
    • 地址 : 192.168.100.1
    • 子网掩码 : 255.255.255.0
    • 网关 : (留空)
  6. 在 "DNS " 服务器部分,你可以填写公共 DNS,如 8.8.8.8, 1.1.1.1
  7. 点击 "应用"。

对于 Wi-Fi,确保它已经正常连接到你的家用路由器,可以上网。


第二步:开启 IP 转发功能

这一步是让 Ubuntu 系统从一个网络接口(enp5s0)接收数据包,并转发到另一个网络接口(wlo1)。

  1. 临时开启 (重启后失效)。这可以让你立即测试配置是否成功。

    bash 复制代码
    sudo sysctl -w net.ipv4.ip_forward=1
  2. 永久开启 (推荐) 。编辑 sysctl.conf 文件。

    bash 复制代码
    sudo nano /etc/sysctl.conf

    找到并取消注释(删除开头的 #)下面这一行:

    复制代码
    net.ipv4.ip_forward=1

    如果找不到这一行,就在文件末尾添加它。

  3. 让永久配置立即生效

    bash 复制代码
    sudo sysctl -p

第三步:配置 iptables 防火墙和 NAT

这是最关键的一步,它将来自 Windows 的流量(源地址是 192.168.100.0/24 网段)伪装成从 Ubuntu 自己的 Wi-Fi 接口发出,从而实现上网。

  1. 清空并设置默认策略 (可选,但推荐)。

    bash 复制代码
    sudo iptables -F
    sudo iptables -X
    sudo iptables -t nat -F
    sudo iptables -t nat -X
    sudo iptables -P INPUT ACCEPT
    sudo iptables -P FORWARD ACCEPT
    sudo iptables -P OUTPUT ACCEPT
  2. 添加 NAT 规则

    bash 复制代码
    sudo iptables -t nat -A POSTROUTING -o wlo1 -j MASQUERADE

    命令解释:

    • -t nat: 操作 NAT 表。
    • -A POSTROUTING: 在数据包即将离开系统时(POSTROUTING 链)添加一条规则。
    • -o wlo1: 指定数据包要从 wlo1 (Wi-Fi) 接口出去。
    • -j MASQUERADE: 执行 "伪装" 动作。这会自动获取 wlo1 接口的 IP 地址,并将数据包的源 IP 地址替换成它。这对于 IP 地址是动态获取的情况(如 Wi-Fi)特别有用。
  3. 允许转发。默认情况下,Ubuntu 的防火墙可能阻止转发。我们需要明确允许从有线网卡到无线网卡的流量。

    bash 复制代码
    sudo iptables -A FORWARD -i enp5s0 -o wlo1 -j ACCEPT
    sudo iptables -A FORWARD -i wlo1 -o enp5s0 -m state --state RELATED,ESTABLISHED -j ACCEPT

    命令解释:

    • 第一条:允许从 enp5s0 (有线) 进入,从 wlo1 (Wi-Fi) 出去的流量。
    • 第二条:允许从 wlo1 (Wi-Fi) 进入,从 enp5s0 (有线) 出去的、并且是 "相关的" 或 "已建立的" 连接的返回流量。这是为了让响应数据包能回到 Windows 电脑。
  4. 保存 iptables 规则 。默认情况下,iptables 规则在重启后会丢失。你需要保存它们。

    bash 复制代码
    # 安装持久化工具
    sudo apt update
    sudo apt install iptables-persistent

    在安装过程中,系统会提示你保存当前的 IPv4 和 IPv6 规则,选择 Yes

    以后如果你修改了规则,可以用以下命令手动保存:

    bash 复制代码
    sudo netfilter-persistent save
    sudo netfilter-persistent reload

第四步:配置 Windows 电脑

现在,Ubuntu 这边已经配置好了。最后一步是设置 Windows 电脑。

  1. 用网线将 Windows 电脑和 Ubuntu 台式机连接起来。

  2. 进入 Windows 的网络设置:

    • 打开 "设置" -> "网络和 Internet"。
    • 点击你当前的有线网络连接(可能叫 "以太网" 或 "以太网 2")。
    • 点击 "更改适配器选项"。
    • 右键点击你的有线网卡,选择 "属性"。
    • 双击 "Internet 协议版本 4 (TCP/IPv4)"。
  3. 选择 "使用下面的 IP 地址",并填写:

    • IP 地址 : 192.168.100.2 (这个地址只要和 Ubuntu 的有线网卡在同一网段即可,且不能冲突)
    • 子网掩码 : 255.255.255.0
    • 默认网关 : 192.168.100.1 (必须是 Ubuntu 有线网卡的 IP 地址)
  4. 在下方的 DNS 服务器部分,选择 "使用下面的 DNS 服务器地址",并填写:

    • 首选 DNS 服务器 : 8.8.8.8 (Google DNS) 或 1.1.1.1 (Cloudflare DNS)
    • 备用 DNS 服务器 : 1.1.1.18.8.4.4
  5. 点击 "确定" 保存。


测试

  1. 在 Windows 上测试

    • 打开命令提示符 (cmd) 或 PowerShell。
    • Ping Ubuntu 的有线网卡 : ping 192.168.100.1。如果能通,说明两台电脑的内网连接成功。
    • Ping 外网地址 : ping baidu.comping 8.8.8.8。如果能通,说明路由转发和 NAT 都已成功配置!你现在应该可以用 Windows 电脑上网了。
  2. 在 Ubuntu 上测试

    • 打开终端。
    • Ping Windows 的 IP : ping 192.168.100.2。如果能通,说明双向连接正常。

如果 ping 不通,请检查:

  • 网线是否插好。
  • Ubuntu 和 Windows 的 IP 地址、子网掩码、网关是否填写正确。
  • Ubuntu 的 iptables 规则是否正确且已保存。
  • Ubuntu 的 ip_forward 是否开启 (cat /proc/sys/net/ipv4/ip_forward 应该输出 1)。
  • Ubuntu 的防火墙(如 ufw)是否有其他策略阻止了连接。
相关推荐
jinxinyuuuus3 分钟前
TikTok Watermark Remover:用户行为模拟、动态Token认证与视频流的去噪
网络·人工智能·计算机视觉·架构
Zeku5 分钟前
20251125 - 为什么Linux是非实时操作系统?
linux·服务器
sz66cm5 分钟前
Linux基础 -- 进程运行状态 之 fatal_signal_pending函数
linux
Kyan.W11 分钟前
shell好用的工具
linux·shell
側耳听偑12 分钟前
windows 11 eNSP 模拟器设备无法启动问题无法启动解决方案
网络·ensp·h3c·hcl
n***840713 分钟前
Redis基础——1、Linux下安装Redis(超详细)
linux·数据库·redis
apocelipes18 分钟前
Linux的binfmt_misc机制
linux·c语言·c++·python·golang·linux编程·开发工具和环境
虾..22 分钟前
Linux 进程控制
linux·运维·服务器
last demo27 分钟前
pxe自动化安装系统实验
linux·运维·服务器·自动化
楠目28 分钟前
SSRF攻击:原理、手法与演进
网络·ssrf