Vpn

VPN 路由器不回复 ARP 請求

  • October 16, 2018

所以我在一個 linux 機器上設置了這三個網路介面:

eth0 面向外網 (192.168.1.0/24)
tun0 是 vpn 介面 (10.8.8.0/24)
eth1 是本地網路介面 (192.168.0.0/24)

目標是創建一個 VPN 路由器,它只路由來自 eth1 介面的數據包。

為了做到這一點,我有一個在 VPN 連接建立後執行的腳本:

允許系統其餘部分使用預設網路連接
/sbin/ip route delete 0.0.0.0/1 via 10.8.8.1 dev tun0
/sbin/ip route delete 128.0.0.0/1 via 10.8.8.1 dev tun0

通過 VPN 路由來自 192.168.0.0/24 的所有流量
/sbin/ip route add default via 10.8.8.1 dev tun0 table 200
/sbin/ip rule add from 192.168.0.0/24 table 200

VPN 轉發 (NAT)
/sbin/iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
/sbin/iptables -A FORWARD -i tun0 -o eth1 -m state –state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A 轉發 -i eth1 -o tun0 -j 接受

問題是,當 VPN 隧道建立時,linux 機器不回复 eth1 介面上的 ARP 請求。

如果我在客戶端 PC 上手動配置 ARP 記憶體,那麼設置工作正常。

有任何想法嗎?

編輯: ARP 僅在路由器向客戶端 PC 發出請求時起作用,但反之則不起作用(在這種情況下,路由器收到 ARP 但不回复)

編輯 2: eth0 和 eth1 共享相同的 MAC 地址

解決方案是替換
/sbin/ip rule add from 192.168.0.0/24 table 200

ip rule add iif eth1 table 200

We don’t want only packet from 192.168.0.0/24 to use routing table 200 but each packet from interface eth1.

引用自:https://serverfault.com/questions/935760