我有以下设置:
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)
Raspberry Pi 只有一个以太网端口,所以我必须进行设置同一端口上的两个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 到 Raspberry Pi 的连接功能齐全,Raspberry Pi 和 PLC 之间的连接也是功能齐全的。
我做了什么
在 Windows PC 上我运行了命令route add 192.168.0.0 mask 255.255.255.0 10.0.0.3
在 Raspberry PI 上我编辑/etc/sysctl.conf
并制作了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 接口
答案1
问题出在VPN上。我正在使用 NeoRouter VPN,但发现它们不支持 IP 转发。同时切换到 ZeroTier VPN,设置非常简单,第一次尝试一切都按预期运行。