首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能通过另一个设备与不同的子网对话?

是否有可能通过另一个设备与不同的子网对话?
EN

Unix & Linux用户
提问于 2019-05-17 06:08:12
回答 1查看 345关注 0票数 1

我试图调整一个系统上的网络,以便两个子网可以通过一个设备与每个子网(ping)对话。安装程序如下所示:

代码语言:javascript
复制
          (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上:

代码语言:javascript
复制
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上:

代码语言:javascript
复制
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上:

代码语言:javascript
复制
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有不同的子网并不重要,但没有它,互联网连接就无法工作。我需要一些建议来实现这一点。我没有路由器,除了一个共享互联网到个人电脑。

EN

回答 1

Unix & Linux用户

发布于 2019-05-17 07:42:37

小心使用“共享他们的互联网”这个词,通常这涉及到某种NAT (网络地址翻译)。我假设你的设置不是这样的。

您提到了一个带有172.16.248.254的DNS代理,但不清楚它是如何连接到网络的。我将假设这样的网络图(如果我的解释是错误的,请更正):

代码语言:javascript
复制
         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上:

代码语言:javascript
复制
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上:

代码语言:javascript
复制
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上:

代码语言:javascript
复制
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的路由应该去哪里。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/519419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档