![将 eth0 路由到 tun0 (OpenVPN) 并使 wlan0 不受影响](https://linux22.com/image/170445/%E5%B0%86%20eth0%20%E8%B7%AF%E7%94%B1%E5%88%B0%20tun0%20(OpenVPN)%20%E5%B9%B6%E4%BD%BF%20wlan0%20%E4%B8%8D%E5%8F%97%E5%BD%B1%E5%93%8D.png)
我目前有一个 Raspberry Pi Model B+ v1.2(我计划在解决这些问题后获得 Raspberry Pi 4)。我的网络接口 eth0 通过以太网电缆连接到我的路由器,并且我的 wlan0 通过 Wi-Fi 连接到同一路由器。
我计划将这台 Raspberry Pi 用作种子箱,我希望来自 qBittorrent-nox 的所有流量都通过 eth0 接口,该接口将通过我的 OpenVPN,然后我希望让 wlan0 接口不受 VPN 的影响,这样我就能够从我的公共无 IP 地址使用我的开放端口访问 qBittorrent-nox WebUI。(注意:我的 VPN 不允许端口转发)
我看过很多关于 IP 表路由的帖子,但我不太明白如何实现我想要的。
我运行了“ip route show”命令,结果如下:
0.0.0.0/1 via 10.28.10.5 dev tun0
default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.26 metric 202
default via 192.168.1.1 dev wlan0 proto dhcp src 192.168.1.27 metric 303
10.28.10.1 via 10.28.10.5 dev tun0
10.28.10.5 dev tun0 proto kernel scope link src 10.28.10.6
103.231.91.74 via 192.168.1.1 dev eth0
128.0.0.0/1 via 10.28.10.5 dev tun0
192.168.1.0/24 dev eth0 proto dhcp scope link src 192.168.1.26 metric 202
192.168.1.0/24 dev wlan0 proto dhcp scope link src 192.168.1.27 metric 303
以下是我的“ifconfig”命令结果:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.26 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::f96:bfff:cd6d:d1d6 prefixlen 64 scopeid 0x20<link>
inet6 2404:4408:23f4:5500:c127:7182:abfb:5e26 prefixlen 64 scopeid 0x0<global>
ether b8:27:eb:61:19:70 txqueuelen 1000 (Ethernet)
RX packets 911757 bytes 1126311222 (1.0 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 449193 bytes 64017695 (61.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 123 bytes 12608 (12.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 123 bytes 12608 (12.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
inet 10.28.10.6 netmask 255.255.255.255 destination 10.28.10.5
inet6 fe80::c6ba:27ae:2226:dfa2 prefixlen 64 scopeid 0x20<link>
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 100 (UNSPEC)
RX packets 467058 bytes 552751583 (527.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 253762 bytes 16534884 (15.7 MiB)
TX errors 0 dropped 102112 overruns 0 carrier 0 collisions 0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.27 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::65b8:5d35:c9e6:b85f prefixlen 64 scopeid 0x20<link>
inet6 2404:4408:23f4:5500:cfd3:d82:7d0b:93ce prefixlen 64 scopeid 0x0<global>
ether 00:c0:ca:84:7d:51 txqueuelen 1000 (Ethernet)
RX packets 22208 bytes 23412831 (22.3 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 364 bytes 43145 (42.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
任何帮助表示赞赏。提前致谢!
答案1
您希望不同的程序有不同的路径(qBittorrent-box 与其他程序)。
最简单的方法是创建一个网络命名空间(该网站上有很多问题解释了如何做到这一点),eth0
如果您不需要eth0
其他东西,可以移入其中,或者将其连接到主网络通过 veth-pair 访问网络命名空间,然后使用策略路由(google)将从 veth-pair-end 发出的任何内容路由到eth0
.
请不要用于iptables
路由。这是我的一个小烦恼。使用路由表进行路由。这就是他们的目的。