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)是否有其他策略阻止了连接。
相关推荐
QT 小鲜肉3 小时前
【个人成长笔记】在Ubuntu中的Linux系统安装 anaconda 及其相关终端命令行
linux·笔记·深度学习·学习·ubuntu·学习方法
QT 小鲜肉3 小时前
【个人成长笔记】在Ubuntu中的Linux系统安装实验室WIFI驱动安装(Driver for Linux RTL8188GU)
linux·笔记·学习·ubuntu·学习方法
爱学习饼4 小时前
CentOS下安装配置JDK24和tomcat11
linux·运维·centos
关关长语4 小时前
(一) Dotnet使用MCP的Csharp SDK
网络·.net·mcp
迎風吹頭髮4 小时前
Linux服务器编程实践26-TCP连接超时重连机制:超时时间计算与重连策略
服务器·网络·php
@realXuan4 小时前
实践 3:Vim 编辑器的使用
linux·vim
wanhengidc5 小时前
什么是站群服务器
运维·服务器·网络·游戏·智能手机
deng-c-f5 小时前
Linux C/C++ 学习日记(24):UDP协议的介绍:广播、多播的实现
linux·网络·学习·udp