情况是这样的:
结果是,只能做到主网 OP 的 ZT 以二层桥接内外网实现直接交换数据包,而子 OP 的 ZT 本体接入没问题但子网设备最多实现 NAT 转换后接入而不能同样以二层桥接的方式互通到主网。
企图实现的目标很简单,通过 OP 构建的两个网,在网段等基本配置上实现一致的基础上,通过 ZT 做到桥接,把两个网并成一个大网。
搜了一搜,中文世界基本没有答案,英文世界里犄角旮旯里提到了关闭主网 DHCP ( ZT 配置流量控制丢弃 UDP67UDP68 )流量,但好像并没有生效,然后还有官网说明里的 FAQ 第一条 https://docs.zerotier.com/bridging/ ,但也没啥效果。也有说做不到的 https://discuss.zerotier.com/t/joining-two-zerotier-networks/14692 。
所以能么?怎么搞?哪里需要什么小技巧?
来自官网的图片。根据官网和OpenWRT的相关自动化配置,在左侧主网实现桥接没有问题——即便zerotier本身设计的目标是P2P。但是ZT仍然提供了L2 桥接能力,那么能否在图片上替代右侧各个节点同样桥接入一个LAN呢?这是本人尝试的事情,并以失败告终——个人的理解,可能收各种广播包的限制,一个zt只能接入一个L2桥接的网络。
另外每个node通过NAT带一堆子网甚至子子网都是不复杂的配置——设置好zt网内路由即可,但是这除了需要ZT主机将数据包转换成ZT协议到公网上传播以外,还需要ZT主机做NAT转换,将数据包转发入子网。而桥接的目的就是要缩减第二步,不做NAT,本地子网的设备A找远端子网的设备B,只需要在二层直接交换,而不再去发送到三层找各自网关做地址转换。
1
ranaanna 309 天前
一句话,不能。家里主网已经和虚拟网实现了 layer-2 bridging 并通过一个路由连到 internet ,这就是第一个链接告诉你做的事情,使得不能运行 zerotier 的设备也能接入,相当于可以走一座桥,第二个链接则告诉你的是不能再做一个 layer-2 bridge 把两个物理网连起来,相当于不能走两个桥。另一边办公室的网断也应该是 192.168.100.0/24 ,但是,你会发现,达不到你想要实现的目标
|
2
humbass 309 天前
当然是可以连的,只不过速度没那么快而已。
zerotier 后台网段那边要注意设置下。 |
3
cpstar OP ![]( https://docs.zerotier.com/assets/images/integrating-bridging-e6f03a9010ccb420128927ed8cf1b3e7.png)
官方也给了这么一个图片,原则上,如果左边能够实现子网的目标,右边也可以出现同样的网络结构,甚至再出现第三个第四个,变相成了某种网桥设备,将若干个物理子网在配置上达成一致形成一个网络。至于 @ranaanna 2# 提到的 WAN 出口问题,窃以为两个路由设备的默认路由都会指向 WAN 口,而只处理虚拟达成的大内网规则,并不会出现多出口的情况。第二个链接也确实提到了 zt 的 P2P 初心,可是既然能够实现了左侧的桥接,在右边再实现一个桥接,理论上我觉得还是能力所及的。 @humbass 3# 速度问题咱暂且不讨论,毕竟实现子网并不是以速度为目标而是一方面减少 NAT (可以左右两个 NAT 完成 ZT 的 P2P 初心)另一方面在子网的设备配置上减少穿墙打洞减少麻烦。至于配置,具体怎么搞呢?我只设置了 ZT 虚网内的路由策略,关闭了 ZT 的 DHCP ,子设备一律指定 IP ,涉及两个 OP 的成员都设置了允许桥接,甚至阻断 DHCP 流量,还需要搞什么呢? 开了两个 hyperV 和一堆配套的做了试验,目前尚未达成。 |
4
Immunize 309 天前
两个 LAN 为什么要做桥接,用路由呀。可以参考我的 Blog https://www.iloft.xyz/archives/openwrt-zerotier.html
|
5
yaott2020 309 天前 via Android
三层不行吗
|
8
joyhub2140 309 天前
连接两个 lan ,还得用 VPN ,而且还是 ipsec 那种。
|
9
wwhc 309 天前
可用 ssh_vpn 实现:help.ubuntu.com/community/SSH_VPN
|
10
PbCopy111 309 天前
我是这样的,openwrt 在局域网里,为了外网访问整个局域网,在 openwrt 里面要设置:
防火墙--自定义规则 iptables -I FORWARD -i ztly524plm -j ACCEPT iptables -I FORWARD -o ztly524plm -j ACCEPT iptables -t nat -I POSTROUTING -o ztly524plm -j MASQUERADE 其中 ztly524plm 是在 openwrt 的 zerotier 的接口信息里得到的名称 然后再去 zerotier 里面设置 bridge 和转发整个局域网出来。 最后我可以在外网访问整个局域网的机器了。 |
11
flynaj 309 天前 via Android
|
13
szdosar 309 天前 via Android
在 zerotier 网页后台设置路由就可以了。没必要搞这么麻烦。
|
14
cpstar OP @PbCopy111 10# 这个方法只能桥接出一个网络,参见 3#的那张图
@flynaj 11# @humbass 12# 这种实现起来没有难度,以 11#的图举例子,所有 16.0/21 的设备都以 100.16 呈现给对方所有网络,在发送 IP 包的时候,会涉及到 IP 改写这个三层协议的内容。而期望的目标是二层桥接,即 A 设备找另外一个网络的 B 设备,通过 ARP 获得到 MAC 之后,直接“交换机”进行数据包交换从 A 到 B 。而三层 IP 改写也好 NAT 也罢,都需要经过中间网关 C 和 D 进行 IP 改写再送出。还是按照 11# 的图,原则上可以说这个 ZT 网络只有四台设备,然后这四台后边带着四个 LAN 。 |
16
yaott2020 309 天前 via Android
|
17
cpstar OP @yaott2020 15# 16#
那个文档已经实现了 3#图片的左侧结构,轻松实现,本来这也不是问题。问题是无法在右侧实现同样的左侧结构:在右侧设立了一个网络之后,二层不通,只能使用 NAT 。 而所谓的路由转发原则成立,但实践上(应该是因为使用了 192 、172 、10 段)目的地址看到的都是被网关设备修改了源地址的 IP 包,我认为这就是 NAT 。 |
19
liyouran 309 天前
二层试试利用 zerotier 的虚拟地址搭建 pptp ,l2tp 或者 ipsec 之类的
|
20
sadan9 308 天前
@cpstar 桥接是 2 层,NAT 是 3 层。完全是 2 个问题。除非你的业务场景涉及同一个段内的广播,不然直接走 3 层路由。
4 楼是正确解法,如果不想在 zt 的 web 上设置静态路由,甚至可以考虑使用 RIP 或者 OSPF 。 |
21
ExplodingFKL 307 天前
vxlan + bridge ,请
|
22
matate 307 天前
问题描述看起来很费劲。
如果只是连通两个 lan ,zerotier 作为两个 lan 的连接器是完全可行的,只需配好路由就行。 比如说子网 m 有节点 A 和 B, A 的 ip 是 192.168.100.1, B 是 192.168.100.2 ;子网 n 有节点 C 和 D,ip 分别是 192.168.101.1 和 192.168.102.2 ,B 和 C 上安装了 zerotier 。 现在需要 D 访问 A ,那么 D 上要配置这样的路由 192.168.100.0/24 via 192.168.101.1 。然后依次在节点上配置路由即可。 |
23
cpstar OP |
25
cpstar OP @Immunize 14# 额。。。你说的那个,我理解就是 NAT 而不是路由,路由转发后的 IP 包是源地址 IP ,NAT 之后 IP 包的源地址是网关的地址——也就是 172.16.x.x 给 172.17.y.y 发数据包,17.y.y 的设备看到的是 10.244.17.1 发给他的 IP 包——而如果转发的话,IP 包源地址是 172.16.x.x 。
|
26
Immunize 307 天前
@cpstar #25 10.244.17.1 和 10.244.16.1 都是静态下一跳路由呀,不是 NAT 。
你可以看我的抓包,4g 网络下的 iphone ping 内网的笔记本,笔记本看到的 ip 是 zerotier 网络分配的 ip 而非你所理解的 10.244.16.1 下一跳 ip 。 |
27
cpstar OP @Immunize 26# 我知道了,你这个没有用 luci_app_zerotier 的相关东西,那个里边有一个 NAT 选项,选定后自带脚本会加上一条 MASQUERADE 记录,也就是一条 NAT 规则,于是都按照 NAT 往外走了。而且官网文档上也有三条 iptables 的规则其中最后一条就这个 MASQUERADE 。
|
29
bjfane 304 天前
Zerotier 不是很清楚,没用过,有点不太明白并成一个大网什么意思,lan to lan 的任意节点互通,不知道能不能满足楼主的需求,我写过一个 wg 的 lan to lan 的摘要(可以看看是不是差什么了),https://ti.bi/posts/cloud_wireguard_lan_to_lan.html
程序员不是十分了解网络,wg 这个软件目前倒是算是比较熟悉了,大概用过 5 个不完全相同的场景 然后对网络的感知就是两个关键的东西,一个 nat 或者叫 masq ( 192.168.100.0/24 ,192.168.101.0/24 这两个网段互通是不是一定有 nat ?),一个路由表。 |
31
cpstar OP @bjfane 29#
你这个 lan to lan ,其实还是 peer to peer ,因为通过 NAT ,每个 peer 隐藏了身后的 LAN 。其实我的原始效果是想要两个 LAN 在二层形成一个 LAN ,即统一的地址和掩码,以及广播地址,这样深处两网的两台机器的通讯,是通过基本的网络交换完成的——在广播地址上呼喊 ARP ,然后数据包直接到达连接端口,这是硬件交换机的模型。但是 zerotier 在这里是一个软件产品,桥接了两个网,某种意义上并不存在“交换机端口”,所以我觉得不能把远端的 LAN 桥接入本地的 LAN ,原因也只在于此。 然后通过 wireguard 实现二层桥接,补充里说了,有人通过 wg 的 p2p 构建链路之后,创建 gre 隧道二层桥接网络。 再然后,如果不是一个 LAN 地址,不使用 NAT ,直接三层路由转发,那就是 4#和 27#说的事情了。现在我对于远端的 LAN 就是这么做的。 |
33
sapphire 302 天前
对 Zerotier 不太熟悉,我理解你需要的是一个虚拟网桥,假设家庭主网络,就是拨号网络设为 VLAN10 ,桥接进 Office 的是 VLAN20 。然后找一台 Linux 设备,安装 Zerotier ,虚拟网卡是 zt0 ,linux 的 eth0 在 VLAN10 ,然后做一个 eth1 ,连接到 VLAN20 ,然后创建 bridge ,连接 zt0 和 eth1 ,之后 VLAN20 就是和 Office 桥接的 Lan
|
34
sapphire 302 天前
用 bridge + ethernet + Zerotier 找到这篇 https://zerotier.atlassian.net/wiki/spaces/SD/pages/7471125/Layer+2+Bridging+of+Ethernet+and+ZeroTier+Networks+on+Linux
你可以看看正文和引用 |
35
ivan_wl 302 天前
用 softether 的 L2 bridge 试试呢
|
36
matate 302 天前
@cpstar 哦,你是想搞 l2 across l3 ,好奇为什么会有这种需求,这种技术是古老且现成的,有一个思科的文档可参考: https://www.cisco.com/c/en/us/support/docs/ip/layer-two-tunnel-protocol-l2tp/116266-configure-l2-00.html
@lazyyz 如果 B 是 linux ,看一下 ip_forward 有没有开启 |
37
cpstar OP @matate 36# 最初的原动力就是 zerotier 说可以 L2 Bridge ,那问题就来了,能不能桥接两个 LAN (甚至多个),实践结果就是不能,只能在一个 LAN 中完成桥接,不能桥接到第二个 LAN 中——附言一的那张图。如果非要做,可能就是需要 L2TP 或者 wireguard 的 GRE 隧道等技术完成。
|
38
matate 302 天前
@cpstar zerotier 已经很好地完成他的 l3 的功能,所以任何一个 l3 vpn ,都可以宣称他支持 l2 bridge ,只需通过 l2tp 、GRE 等 l2 across l3 技术。
你描述的桥接两个 LAN ,指的是存在两个子 domain ,通过一个 bridge ,将这两个 domain 合并为一个大的,工作在 l2 的 domain ?这个是可以做到的。 但这个图中表示的是 l3 的 bridge 。因为 l2 只是数据链路层,没有 ip ,没有网关,也没有 nat 。 |
39
sapphire 302 天前
@cpstar 晚上注册了 Zerotier ,做了测试。用两台 ubuntu ,eth0 是主网络,eth1 连接主网络或第二网络/VLAN 。br0 桥接 eth1 和 zth ,然后双向可通,Home 的内网机器从 Office 拿到 DHCP 。
Zerotier 不分主从,不可能单侧可通,另一侧不通。 |
40
cpstar OP @matate 38# 初衷是这样的,分处两端的设备在 L2 直接通信,且不通过 l2tp 、gre 等方法。但事实上,zerotier 做不到。我观察,ARP 可以在主 LAN 和子 NODE 之间广播,但无法广播到子 NODE 桥接的 LAN 的其他设备,就是 A 询问 B 的 ARP ,C 、D 都能获得( C 、D 是两个节点 zerotier ,且允许桥接)而 B 是收不到数据包的。我猜应该是 zerotier 打开 L2 Bridging 之后,只能接收 ARP 并且给各个 NODE 发送,而不能转发 ARP 广播——这就需要看源码了。这是观察到的 ARP 信息,没有 ARP ,二层通信应该就完全没有了,AB 不通的原因在此。
@sapphire 39# 我觉得你的测试环境可能不清晰,也许通过其他路由策略完成了链路通道。某个角落文章说过桥接的时候要禁止 DHCP 包的广播,否则会让 zerotier 产生更加奇怪的情况。主从的问题,我也非常纳闷,两个同等的 LAN ,ZT 是怎么知道谁主谁从的,第一个接入还是什么,如果结合本贴前半截说的 ARP 问题,可能会有一个解释:不分主从,只能数据包无法通达。 |
41
sapphire 302 天前 via iPhone
@cpstar Zetotier 等同网线,本身是 VL1 ,二层互通没有任何问题。DHCP 能过可通就说明不是通过其他三层通道。我做的最简环境,为了避免干扰 eth1 都放在 VLAN 里。OP 不熟悉,它也是用的 linux 设施,不通只能是配置原因,不是网络架构原理不支持。
|
43
sapphire 302 天前 via iPhone
我的测试环境
c1(dhcp)-sw1-(eth1)s1(eth0)-r1(office)~~~~(home)r2-(eth0)s2(eth1)-sw2-c2 c2 作为 dhcp 客户端,从 c1 拿到 IP ,并且 c2 和 c1 互通 |
44
okletgo 287 天前
@cpstar
首先你的第 2OpenWRT 配置就不对,主网是 192.168.100.0/24 ,子网是 192.168.101.0/24 ,你算算这 2 个网络号都不一样,不在同一网段,自然是不能组成一个大网的,你再查查桥接是什么意思,网桥将网络的同一网段在数据链路层连接起来,只能连接同构网络(同一网段),不能连接异构网络(不同网段)。 192.168.100.0/23 倒是对了,可是你怎么能关掉 DHCP 呢?子网向谁要 IP ? ZT 配置流量控制丢弃 UDP67UDP68 的意思是,防止主网和子网互相向对方的网关请求 DHCP ,导致 2 个 DHCP 服务器分配了同一个 IP 地址给多台终端,进而造成 IP 冲突。 所以正确的做法是,172.25.0.0/16 或者 192.168.0.0/16 ,子网掩码 255.255.0.0 ,例如主网可以是 172.25.1.100~172.25.1.250 ,网关 172.25.1.1 ,子网是 172.25.2.100~172.25.2.250 ,网关 172.25.2.1 ,都开启 DHCP ,但是地址池要像这样正确配置。在 OpenWRT 把 zerotier 开启,zerotier 的管理后台允许该接口桥接,然后给主网 zerotier 设置地址 172.25.1.10 ,子网 zerotier 设置地址 172.25.2.10 ,不要和网关和其他设备重复就行,然后规则丢弃 UDP67UDP68 。不过我自己存在的问题是,不知道怎么丢弃 IPV6 的 DHCP ,也许大家讨论下能得到答案。 |
46
cpstar OP @okletgo 44#
额。。。 - 首先,DHCP 。有文章说,不要通过 ZT 的网络发送 DHCP 的 UDP 包,会导致意想不到的情况; - 其次,网段。100/24+101/24 两个网段是不行,但是 100/23 也好还是 100/24 也好,首先二层一个网,然后无非就是 256 台还是 256+256 台主机数量而已,这也不是关键; - 再次,桥接。桥接操作很简单,ZT 配置上勾上,OP 上绑定端口,主网和次网均此; 然后问题就出现了,主网内不废话,DHCP 也好,ARP 也罢,二层互通,但是次网只有接入的 OP 设备能够找到主网的所有设备(主网也能找到这个 OP ),OP 下边的所有设备只在 OP 内运转,不能找到主网任何一台设备(主网的也找不到子网的设备),拦包观察的是,子网设备找主网的 ARP 广播包不能传到主网里,所以别说 DHCP 了就算手动配置子网的 IP ,也无法获取主网设备的 MAC ,更不要说通信了。 最后按照官方文档的说法,如附言 1 的图,右侧只能各个节点接入,节点下再挂就得是另外一个网段,通过节点[路由|NAT]到主网——那也就是网段不同了。至于原因,我判断,ZT 属于三层(甚至以上)做互通,并不能完成二层的一些协议,所以无法完全做到两个网络的二层桥接,即使用两个 ZT 实现软虚拟的网桥或者交换机设备。 最最后,这个事情,我干脆通过路由解决了。即右侧 NodeA 下挂一个 10.0.1.x 的网络,通过 NodeA 路由到 10.0.0.x 的主网,同时配置主网的路由策略,10.0.1.0/24 via 10.0.0.101 。 |
48
sapphire 284 天前
楼上很多回答对网络原理理解不足,勿在浮沙筑高台。比如说 Zerotier 是三层,Zerotier 是 VL1 好吗,Zerotier 结合自己的网络后,相当于有通明防火墙的网线。
Zerotier 的一对节点通了之后,这两个 tun 接口就相当于一根网线连接起来,有点像运营商给你做了一对专线(,相当于给你扯一根网线,不需要配置 IP ,二层互通就没有任何问题,是否配 IP 都是自己的选择,有点像交换机的端口,可以作为二层口,也可以作为三层口。但是接下来有问题: 1.为何要做二层桥接而不是三层路由? Zerotier 官方文档说了自己是 V1 ,也是为了让链路层广播和多播通过,比如要用 AirPlay 之类,或者其他以来广播的协议,否则可以用三层,而且一般大多数人也是用三层的。如果要当连接链路层也要考虑广播流量通过互联网传输的负担。 2.二层联通后增么处理各自的原生网络? 如果要把 Office 和 Home 两个链路层通过一根线直通了,那 Home 原来的一些基于广播的协议自然要小心考虑,比如 DHCP ,二层联通后,只能在 Home 原生和 Office 原生二选一,要选择两个都用,只能走一些透明网关类的处理,或者用三层网络。如果选择了使用 Office 原生,由 OfficeDHCP 自然也不是问题。Zerotier 自身也在二层做了一个透明防火墙,可以用规则过滤。 明白以上的原理后,配置二层互通自然不是问题。 |
49
sapphire 284 天前
上面的 tun 接口应该是 tap 接口,Zerotier 是把自己当成有透明三层防火墙的交换机,每个客户侧(非移动端)放置一个 tap 端口。
|
50
cpstar OP @sapphire 48#
ZT 做出来几层,你也不能否认他在三层以上做互通,做到了 VL1 那肯定是用软件模拟,毕竟不是网线,不是交换机。如果是 VL1 ,理论上,你说的 DHCP 以及 ARP 我认为都应该没问题。但事实上,什么是事实,事实就是实践,实践告诉我,没搞定,¯\(°_o)/¯,office 端(子端)收不到 DHCP ,ARP 广播也只能在 H 端或 O 端内部运转。我在主题和回复中提及了数次,有文章说需要在 ZT 的流量控制上禁止 UDP67UDP68 也就是 DHCP ,因为会产生不可预测的情况发生。那这些,就与所谓的 VL1 不匹配了,所以才有本主题,失败了。 |
51
cpstar OP 补 50#,如果说另建一个 tun 端口,那是不是就是类似构建 gre 隧道的形式来保证广播双向可达,这个我是没有实践,不知道具体什么情况。
|
52
sapphire 283 天前
@cpstar Zerotier 创建的虚拟口就是 tap ,48#我写错了,tap 本身就是一个链路层的口,当你把它 bridge 到物理端口时,自然实现了二层互通,但是互通后你需要自己解决二层划分和使用的问题,比如 bridge 一个和 Home 原生网络隔离的 VLAN 。Zerotier 当然是基于三层,但是它自身是 VL1 ,那原理上就可以当 VL1 用,要按你的说法,运营商也没法跨区域做光交换专线了,而且有很多虚拟专线,都是 Ethernet over IP 。
我当然是实践后才这么说。没有收不到 DHCP 和 ARP 这些问题,文章说的 DROP 掉 UDP67/68 只是简单的让两个网络各自使用自己的 DHCP ,实际上如果你有用一个的需求,无需过滤这些包。另外可以把文章链接放出来,一起看看。 最后要说的是:只是你失败了!并不是原理不通。讨论修正理解不对的地方,找出自己配置不当,实现就完了。 |
53
sapphire 283 天前
user@misc:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether xx:14:a7:xx:a7:xx brd ff:ff:ff:ff:ff:ff inet 192.168.10.53/24 brd 192.168.10.255 scope global eth0 valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000 link/ether xx:30:xx:xx:32:f0 brd ff:ff:ff:ff:ff:ff 4: zth6123456: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2800 qdisc fq_codel master br0 state UNKNOWN group default qlen 1000 link/ether de:4d:9d:9f:10:7c brd ff:ff:ff:ff:ff:ff 5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether be:c0:ff:fd:6d:72 brd ff:ff:ff:ff:ff:ff user@misc:~$ brctl show br0 bridge name bridge id STP enabled interfaces br0 8000.bec0fffd6d72 no eth1 zth6123456 user@misc:~$ sudo tcpdump -i br0 -nn -l arp tcpdump: verbose output suppressed, use -v[v]... for full protocol decode listening on br0, link-type EN10MB (Ethernet), snapshot length 262144 bytes 09:18:41.845729 ARP, Request who-has 192.168.1.1 (b6:ff:16:xx:xx:80) tell 192.168.1.149, length 46 09:18:41.853347 ARP, Reply 192.168.1.1 is-at b6:ff:16:xx:xx:80, length 28 09:18:46.633253 ARP, Request who-has 192.168.1.118 tell 0.0.0.0, length 46 09:18:48.646430 ARP, Request who-has 192.168.1.1 tell 192.168.1.118, length 46 09:18:48.700308 ARP, Request who-has 192.168.1.1 (ff:ff:ff:ff:ff:ff) tell 192.168.1.11, length 46 ^C 5 packets captured |
54
cpstar OP @sapphire 53#
额,看情况,根据附言 1 的图,我猜你测试的是右侧 NodeA 上的,我不知道你继续测试右侧 NodeA 下如果再带一台机器比如 NodeA-A ,能否继续广播通。我没有实现的就是 NodeA 下的 NodeA-A 寻找左侧 0.11 或者 0.2 这些机器。 单纯做到附言 1 的图,没有任何问题。 |
55
sapphire 283 天前
@cpstar A 侧能通自然 B 侧也通,二层不考虑交换机的作用,本身就是广播的。从原理出发,不会质疑这个,只要解决自己哪里没做对就行。
A 侧网络是 192.168.10.0/23 ,B 侧是 192.168.1.0/24 ,这是 B 侧桥接 VLAN 下的另一台机器 ui (非 Zerotier 所在 ecs )的 DHCP 的结果: root@ui:~# dhclient -v eth4 root@ui:~# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0@if15: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 0a:4c:51:c4:9c:c8 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 192.168.1.8/24 brd 192.168.1.255 scope global eth0 valid_lft forever preferred_lft forever 76: eth4@if77: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether da:0c:23:82:ad:de brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 192.168.10.123/24 brd 192.168.10.255 scope global dynamic eth4 valid_lft 691181sec preferred_lft 691181sec root@ecs:~# tcpdump -i br0 -nn -l port 67 or port 68 tcpdump: verbose output suppressed, use -v[v]... for full protocol decode listening on br0, link-type EN10MB (Ethernet), snapshot length 262144 bytes 11:41:57.970084 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 4a:f7:33:3b:e8:29, length 300 11:41:57.983324 IP 192.168.10.8.67 > 255.255.255.255.68: BOOTP/DHCP, Reply, length 315 11:41:57.984336 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 4a:f7:33:3b:e8:29, length 300 11:41:57.986453 IP 192.168.10.1.67 > 192.168.10.123.68: BOOTP/DHCP, Reply, length 315 11:41:57.991644 IP 192.168.10.8.67 > 255.255.255.255.68: BOOTP/DHCP, Reply, length 315 11:41:57.998054 IP 192.168.10.1.67 > 192.168.10.123.68: BOOTP/DHCP, Reply, length 315 |
56
sapphire 283 天前
@cpstar #55 楼的截屏中 tcpdump 是另一次 dump 的结果,和 10.123 这次不一样,request from 的 mac 是不一样的,那次被屏幕滚动冲掉了。
|
57
sapphire 283 天前
“A 侧网络是 192.168.10.0/23”,此处笔误是 192.168.10.0/24 。
实际上,我不觉得你的真实需求必须要二层互通,一般远程办公这种情况绝大多数应用三层互通就足够,有个别需要广播或者多播的,可以通过各种三层技术引入,比如 DHCP Relay 以及 ARP Proxy 和 IGMP Proxy 。 |