将笔记本网口作为 NAT 网关
将笔记本网口作为 NAT 网关
本文以 Linux 笔记本为例:笔记本通过 Wi-Fi 接入家庭路由器,再通过有线网口为下游设备提供网络。
1. 网络拓扑
Internet
|
家庭路由器(192.168.0.1)
|
Wi-Fi:笔记本获得 192.168.0.225
|
笔记本(NetworkManager)
| 有线网口:192.168.50.1/24
|
下游设备:192.168.50.10、192.168.50.11、192.168.50.138 ...
下游设备应把 192.168.50.1 作为默认网关。ipv4.method shared 会让 NetworkManager 自动配置内网地址、DHCP、DNS 转发和 IPv4 NAT。因此通常不需要手动启动独立的 dnsmasq 服务;若系统已有独立 dnsmasq,可能发生端口冲突。
2. 前提条件
- 已安装并运行 NetworkManager;
- 笔记本已通过 Wi-Fi 正常上网;
- 有线网口已连接到下游设备或交换机;
- 以下命令中的连接名和接口名按实际情况替换。
查看名称:
nmcli device status
nmcli connection show
本文假设有线连接名为 Wired connection 1,接口名为 enp49s0。
3. 配置有线连接为 NAT 内网
sudo nmcli connection modify "Wired connection 1" \
connection.interface-name enp49s0 \
ipv4.method shared \
ipv4.addresses 192.168.50.1/24 \
ipv4.gateway "" \
ipv4.dns "" \
ipv6.method disabled
sudo nmcli connection down "Wired connection 1" 2>/dev/null || true
sudo nmcli connection up "Wired connection 1"
确认地址和路由:
ip -4 addr show dev enp49s0
ip route
有线接口应显示 192.168.50.1/24。不要给这个内网连接设置 ipv4.gateway,默认路由应继续由 Wi-Fi 连接提供。
4. 确认 IPv4 转发
shared 模式通常会由 NetworkManager 处理转发和防火墙规则。可以显式打开 IPv4 转发:
sudo sysctl -w net.ipv4.ip_forward=1
printf '%s\n' 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-ip-forward.conf
sudo sysctl --system
5. 验证下游设备
下游设备应通过 DHCP 获得 192.168.50.x 地址、255.255.255.0 子网掩码、192.168.50.1 默认网关和可用 DNS。
在笔记本上查看邻居表和 DHCP 租约:
ip -4 neigh show dev enp49s0
sudo cat /var/lib/NetworkManager/dnsmasq-enp49s0.leases
在下游设备上依次测试:
ping 192.168.50.1
ping 192.168.0.1
ping 223.5.5.5
ping baidu.com
只能访问 IP、不能解析域名时,通常是 DNS 问题;连 192.168.50.1 都无法访问时,先检查网线、接口状态和下游地址配置。
6. 恢复有线连接为普通 DHCP
sudo nmcli connection modify "Wired connection 1" \
connection.interface-name "" \
ipv4.method auto \
ipv4.addresses "" \
ipv4.gateway "" \
ipv4.dns "" \
ipv6.method auto
sudo nmcli connection down "Wired connection 1" 2>/dev/null || true
sudo nmcli connection up "Wired connection 1"
如果不再需要永久启用 IPv4 转发:
sudo rm -f /etc/sysctl.d/99-ip-forward.conf
sudo sysctl --system
7. 下游设备的路由测试
一般不需要手动删除默认路由。若设备上存在旧路由,先查看:
ip route
确认旧网关无效后,再按实际接口和网关删除,例如:
sudo ip route del default via 192.168.0.8 dev wlP1p1s0
按照实际网络连接名称可恢复
或重启
sudo nmcli connection down "Wired connection 1" 2>/dev/null || true
sudo nmcli connection up "Wired connection 1"
上面的接口名和网关只是示例,必须替换为设备的实际值。随后重新连接网络,或让设备通过 DHCP 重新获取地址、网关和 DNS。
浙公网安备 33010602011771号