不使用OpenWRT,直接在Linux上配置NAT作为网关转发网络流量
ShirakawaTyu2026/03/01技术博客Linux NAT配置网络流量转发校园网MAC绑定绕过无需OpenWRT的网关方案Docker网络不稳定问题网络接口转发设置iptables持久化规则单板计算机网络设置自定义网关解决方案内核IP转发启用方法
不使用OpenWRT,直接在Linux上配置NAT作为网关转发网络流量
动机
校园网一个账号只能允许一个MAC上网,而我同时有arm单板计算机(简称SBC,类似树莓派的玩意儿)和台式机各一台,很自然会想到这种方案:在SBC上跑openwrt,认证,转发台式机流量。
但面临着如下限制:
- SBC上只有一个网口,而上级路由器要求必须通过DHCP获取IP(但是获取之后就是一直和MAC地址绑定),否则无法在内网通信,解决办法是花十几块买个免配置的交换机
- SBC上跑了其他服务,刷OpenWRT并不现实,尝试用Docker跑发现不稳定,重启后容易断网
很显然,抛弃OpenWRT直接利用Linux转发是一种更好的解决方案。
实施
- 打开内核转发
echo "net.ipv4.ip_forward=1" | tee -a /etc/sysctl.conf
- 允许所有数据包通过(注意安全风险)
iptables -A FORWARD -j ACCEPT
- 设置转发规则,将所有从 eth0 接口发出的数据包的源地址修改为 eth0 接口当前的 IP 地址
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
- 持久化iptables规则
apt install iptables-persistent
netfilter-persistent save
- 将台式机网关修改为SBC的IP地址即可