Linux服务器共享上网需先永久启用IP转发(修改/etc/sysctl.conf并sysctl -p),再用iptables在WAN口执行MASQUERADE规则实现NAT,同时放行FORWARD链,并配置客户端网关指向服务器内网IP、DNS设为公网地址。

Linux 服务器要让局域网内多台设备通过它共享上网,核心是开启 IP 转发 + 配置 NAT(网络地址转换),其中“IP 伪装”(MASQUERADE)就是 NAT 的一种动态实现方式,特别适合 WAN 口使用拨号(如 ppp0)或 DHCP 获取公网 IP 的场景。
一、确认并永久启用 IP 转发
IP 转发是路由功能的基础,必须先打开:
- 查看当前状态:
cat /proc/sys/net/ipv4/ip_forward,输出 1 表示已启用,0 表示未启用 - 临时启用(重启失效):
sudo sysctl -w net.ipv4.ip_forward=1 - 永久生效:编辑
/etc/sysctl.conf,取消注释并修改为net.ipv4.ip_forward = 1,然后运行sudo sysctl -p加载配置
二、配置 iptables 实现 IP 伪装
假设你的服务器有两个网卡:
• LAN 口(内网):如 eth1,连接局域网,IP 为 192.168.10.1/24
• WAN 口(外网):如 eth0 或 ppp0,能访问互联网
执行以下命令(注意替换实际接口名):
- 清空现有规则(测试环境建议,生产环境慎用):
sudo iptables -Fsudo iptables -t nat -F - 允许已建立/相关的连接通过:
sudo iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT - 允许内网设备发起的新连接(源为内网网段):
sudo iptables -A FORWARD -s 192.168.10.0/24 -j ACCEPT - 在 WAN 口上启用 MASQUERADE(关键步骤):
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
若 WAN 是拨号接口(如 ppp0),则把eth0换成ppp0
三、客户端网络设置
局域网内的其他机器(如 Windows 或 Linux 客户端)需做如下配置:
- IPv4 地址:设为同网段静态 IP 或由 DHCP 分配,例如
192.168.10.10 - 子网掩码:如
255.255.255.0 - 默认网关:指向服务器的 LAN 口 IP,即
192.168.10.1 - DNS:可设为服务器 IP(若其运行 DNS 服务),或直接填公网 DNS,如
8.8.8.8和114.114.114.114
四、保存规则(避免重启丢失)
iptables 规则默认不持久。根据发行版选择保存方式:
- Debian/Ubuntu:
sudo iptables-save | sudo tee /etc/iptables/rules.v4 - RHEL/CentOS 7+(使用 firewalld):
先禁用 firewalld(或配置 rich rules),或改用iptables-services包:sudo yum install iptables-servicessudo systemctl enable iptablessudo service iptables save - 通用方法(脚本启动):将上述 iptables 命令写入开机脚本(如
/etc/network/if-up.d/nat),并赋予可执行权限
配置完成后,在客户端 ping 外网域名(如 ping -c 3 www.baidu.com)测试连通性。如失败,检查服务器 WAN 口是否真能上网、iptables 规则顺序、以及客户端网关/DNS 设置是否正确。


















