当我启动docker服务/套接字时,我无法再通过wifi热点共享我的笔记本电脑连接。更准确地说,我的手机仍然检测到我的热点,我输入密码,它告诉我“已注册”,但我也收到“无互联网连接”的提示。
当我禁用并停止 docker 服务并重新启动我的笔记本电脑时,手机就可以连接到互联网。
我认为docker肯定会干扰我的网络......
您有没有解决方案可以让 docker 服务保持活跃,同时允许我将我的互联网连接共享为我的 wifi 热点?
提前致谢
Linux Mint 21 Vanessa 和 Ubuntu 22.04 jammy
HP Zbook 15 power G8
内核 5.15.0-53-generic
iptables -n -v -L
:
Chain INPUT (policy ACCEPT 2119 packets, 1236K bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy DROP 51 packets, 3060 bytes)
pkts bytes target prot opt in out source destination
51 3060 DOCKER-USER all -- * * 0.0.0.0/0 0.0.0.0/0
51 3060 DOCKER-ISOLATION-STAGE-1 all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * docker0 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
0 0 DOCKER all -- * docker0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- docker0 docker0 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 1658 packets, 215K bytes)
pkts bytes target prot opt in out source destination
Chain DOCKER (1 references)
pkts bytes target prot opt in out source destination
Chain DOCKER-ISOLATION-STAGE-1 (1 references)
pkts bytes target prot opt in out source destination
0 0 DOCKER-ISOLATION-STAGE-2 all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
51 3060 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Chain DOCKER-ISOLATION-STAGE-2 (1 references)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * docker0 0.0.0.0/0 0.0.0.0/0
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Chain DOCKER-USER (1 references)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- <WLANINTERFACE> * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * <WLANINTERFACE> 0.0.0.0/0 0.0.0.0/0
51 3060 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 ```
答案1
@Donkeycode Docker 修改了 iptables 转发队列。来自热点接口的 IP 数据包将被丢弃。
诊断:
iptables -n -v -L
显示当前规则集
iptables -Z
重置计数器
尝试使用你的热点。第一个命令将显示哪条规则会丢弃你的流量。
解决方案:
- 安装 iptables-persistent 数据包
- 添加文件 /etc/iptables/rules.v4
此文件需要以下上下文
*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:DOCKER - [0:0]
:DOCKER-USER - [0:0]
-A FORWARD -j DOCKER-USER
-A DOCKER-USER -i <WLANINTERFACE> -j ACCEPT
-A DOCKER-USER -o <WLANINTERFACE> -j ACCEPT
-A DOCKER-USER -j RETURN
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
请更换 <WLANINTERFACE>
替换为您的 WLAN 接口名称,例如wlan0
或wlp1s0
。
重启后你的热点就可以正常工作了