如何将流量从以太网路由到 tun 设备(创建 VPN 以太网端口)

如何将流量从以太网路由到 tun 设备(创建 VPN 以太网端口)

我有一个网络V想法ecorder通过以太网直接连接到树莓派,树莓派通过wlan0.我想通过树莓派上的 VPN 连接路由来自 NVR 的所有流量。

以下是我启动 VPN 的方法:

openvpn --config /home/pi/my_conf.conf --pull-filter ignore redirect-gateway --route-noexec 

我忽略了服务器通过这些命令推送的路由我在开放VPN教程上找到了。经检查,我发现tun0在连接到 VPN 后创建了一个设备。

因此,为了将流量从 NVR 路由到 VPN,我需要为eth0树莓派的接口提供 NVR 使用范围内的静态 IP。我是通过以下方式做到的/etc/dhcpcd.conf

interface eth0

static ip_address=192.168.1.1/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

我的树莓派wlan0有网关192.168.0.1,所以不存在冲突。现在我已经有了一个位于 NVR 范围内的 eth 接口的 IP 地址,并且我已经连接到了 VPN 服务器,我需要做的就是为 NVR 所在的 IP 地址tun0添加一条路由tun0要去访问。由于我想访问 192.168.0/24 范围内的一些 IP 摄像机,因此我对路由表进行了如下操作:

pi@raspberrypi:~ $ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    202    0        0 eth0
0.0.0.0         192.168.0.1     0.0.0.0         UG    304    0        0 wlan0
192.168.0.0     0.0.0.0         255.255.255.0   U     304    0        0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 tun0
192.168.1.0     0.0.0.0         255.255.255.0   U     202    0        0 eth0
192.168.255.5   0.0.0.0         255.255.255.255 UH    0      0        0 tun0

您可以看到该范围内的所有内容192.168.1.0/24都会通过,tun0因为它具有 metric 0

尽管我也在dnsmasq上运行eth0,但我也在 NVR 上使用静态 IP 地址,即192.168.1.9

显然我无法访问 NVR 中的任何摄像机。我尝试将 NVR 上的连接添加到192.168.1.189摄像机。我尝试运行tcpdumpeth0这主要是我看到的:

17:10:46.673062 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.1.189 tell 192.168.1.9, length 46

NVR ( 192.168.1.9) 正在尝试查找是谁192.168.1.189,但没有响应。我猜,什么都没有被路由。我还尝试 ping192.168.1.189树莓派,看看它是否有效。我第一次尝试时就成功了。几分钟后,我无法再 ping 通它,我不知道为什么。但Ping192.168.1.1总是有效。

更新:

我有点明白我遇到的问题了。由于 NVR 位于192.168.1.0/24子网上并尝试访问同一子网上的摄像机,因此其 IP 数据包不会发送到网关(树莓派)。相反,它会尝试通过发送 ARP 请求来查找192.168.1.189(摄像机)在哪里,就像我在 tcpdump 中看到的那样。

为了解决这个问题,我将NVR的子网更改为192.168.2.0/24并将地址赋予树莓派的接口192.168.2.1eth0我现在可以看到 NVR 发送到摄像机和一些亚马逊服务器等的每个数据包。然而,没有任何回应。 NVR 只发送数据包,但不接收任何数据包。我已经检查过,到达的路线tun0没有问题,因此数据包应该通过它。但是数据包没有返回。

更新:

我没有手动添加路由,而是将以下内容添加到客户端中打开的 VPN 配置文件中:

route 192.168.1.0 255.255.255.0
route-metric 0
route-nopull

就在下面client。连接 VPN 后,我现在可以在路由表中看到此路由。我也可以从树莓派 ping 到它,它可以工作。但是看起来NVR仍然只发送数据包,并没有收到任何信息

重要的:如果我运行,tcpdump -vvv -i eth0我会看到很多发往192.168.1.189我的相机的数据包。他们应该去,tun0因为有一条带有度量的路线0可以让他们通过它。如果我跑步,tcpdump -vvv -i tun0即使我跑了几分钟,我也什么也看不到。所以事情不会通过那里进行。但是,如果我ping 192.168.1.189在树莓派内部运行(通过 ssh),我可以在 tcpdump 中看到所有 ping 数据包tun0,这证实了该路由有效。但它不适用于来自以太网的数据包。

相关内容