wsl2 的 mirrored 网络模式中的 net.ipv4.ip_local_port_range 如何修改?

254 天前
 leeyuzhe

具体问题是发现我的程序在连接 kafka 的时候报错 Cannot assign requested address ,然后我就开始 debug 。结果发现刚开始 kafka 是能正常连接的,随着程序启动,各分区都开始连接然后就开始报错了,我就统计了下当前连接数,发现每次都是 299 个连接。最后发现/proc/sys/net/ipv4/ip_local_port_range 这里面只给了三百个端口,从 60500 到 60800 。然后我就尝试在/etc/sysctl.conf 中修改这个 net.ipv4.ip_local_port_range 范围结果发现一旦把它修改成别的数值后任何 tcp 连接就都建立不了了

1124 次点击
所在节点    Windows
11 条回复
NessajCN
254 天前
先 sysctl net.ipv4.ip_local_port_range="32768 60999"
或者 echo "32768 61000" >/proc/sys/net/ipv4/ip_local_port_range
试一下
成功了再写进/etc/sysctl.conf
leeyuzhe
254 天前
@NessajCN 你注意看我说的,可以改,但是改完就上不了网了。只要客户端端口不在它默认的 60500 到 60800 中间就连不上任何 tcp 连接
lolizeppelin
254 天前
先确定你要多少个链接,然后按照具体数量设置/proc/sys/net/ipv4/ip_local_port_range
设置完后到 windows 中,找到对应分配端口的注册表
设置动态端口避开 ip_local_port_range 占用的动态分配端口
重启系统
leeyuzhe
253 天前
@lolizeppelin
按照你说的,我在 windows 注册表里面把 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TcpPortRange 改成了 50000-60000 然后在 wsl2 里面设置 sudo sysctl -w net.ipv4.ip_local_port_range="60001 63000"。
重启电脑然后 wsl2 现在无法建立任何 tcp 连接了,我甚至连 ssh 我自己都不行了
sudo netstat -tunalp | grep 10.0.16.110
tcp 0 1 10.0.16.110:61565 10.0.16.110:22 SYN_SENT 3077/ssh
lolizeppelin
253 天前
win 系统默认的你别改多啊,改少一点试试
我也是猜的
leeyuzhe
253 天前
@lolizeppelin 新发现,当前条件下 wsl2 中的动态端口仅为 60700-61000 时可以联通 tcp ,还是 300 个,不多不少
leeyuzhe
253 天前
@lolizeppelin #5 主要是我之前没有这个注册表的键,我刚新增的,。,。
lolizeppelin
253 天前
还有一个可能 60000-65000 之间的端口 是 win 某些服务的默认端口....
你可以尝试把 ip_local_port_range 改到 3w 或者 4w
避开系统已经用到的端口,或者之际从 win 的默认动态端口里扣出来
leeyuzhe
253 天前
@lolizeppelin #8 查了下,windows 默认的动态端口范围为 49152 到 65535 ,我改成 50000-60000 还缩小了呢。
我尝试了 3w 或者 2w 附近的端口范围,通通不行。
最后感谢你的解答与猜测。
Dicks
245 天前
我也遇到了这个问题
把 firewall 设置为 false 就正常了, 所以猜想应该是防火墙的啥规则导致的

[experimental]
firewall=false
leeyuzhe
244 天前
@Dicks 你也是因为客户端端口不够用导致的么?我防火墙一直是 false ,这不起作用呀。

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

https://www.v2ex.com/t/1031883

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

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

© 2021 V2EX