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)是否有其他策略阻止了连接。
相关推荐
逐风&者18 小时前
CentsOS 7 “Could not resolve host: mirrorlist.centos.org; 未知的错误”问题解决
linux·运维·centos
极客范儿18 小时前
华为HCIP网络工程师认证—网络参考模型
网络·华为
南♡黎(・ิϖ・ิ)っ18 小时前
JavaEE初阶,网络原理HTTP报头篇
网络·https·java-ee
爱编程的鱼18 小时前
HTTP 是什么?它是如何工作的
网络·网络协议·http
超越自己18 小时前
远程连接银河麒麟服务器-xrdp方式
linux·运维·服务器·远程桌面·银河麒麟
sakoba18 小时前
Linux上kafka部署和使用
linux·运维·kafka
小武~19 小时前
嵌入式Linux安全启动全解析:从原理到实战
linux·网络·安全
刘一说19 小时前
CentOS Stream 网络故障排查:静态IP丢失、无法访问的完整解决方案
linux·tcp/ip·centos
硬核子牙19 小时前
gdb调试多线程底层实现原理
linux
用户61354114601619 小时前
OceanBase all-in-one 4.2.0.0 安装教程(CentOS 7/EL7 一键部署详细步骤)
linux