Linux作为路由器转发的核心是启用IP转发、配置双网卡地址、设置NAT与转发规则:临时执行sysctl -w net.ipv4.ip_forward=1,永久写入/etc/sysctl.conf并sysctl -p;外网口DHCP、内网口静态IP(如192.168.10.1/24);用iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE及FORWARD链规则放行流量。

Linux 作为路由器转发,核心是让系统具备“收一个网段的包、转到另一个网段”的能力。这不依赖额外软件,靠内核功能+基础网络配置就能实现,关键就三点:启用 IP 转发、配好双网卡地址、设置 NAT 和转发规则。
开启 IP 转发功能
这是最根本的前提。默认关闭,必须显式打开:
- 临时启用(重启失效):sudo sysctl -w net.ipv4.ip_forward=1
- 永久生效:向 /etc/sysctl.conf 追加一行:
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
再执行 sudo sysctl -p 加载
配置双网卡网络地址
假设你有两块物理或虚拟网卡,分别连外网(如 eth0)和内网(如 eth2):
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 外网口(eth0)通常走 DHCP 获取公网或光猫分配的地址:
Ubuntu/Netplan 示例:
dhcp4: true - 内网口(eth2)需设为静态地址,作为局域网网关,例如:
addresses: [192.168.10.1/24]
dhcp4: false - 保存后运行 sudo netplan apply(Ubuntu)或 nmcli connection up
(RHEL/CentOS)使配置生效
配置 NAT 与数据包转发规则
仅开启转发还不够,内网设备发出的包目标是外网,返回路径必须能正确回到内网设备,这就需要 NAT(伪装源地址)和放行转发链:
- 启用 MASQUERADE(适用于外网口动态获取 IP 的场景):
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE - 允许内网→外网的出向转发:
sudo iptables -A FORWARD -i eth2 -o eth0 -j ACCEPT - 允许外网→内网的回向转发(基于连接状态):
sudo iptables -A FORWARD -i eth0 -o eth2 -m state --state RELATED,ESTABLISHED -j ACCEPT - 规则默认不持久,建议用 iptables-save > /etc/iptables/rules.v4(Debian/Ubuntu)或 iptables-services(RHEL)保存
客户端侧要配对网关
你的电脑或手机要走这台 Linux 路由器上网,必须把它的默认网关指向 Linux 的内网 IP(比如 192.168.10.1),DNS 可设为 8.8.8.8 或本地 dnsmasq 地址。验证方式:
— 内网设备 ping 通 192.168.10.1
— 能 curl http://ifconfig.me 看到公网出口 IP
— traceroute 外网地址,第二跳应为该 Linux 主机


















