Iptables
VPN介面和別名介面之間的路由
我有以下設置:
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,設置非常簡單,並且在第一次嘗試時一切都按預期工作。