需启用IP转发、配置双网卡IP、添加静态路由、设置SNAT并指定客户端网关:先执行echo 1 > /proc/sys/net/ipv4/ip_forward并永久配置/etc/sysctl.conf;为内网口(如ens33)设192.168.100.1/24,外网口(如ens37)配通外网IP;用ip route add 192.168.200.0/24 via 192.168.100.254 dev ens33打通跨网段;通过iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens37 -j MASQUERADE实现共享上网;最后将客户端默认网关设为192.168.100.1。

让Linux主机承担局域网路由器和网关功能
你需要把一台Linux服务器变成内网设备访问外网的出口,同时让不同子网之间能互通,比如让192.168.100.0/24网段的电脑能访问192.168.200.0/24网段的NAS,还要能上网——这要求它具备IP转发、路由决策、地址转换三重能力。
启用IPv4数据包转发
第一步是告诉内核“允许我转发别人的数据包”,否则所有跨网卡流量都会被直接丢弃。
执行临时开启命令:echo 1 > /proc/sys/net/ipv4/ip_forward
验证是否生效:cat /proc/sys/net/ipv4/ip_forward,输出为1即成功。
【必须做永久配置,否则重启后失效】编辑/etc/sysctl.conf,在末尾添加一行:net.ipv4.ip_forward=1,然后运行sysctl -p立即加载。
配置双网卡IP并确认接口状态
路由器至少要有两个网卡:一个连内网(如ens33),一个连外网(如ens37)。先确认它们的名字:ip -br a。
给内网口配静态IP(例如192.168.100.1/24):sudo ip addr add 192.168.100.1/24 dev ens33 && sudo ip link set ens33 up。
给外网口配IP(可DHCP获取,也可手动设):sudo dhclient ens37 或 sudo ip addr add 203.0.113.10/24 dev ens37 && sudo ip link set ens37 up。
检查是否两个接口都UP且有正确IP:ip route show table local | grep -E "(ens33|ens37)"。
添加静态路由使内网可达
如果内网设备(如192.168.200.0/24)不直连本机,而需经由另一台中间路由器(如192.168.100.254)才能到达,则必须显式告诉本机怎么走。
方法一:用route命令添加(临时)sudo route add -net 192.168.200.0 netmask 255.255.255.0 gw 192.168.100.254 dev ens33
方法二:用ip route更现代写法(推荐)sudo ip route add 192.168.200.0/24 via 192.168.100.254 dev ens33
验证:ip route get 192.168.200.5 应返回192.168.200.5 via 192.168.100.254 dev ens33。
配置SNAT实现内网共享上网
内网设备要访问互联网,必须把源IP从私有地址(如192.168.100.10)改成外网口IP(如203.0.113.10),否则公网设备无法回包。
第一步:确认iptables已安装,执行sudo iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens37 -j MASQUERADE。
第二步:保存规则防止重启丢失(RHEL/CentOS系):sudo service iptables save;Ubuntu/Debian系用sudo iptables-save > /etc/iptables/rules.v4。
【注意:-s参数必须精确匹配内网网段,填错会导致部分设备无法上网】
设置客户端默认网关和DNS
现在Linux主机已具备路由能力,但内网设备还不知道该找谁转发。
在每台内网客户端上执行:sudo ip route replace default via 192.168.100.1(假设你给Linux路由器内网口设的是这个IP)。
或者在客户端的网络配置中将“默认网关”设为192.168.100.1,DNS可设为192.168.100.1(若本机已部署dnsmasq)或公共DNS如8.8.8.8。
测试连通性:从客户端ping路由器内网IP → ping外网IP(如114.114.114.114)→ ping域名(如baidu.com)。



















