我在 Tinker Board(使用 Armbian)上设置了 macvlan(模式桥接)。设备(eth0.1)已设置,以便可以绑定到 qbittorrent
我的路由器将所有传入流量转发到端口 19489 到此 macvlan 设备,该设备已分配 IP 192.168.99.64
除非我使用以下方式监控该设备,否则永远不会建立连接:
tcptrack -i eth0.1
当设备受到监控时,连接已建立,qbittorrent 运行正常。但是当我停止监控时,现有连接会继续,直到关闭,但没有建立新连接。
这是我的路由表:
default via 192.168.99.1 dev eth0 proto dhcp metric 100
default via 192.168.99.1 dev wlp1s0 proto dhcp metric 600
default via 192.168.99.1 dev eth0.1 proto dhcp metric 1001
169.254.0.0/16 dev wlp1s0 scope link metric 1000
192.168.99.0/24 dev eth0 proto kernel scope link src 192.168.99.61 metric 100
192.168.99.0/24 dev wlp1s0 proto kernel scope link src 192.168.99.62 metric 600
192.168.99.0/24 dev eth0.1 proto kernel scope link src 192.168.99.64 metric 1001
我希望以某种方式实现此功能,而无需监控设备。有什么想法吗?
(与此同时,我已经设置了一个带有 tcptrack 的 bash 脚本,在 qbittotrrent 服务启动后启动。一切都运行正常,但不知何故,这种解决方法似乎有点愚蠢)
答案1
谢谢@AB
下列的本文我设法让 qbittorrent 在名为“air”的命名空间中工作并接受传入连接。Yun Wu 的回答提到本文,它很好地解释了不同类型的 macvlan(和其他)网络设置。读完这篇文章后,我得出结论,macvlan(即使在命名空间中)也很难发挥作用,因此遵循了原始问题的逻辑和 dirkt 的第二个答案,没有使用 macvlan。
我确实需要进行一项更改才能使网络正常运行:在从“air”命名空间设备设置默认路由时,我没有指定网桥的 IP,而是指定了与物理设备使用的相同网关。所以我的最终工作设置如下:
ip netns add air
ip netns exec air ip link set lo up
ip link add veth1 type veth peer name br-veth1
ip link set veth1 netns air
ip netns exec air ip addr add 192.168.99.64/24 dev veth1
ip link add name br0 type bridge
ip link set br0 up
ip link set br-veth1 up
ip netns exec air ip link set veth1 up
ip link set br-veth1 master br0
ip link set eth0 master br0
ip addr add 192.168.99.63/24 brd + dev br0
ip netns exec air ip route add default via 192.168.99.1
有了“air”命名空间中的这个 192.168.99.64/24,就可以从本地网络 ping 通,我的主路由器可以很好地将指向我的 qbittorrent 端口的外部传入流量转发到此 IP,并且可以毫无问题地建立连接