僅需開啟核心轉發、配置靜態路由,普通 Linux PC 即可化身路由器實現跨網段通訊。本文以三台主機 (①④⑦) 實驗,對比**錯誤配置 (直連目標 MAC 導致 ARP 廣播不轉發)** 與**正確配置 (指定網關 MAC 逐跳轉發)**,深入解析 ARP、路由表、封包流向與 tcpdump 抓包驗證。
① (10.0.1.3/24) ── eth1 ── ④ (10.0.1.2/24, 10.0.4.2/24) ── eth4 ── ⑦ (10.0.4.3/24) 目標:① ping ⑦,④ 作為路由轉發
# ①
route add -net 10.0.4.0/24 dev eth1
# ⑦
route add -net 10.0.1.0/24 dev eth1
# ④ 開啟轉發
echo 1 > /proc/sys/net/ipv4/ip_forward
結果:① 不斷發送 ARP Request who-has 10.0.4.3,④ **不轉發 ARP 廣播**,⑦ 收不到請求,ping 失敗 (Destination Host Unreachable)。
# ① 指定下一跳為 ④ 的 eth1 IP
route add -net 10.0.4.0/24 gw 10.0.1.2 dev eth1
# 路由表顯示 Flags=UG (Use Gateway)
# ⑦ 指定下一跳為 ④ 的 eth4 IP
route add -net 10.0.1.0/24 gw 10.0.4.2 dev eth1
# ④ 已開啟 ip_forward
| 介面 | MAC |
|---|---|
| ① eth1 | 00:16:EC:AF:CB:CB |
| ④ eth1 | 40:61:86:32:8F:0B |
| ④ eth4 | 40:61:86:32:8F:0E |
| ⑦ eth1 | 00:25:90:93:40:79 |
16:02:26.809445 00:16:ec:af:cb:cb > 40:61:86:32:8f:0b, IPv4, 10.0.1.3 > 10.0.4.3: ICMP echo request
16:02:26.810723 40:61:86:32:8f:0b > 00:16:ec:af:cb:cb, IPv4, 10.0.4.3 > 10.0.1.3: ICMP echo reply
① 封裝:目的 IP=⑦ (10.0.4.3),目的 MAC=④ eth1 (已知網關 MAC)。
16:02:26.809460 40:61:86:32:8f:0e > 00:25:90:93:40:79, IPv4, 10.0.1.3 > 10.0.4.3: ICMP echo request
16:02:26.810715 00:25:90:93:40:79 > 40:61:86:32:8f:0e, IPv4, 10.0.4.3 > 10.0.1.3: ICMP echo reply
④ 轉發:目的 IP 不變,目的 MAC 改為 ⑦ eth1 (ARP 解析),來源 MAC 改為 ④ eth4。
16:02:27.222853 40:61:86:32:8f:0e > 00:25:90:93:40:79, IPv4, 10.0.1.3 > 10.0.4.3: ICMP echo request
⑦ 收到封包,目的 MAC 為自己,正常回應。
dev eth1 導致發送端嘗試直接 ARP 解析遠端目標,失敗。gw 次跳IP 讓發送端 ARP 解析**網關 MAC**,逐跳轉發。| 功能 | 指令 |
|---|---|
| 啟用 IP 轉發 (臨時) | echo 1 > /proc/sys/net/ipv4/ip_forward |
| 啟用 IP 轉發 (永久) | echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf; sysctl -p |
| 新增靜態路由 (指定網關) | route add -net NETWORK gw GATEWAY dev IFACE |
| 新增靜態路由 (指定介面) | route add -net NETWORK dev IFACE |
| 查看路由表 | route -n / ip route show |
| 抓取封包分析 | tcpdump -i IFACE -enn |
| 啟用 ARP 代理 | echo 1 > /proc/sys/net/ipv4/conf/IFACE/proxy_arp |




Linux 軟體 RAID 實戰操作指南:mdadm 建立 RAID0、模擬故障、熱備、停止陣列完整流程
Linux Bash Shellshock (破殼) 漏洞 (CVE-2014-6271/7169) 檢測與修補完整指南
Linux Git 版本控制完整實戰指南:初始化、分支、衝突、遠端協作
Linux 終端機快捷鍵大全:刪除、移動、替換、歷史指令與進階技巧
Ubuntu 配置與使用 MPI (mpich2) 環境快速入門
RedHat 6.5 網卡常見問題解決:Auto_eth0 改名 eth0、70-persistent-net.rules 同步、NetworkManager 衝突