したがって、私は最近、タワーとラップトップの毎日のドライバをManjaroに切り替えました。どちらの場合も、同じ問題に直面しました。 Dockerコンテナはインターネットに接続できません。でこれをテストしていますdocker run --rm -it alpine ping 8.8.8.8
。このオプションを使用すると、--net=host
コマンド全体が次のようになり、docker run --rm --net=host -it alpine ping 8.8.8.8
コンテナがpingを実行できます。ただし、このオプションを正しく理解すると、コンテナは互いに通信できません。私のカーネルバージョンは5.2.21-1です。
マイナーなリモート可能性のために、両方のコンピュータはNATの背後にあり、デバイスのMACアドレスに基づいてフィルタリングされた(および割り当てられたIP)ネットワークにあります。
コンテナが実行中でip a
出力をpingしようとすると(実際のMACをクリア)
$ ip a
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: enp0s31f6: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 10.173.136.22/16 brd 10.173.255.255 scope global dynamic noprefixroute wlp3s0
valid_lft 83012sec preferred_lft 83012sec
inet6 fe80::48d7:85d5:4c9d:4dd/64 scope link noprefixroute
valid_lft forever preferred_lft forever
4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:8e:6f:31:71 brd ff:ff:ff:ff:ff:ff
inet 172.31.0.1/16 brd 172.31.255.255 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:8eff:fe6f:3171/64 scope link
valid_lft forever preferred_lft forever
8: veth65af0a1@if7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
link/ether b2:40:b4:8c:6c:f1 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::b040:b4ff:fe8c:6cf1/64 scope link
valid_lft forever preferred_lft forever
私が今まで試したこと:
/etc/systemd/network/dockerForward.network
次のようにファイルを生成しますこのウィキペディア記事内容がある
[Match]
Name=wlp3s0
[Network]
IPForward=true
networkctl
だから見ましたこの記事。しかし出力になるので
$ networkctl
WARNING: systemd-networkd is not running, output will be incomplete.
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback n/a unmanaged
2 enp0s31f6 ether n/a unmanaged
3 wlp3s0 wlan n/a unmanaged
4 docker0 bridge n/a unmanaged
実行にもならないと見て、犯人ではないと推定されます。
また、IP範囲が重ならないことを確認しました(例:このコメント)。私がそれを実行すると、$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' 56fe5d704cd9
それは私にIPを提供します172.31.0.2
。
良い測定のために、私のiptables -L
結果は次のとおりです。
$ iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DOCKER-USER all -- anywhere anywhere
DOCKER-ISOLATION-STAGE-1 all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
DOCKER all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain DOCKER (1 references)
target prot opt source destination
Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target prot opt source destination
DOCKER-ISOLATION-STAGE-2 all -- anywhere anywhere
RETURN all -- anywhere anywhere
Chain DOCKER-ISOLATION-STAGE-2 (1 references)
target prot opt source destination
DROP all -- anywhere anywhere
RETURN all -- anywhere anywhere
Chain DOCKER-USER (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
私はここで少し迷子になりました。正しい方向についてのアドバイスをいただきありがとうございます。
編集する:
コメントで述べたように、出力は次のようになりますiptables-save -c
。
$ iptables-save -c
# Generated by iptables-save v1.8.3 on Fri Nov 15 10:11:51 2019
*filter
:INPUT ACCEPT [1299:403836]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [147:26907]
:DOCKER - [0:0]
:DOCKER-ISOLATION-STAGE-1 - [0:0]
:DOCKER-ISOLATION-STAGE-2 - [0:0]
:DOCKER-USER - [0:0]
[27:2268] -A FORWARD -j DOCKER-USER
[27:2268] -A FORWARD -j DOCKER-ISOLATION-STAGE-1
[0:0] -A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
[0:0] -A FORWARD -o docker0 -j DOCKER
[27:2268] -A FORWARD -i docker0 ! -o docker0 -j ACCEPT
[0:0] -A FORWARD -i docker0 -o docker0 -j ACCEPT
[27:2268] -A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
[27:2268] -A DOCKER-ISOLATION-STAGE-1 -j RETURN
[0:0] -A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
[27:2268] -A DOCKER-ISOLATION-STAGE-2 -j RETURN
[27:2268] -A DOCKER-USER -j RETURN
COMMIT
# Generated by iptables-save v1.8.3 on Fri Nov 15 10:11:51 2019
*nat
:PREROUTING ACCEPT [107:22651]
:INPUT ACCEPT [90:18175]
:OUTPUT ACCEPT [7:1549]
:POSTROUTING ACCEPT [7:1549]
:DOCKER - [0:0]
[6:2978] -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
[0:0] -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
[1:84] -A POSTROUTING -s 172.31.0.0/16 ! -o docker0 -j MASQUERADE
[0:0] -A DOCKER -i docker0 -j RETURN
COMMIT
コメントに記載されている追加出力:
$ docker network inspect bridge
[
{
"Name": "bridge",
"Id": "53ce5b5c85f1ecd2e67118496f38141193398f5786c959305f0453ac15f96c63",
"Created": "2019-11-16T12:36:27.244838753+01:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.31.0.1/16",
"Gateway": "172.31.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
},
"Labels": {}
}
]
$ docker run --rm -it alpine ip r
default via 172.31.0.1 dev eth0
172.31.0.0/16 dev eth0 scope link src 172.31.0.2
私が実行した接続が失敗した正確な場所を追跡しようとしています。
$ docker run -it --rm gophernet/traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 46 byte packets
1 172.31.0.1 (172.31.0.1) 0.005 ms 0.051 ms 0.016 ms
2 xxx.xxx.xxx.1 (xxx.xxx.xxx.1) 15.092 ms 0.570 ms 0.656 ms
3 * * *
4 * * *
[...]
xxx.xxx.xxx.136
私のNATの実際のグローバルアドレスになります。
$ ip route
default via 10.173.1.1 dev wlp3s0 proto dhcp metric 600
10.173.0.0/16 dev wlp3s0 proto kernel scope link src 10.173.136.22 metric 600
172.31.0.0/16 dev docker0 proto kernel scope link src 172.31.0.1 linkdown