VPN 连接中缺少静态路由(VPN 服务器 + RPi + 子网)

VPN 连接中缺少静态路由(VPN 服务器 + RPi + 子网)

我有两个通过 VPN 连接的网络。我家里的 NAS 上运行着一个 OpenVPN 服务器。在我的网络之外,我有一个 Raspberry Pi (RPi),它通过 VPN 连接到我的本地网络。RPi 使用 WiFi (wlan1) 连接到互联网。一切正常。

现在我想使用以太网 (eth0) 将摄像头连接到 RPi,并将流直接存储在 NAS 上。我在 Rpi 上为 eth0 创建了一个新的网络配置文件,并在那里设置了“共享到其他计算机”。RPi 和摄像头之间的网络是 10.42.0.0/24。摄像头可以从 RPi 访问,一切正常。当我尝试从 NAS(VPN 服务器正在运行且录制将在其中运行)ping (10.42.0.231) 摄像头时,摄像头不可用。

网络架构图

NAS 上的接口和路由表:

$ip a
5: ovs_eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc htb state UP group default qlen 1
    link/ether 00:11:32:aa:84:68 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.142/24 brd 192.168.1.255 scope global ovs_eth0
       valid_lft forever preferred_lft forever
6: tun1000: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1400 qdisc pfifo_fast state UNKNOWN group default qlen 500
    link/none 
    inet 169.254.124.128/21 scope global tun1000
       valid_lft forever preferred_lft forever
7: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 500
    link/none 
    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
       valid_lft forever preferred_lft forever

$route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         router.lan      0.0.0.0         UG    0      0        0 ovs_eth0
10.8.0.0        10.8.0.2        255.255.255.0   UG    0      0        0 tun0
10.8.0.2        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
169.254.120.0   0.0.0.0         255.255.248.0   U     0      0        0 tun1000
169.254.120.0   169.254.120.1   255.255.248.0   UG    0      0        0 tun1000
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 ovs_eth0

$ip route
default via 192.168.1.1 dev ovs_eth0  src 192.168.1.142 
10.8.0.0/24 via 10.8.0.2 dev tun0 
10.8.0.2 dev tun0  proto kernel  scope link  src 10.8.0.1 
169.254.120.0/21 dev tun1000  proto kernel  scope link  src 169.254.124.128 
169.254.120.0/21 via 169.254.120.1 dev tun1000 
172.17.0.0/16 dev docker0  proto kernel  scope link  src 172.17.0.1 
192.168.1.0/24 dev ovs_eth0  proto kernel  scope link  src 192.168.1.142

RPi 上的接口和路由表:

$ip a
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether b8:27:eb:9c:d9:0c brd ff:ff:ff:ff:ff:ff
    inet 10.42.0.1/24 brd 10.42.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
4: wlan1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 98:de:d0:05:8d:4a brd ff:ff:ff:ff:ff:ff
    inet 192.168.220.34/24 brd 192.168.220.255 scope global dynamic noprefixroute wlan1
       valid_lft 3448sec preferred_lft 3448sec
6: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 500
    link/none 
    inet 10.8.0.10 peer 10.8.0.9/32 scope global tun0
       valid_lft forever preferred_lft forever

$route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.220.15  0.0.0.0         UG    600    0        0 wlan1
10.8.0.0        10.8.0.9        255.255.255.0   UG    0      0        0 tun0
10.8.0.1        10.8.0.9        255.255.255.255 UGH   0      0        0 tun0
10.8.0.9        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
10.42.0.0       0.0.0.0         255.255.255.0   U     100    0        0 eth0
192.168.1.0     10.8.0.9        255.255.255.0   UG    0      0        0 tun0
192.168.220.0   0.0.0.0         255.255.255.0   U     600    0        0 wlan1

$ip route
default via 192.168.220.15 dev wlan1 proto dhcp src 192.168.220.34 metric 600 
10.8.0.0/24 via 10.8.0.9 dev tun0 
10.8.0.1 via 10.8.0.9 dev tun0 
10.8.0.9 dev tun0 proto kernel scope link src 10.8.0.10 
10.42.0.0/24 dev eth0 proto kernel scope link src 10.42.0.1 metric 100 
192.168.1.0/24 via 10.8.0.9 dev tun0 
192.168.220.0/24 dev wlan1 proto kernel scope link src 192.168.220.34 metric 600

在我看来,只需向 NAS 添加静态路由就足够了,但这对我没有帮助,我的输入中是否存在错误,还是我需要配置其他内容?感谢您的帮助。

答案1

你需要至少以下任一项:

  • RPi 上的 DNAT (又名端口转发)
  • irouteOpenVPN 服务器上 RPi 的客户端配置目录 (ccd) 文件中

如果您选择 DNAT,则您的 NAS 上不需要任何额外的路由,因为必要的路由(10.8.0.0/24如您所见,的路由)已经在服务器启动时由 OpenVPN 添加了。

要设置 DNAT,您可能应该运行以下命令:

iptables -t nat -A PREROUTING -i tun0 -p tcp_or_udp --dport some_port -j DNAT --to-destination 10.42.0.231

10.8.0.10如果您选择 DNAT,您将使用 RPi 的 VPN IP()访问相机。


如果选择iroute,则同时需要在 NAS 上添加相应的路由(相同的目的地和网络掩码/前缀长度)。例如:

ip route add 10.42.0.231 dev tun0

路由用于将相应的流量路由到隧道,而 是iroute为了让 OpenVPN 服务器知道流量应该发往哪个客户端。默认情况下(即没有任何iroute),它只知道如果目的地是 VPN 客户端的地址,流量应该发往哪里(这就是为什么 DNAT 可以作为替代方案)。

iroute有关ccd(文件)的详细信息,请参阅 OpenVPN 手册。


对于这两种选择,您都需要确保相机的默认网关(更准确地说,用于目的地为 的流量的网关10.8.0.1)是10.42.0.1。如果您无法在相机上使用此类网关进行此类路由,则应在 RPi 上设置源 NAT。例如:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

此外,这两种选择都需要在 RPi 上启用(sysctl)并允许(防火墙)IP 转发。

相关内容