家庭网络问题求助,二层环路 / 广播风暴 / MAC 地址漂移

3 月 26 日
 xjx0524
拓扑图如下:


遇到的问题是,偶尔会网络故障
现象是
1. 包括交换机及下联设备都无法获取 ip 。
2. 软路由到公网是正常的,我可以连网线到软路由,或者从外网 wireguard 连上去。
3. ROS 里的日志出现大量 “DHCP Offering Lease Without Success”,连接交换机的端口有少量的 rx ,但 tx 为 0

修复方式:插拔一下路由要交换机的网线,或者在 ROS 里 disable/enable 一下对应的端口,都可以解决问题。

和 AI 交流说是典型的“二层环路 / 广播风暴 / MAC 地址漂移”问题,我现在用的交换机是轻网管,开了环路检测也没用,也没有更多日志可以查。

当前我的解决方案:ROS 上设置了一个脚本,30 秒 ping 一次交换机,连续 2 次不通就翻转一下端口。
设置之后成功的处理了一次网络故障,但也发现隔几个小时就会有一次 ping 不通(但没到连续 2 次)。

想请教一下有什么彻底解决的办法,AI 推荐我换个 Mikrotik CRS310 的交换机,更方便查问题。
1253 次点击
所在节点    问与答
7 条回复
datocp
3 月 26 日
1.DHCP Offering Lease Without Success
Google 倒提供了很多解决方法

2.ros 这玩意不擅长,以前典型的就是 tcp/udp timeout 设定得相当低,我的环境似乎最低也 35 秒,有一项从 65 降低到 60 就是影响 mac 在线 update ,这玩意真不如 openwrt 好用

3.无线 mesh 最擅长网络冲突

4.mac
datocp
3 月 26 日
4.mac 飘移非常容易出现在 ap 环境,移动终端 ip 在不同 ap 端口出现,至于华为交换机是关闭该端口还是抑制该端口没研究,放行以后,问题就少了很多。
xjx0524
3 月 26 日
@datocp #1 感谢回复,google 的基本都看过没有什么对应的,我觉得这是表象不是根本问题;我家里只有这一个无线路由器,没做 mesh 。

2 、4 的问题我再研究下
datocp
3 月 26 日
类似这些参数吧,决定并发连接消忘时间,当时取自己 ddwrt 。这么多年,也没怎么变过。以下取自 openwrt 21.02.5 包含 99 自定义部分

/etc/sysctl.d# ls
10-default.conf 11-nf-conntrack.conf 99-local.conf
:/etc/sysctl.d# cat 10*
# Do not edit, changes to this file will be lost on upgrades
# /etc/sysctl.conf can be used to customize sysctl settings

kernel.panic=3
kernel.core_pattern=/tmp/%e.%t.%p.%s.core
fs.suid_dumpable=2

fs.protected_hardlinks=1
fs.protected_symlinks=1

net.core.bpf_jit_enable=1

net.ipv4.conf.default.arp_ignore=1
net.ipv4.conf.all.arp_ignore=1
net.ipv4.ip_forward=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_responses=1
net.ipv4.igmp_max_memberships=100

net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_keepalive_time=120

net.ipv4.tcp_syncookies=1
net.ipv4.tcp_timestamps=1
net.ipv4.tcp_sack=1
net.ipv4.tcp_dsack=1

net.ipv6.conf.default.forwarding=0
net.ipv6.conf.all.forwarding=0
:/etc/sysctl.d# cat 11*
# Do not edit, changes to this file will be lost on upgrades
# /etc/sysctl.conf can be used to customize sysctl settings

net.netfilter.nf_conntrack_acct=1
net.netfilter.nf_conntrack_checksum=0
net.netfilter.nf_conntrack_max=16384

net.netfilter.nf_conntrack_tcp_timeout_established=600
net.netfilter.nf_conntrack_udp_timeout=65
net.netfilter.nf_conntrack_udp_timeout_stream=120

:/etc/sysctl.d# cat 99*
#sysctl -w sysctl -p
#sysctl net.core.somaxconn
#sysctl -w net.core.somaxconn=2048
net.ipv4.tcp_max_syn_backlog=2048
#1/2/4/8/16s 2=1+2+4
#net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries=2
net.core.somaxconn=2048

#/proc/sys/net/netfilter/nf_conntrack_*
net.netfilter.nf_conntrack_generic_timeout=600
net.netfilter.nf_conntrack_tcp_timeout_syn_sent=120
net.netfilter.nf_conntrack_tcp_timeout_syn_recv=60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait=120
net.netfilter.nf_conntrack_tcp_timeout_time_wait=120
net.netfilter.nf_conntrack_tcp_timeout_close=10
net.netfilter.nf_conntrack_tcp_timeout_close_wait=60
net.netfilter.nf_conntrack_tcp_timeout_last_ack=30
#

net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1
emma3
3 月 26 日
建议换个交换机试试,ROS 软件方面不会出现这种故障。
sm1314
3 月 26 日
这个不就是典型的 AP 切换 DHCP 分配失败的问题嘛。排查思路很简单,ROS 去掉,光猫改路由模式,故障消失就别用 ROS 了,整个 OPNSENSE 稳的一批;如果故障依旧,无线接入层只保留一个 AP 看看,有问题换其他牌子的 ACAP ,某兴的路由器硬件不错软件依托答辩;最后再考虑二层交换机的问题,这玩意没啥技术含量,都是共模方案,基本不会出问题
xjx0524
3 月 26 日
@sm1314 我又看了下我的图,发现是有点歧义。。。
我想表达的是路由器型号是 AX5400pro+,桥接当作 AP 使用。似乎很容易被理解成 AX5400pro 加 ap 。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/1201271

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX