Linux 內核支援 IP 轉發功能,配合 iptables NAT 或 ip route 即可將 Linux 主機化身為路由器,實現區域網路共享上網。本文詳細說明開啟 IP 轉發、兩種路由實現方式、客戶端設定與永久生效配置。

echo "1" > /proc/sys/net/ipv4/ip_forward
# 編輯 /etc/sysctl.conf
net.ipv4.ip_forward = 1
# 套用
sysctl -p
| 特性 | iptables NAT | ip route (iproute2) |
|---|---|---|
| 適用上網方式 | 動態 IP (PPPoE) / 固定公網 IP | 動態 IP / 固定公網 IP |
| NAT 功能 | 內建 SNAT/MASQUERADE/DNAT | 無(純路由轉發) |
| 隱藏內網 IP | 支援 | 不支援 |
| 進階功能 | 策略路由、負載平衡、多 WAN 需配合 ip route | 策略路由、多路徑、負載平衡核心工具 |
生產環境常 兩者搭配:ip route 處理複雜路由決策,iptables 處理 NAT 與防火牆。
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE
需先完成撥號設定(/etc/sysconfig/network-scripts/ifcfg-ppp0)。
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 202.103.224.58
ip route add default via ppp0 dev eth0
ip route add default via 202.103.224.58 dev eth0
192.168.1.2 ~ 192.168.1.254(不可重複)255.255.255.0192.168.1.1(Linux 路由器 LAN 介面 IP)本範例未架設 DHCP,需手動設定各客戶端。
掌握 sysctl 啟用轉發、iptables -t nat 處理 NAT、ip route 管理路由表,即可打造功能完整的 Linux 共享上網閘道。建議搭配 iptables-save / systemd-networkd 實現開機自動套用規則。