Iptables

VPN介面和別名介面之間的路由

  • February 23, 2022

我有以下設置:

    Windows PC     <--->       Raspberry Pi    <--->     PLC
(DHCP - Ethernet)             (DHCP - eth0)
                        (192.168.0.10 - eth0:0)     (192.168.0.2)
(10.0.0.2 - VPN NIC)       (10.0.0.3 - VPN NIC)

樹莓派只有一個乙太網埠,所以我必須在同一個埠上設置兩個 IP:(eth0 - DHCP用於訪問網際網路),eth0:0 - 192.168.0.10(用於訪問 PLC)。別名 eth0:0 是通過/etc/network/interfaces.d/eth0_0.conf使用以下內容創建文件來實現的:

auto eth0:0
iface eth0:0 inet static
address 192.168.0.10
netmask 255.255.255.0

在 PLC 上,IP 定義為192.168.0.2,網關定義為192.168.0.10

我希望能夠直接從 Windows PC 訪問 PLC,僅使用 Raspberry Pi 作為“橋樑”。從 Windows PC 到樹莓派的連接是全功能的,樹莓派和 PLC 之間的連接也是如此。

我做了什麼

在 Windows PC 上,我執行了命令route add 192.168.0.0 mask 255.255.255.0 10.0.0.3

在我編輯/etc/sysctl.conf並製作的 Raspberry PI 上net.ipv4.ip_forward=1。我跑了echo 1 > /proc/sys/net/ipv4/ip_forward

我沒有工作,所以我也跑了:

iptables -A FORWARD -i eth0:0 -o nrtap -s 192.168.0.0/24 -d 10.0.0.0/24 -j ACCEPT
iptables -A FORWARD -i nrtap -o eth0:0 -s 10.0.0.0/24 -d 192.168.0.0/24 -j ACCEPT
sysctl -p

我也嘗試了上述的一些變體,但沒有成功。

路由表:

# route -nNv
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.3.254   0.0.0.0         UG    202    0        0 eth0
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 nrtap
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.3.0     0.0.0.0         255.255.255.0   U     202    0        0 eth0

*nrtap 是 VPN 介面

問題是VPN。我使用的是 NeoRouter VPN,但發現它們不支持 IP 轉發。同時切換到 ZeroTier VPN,設置非常簡單,並且在第一次嘗試時一切都按預期工作。

引用自:https://unix.stackexchange.com/questions/691203