我试图调整一个系统上的网络,以便两个子网可以通过一个设备与每个子网(ping)对话。安装程序如下所示:
(192.168.1.128) (172.16.248.223)
Router <------> PC <---------> Device 1 <--------> Device 2
(172.16.248.248) (10.0.1.1) (10.0.1.2)PC有一个DNS代理,网关172.16.248.254。PC与设备1共享internet,设备1与设备2共享internet,这是通过IP路由实现的,但PC不能平设备2,这也是我的设置所需要的。设备使用USB (cdc_ncm驱动程序)共享他们的互联网。
路线如下:
在PC上:
default via 192.168.1.1 dev eno1 proto static metric 100
10.0.1.0/24 via 172.16.248.248 dev usb0
172.16.248.0/24 dev usb0 proto kernel scope link src 172.16.248.248
192.168.1.0/24 dev eno1 proto kernel scope link src 192.168.1.128 metric 100
192.168.1.0/24 dev eno1 proto kernel scope link src 192.168.1.128 metric 202在设备1上:
default via 172.16.248.254 dev eth1
10.0.1.0/24 dev usb1 proto kernel scope link src 10.0.1.1
172.16.248.0/24 dev eth1 proto kernel scope link src 172.16.248.223在设备2上:
default via 10.0.1.1 dev usb0
10.0.1.0/24 dev usb0 proto kernel scope link src 10.0.1.2
172.16.248.0/24 via 10.0.1.1 dev usb0此外,设备1上的usb0接口有一个macvlan接口eth1。当互联网连接在这个设置中工作时,PC不能平设备2。然而,PC可以平设备1和设备1可以平设备2。
为了尝试一些东西,我在所有的设备上都使用了iptable。在我实现了这样的连接之后,我会考虑它。
它是否有可能使它使PC可以平设备2?我在这里错过了什么?
编辑:所有设备已经启用IP路由。请允许我重新表述这一问题,以避免混淆。我想用它们的物理接口(USB)连接三个设备。我希望所有的互联网连接共享从个人电脑,我希望所有的设备都能够平对方。我想要以下几点:

设备2有不同的子网并不重要,但没有它,互联网连接就无法工作。我需要一些建议来实现这一点。我没有路由器,除了一个共享互联网到个人电脑。
发布于 2019-05-17 07:42:37
小心使用“共享他们的互联网”这个词,通常这涉及到某种NAT (网络地址翻译)。我假设你的设置不是这样的。
您提到了一个带有172.16.248.254的DNS代理,但不清楚它是如何连接到网络的。我将假设这样的网络图(如果我的解释是错误的,请更正):
192.168.1.0/24 172.16.248.0/24 10.0.1.0/24
| | |
Router | | |
192.168.1.1 --| 172.16.248.248 --|-- 172.16.248.223 |
| PC | Device 1 |
|-- 192.168.1.128 | 10.0.1.1 --|
| | |-- 10.0.1.2
| 172.16.248.254 --| | Device 2
| DNS proxy | |
| | |(围绕子网组织图表是一种很好的做法)。特别是,DNS代理没有连接到路由器。
这意味着您需要下列路线:
在PC上:
default via 192.168.1.1 dev eno1
10.0.1.0/24 via 172.16.248.233 dev usb0 # NOT .248 !!
172.16.248.0/24 dev usb0
192.168.1.0/24 dev eno1在设备1上:
default via 172.16.248.248 dev eth1 # NOT .254 !!
10.0.1.0/24 dev usb1
172.16.248.0/24 dev eth1在设备2上:
default via 10.0.1.1 dev usb0
10.0.1.0/24 dev usb0您还需要在PC上和设备1上启用IP转发(通过echo 1 > /proc/sys/net/ipv4/ip_forward作为根,可以与sysctl等固定的,google)。
现在,我将忽略macvlan的问题,第一步是使路由正常工作。
使用此设置,您应该能够在PC、设备1和设备2之间进行任意方向的切换。试试这个。要调试,请在所有感兴趣的接口上运行tcpdump -ni usb0等新的xterm (因此在所有三个设备上都有四个接口)。然后,您可以看到您的数据包消失在哪里,如果某些东西不工作。ip route get 1.2.3.4还可以帮助查找内核认为1.2.3.4的路由应该去哪里。
https://unix.stackexchange.com/questions/519419
复制相似问题