docker - docker上的nginx:对等方重置连接
问题描述
操作系统:Manjaro KDE;Docker 版本:19.03.12-ce
尝试搜索类似的问题,但没有任何帮助。
就此而言,在 docker 或任何其他容器上运行 nginx 时,我无法访问它。
$ docker run -p 80:80 nginx
$ curl -vvv localhost
* Trying ::1:80...
* Connected to localhost (::1) port 80 (#0)
> GET / HTTP/1.1
> Host: localhost
> User-Agent: curl/7.71.1
> Accept: */*
>
* Recv failure: Connection reset by peer
* Closing connection 0
curl: (56) Recv failure: Connection reset by peer
这是 netstat 输出的相关部分:
$ sudo netstat -pnltu | grep 80
tcp6 0 0 :::80 :::* LISTEN 80884/docker-proxy
我也试过:
$ docker run -p 127.0.0.1:80:80 nginx
这导致netstat:
$ sudo netstat -pnltu | grep 80
tcp 0 0 127.0.0.1:80 0.0.0.0:* LISTEN 81440/docker-proxy
结果相同。但是,如果我这样运行它:
$ docker run --network host -p 80:80 nginx
它按预期工作。知道为什么吗?
解决方案
我想到了!
罪魁祸首是我的(mullvad 的)wireguard 配置,它将自己的 iptables 规则添加到主机以实现终止开关,强制整个流量通过 VPN,或丢弃它。
如果有人遇到类似的情况,请检查您的 iptables。
PostUp = iptables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT && ip6tables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
PreDown = iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT && ip6tables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
推荐阅读
- python - 使用 selenium 保持登录帐户
- css - 在 ionic 2 中更改警报控制器的样式和文本修改
- p2p - 以太坊和比特币 p2p 协议有什么不同?
- php - 我需要在我的网站上嵌入 Skype 窗口
- ios - 如何使 UICollectionView 水平和垂直滚动?
- react-native - react-native run-android 无法读取 packageName
- java - 连接四的对角检查中涉及的 For 循环
- ios - 无法在 Xcode 9.3 和 Xcode 9.4 上构建模块“Foundation”、“UIKit”、“CoreFoundation”
- python - df.loc[df.loc[:,'Col1'].str.contains('_id'),'Col2']='stringValue'
- c - `signal()` 是 Linux 上的系统调用函数吗?