我在QNAP raid机器上运行了docker-1.9.1
。它有使用子网10.0.3.0/24
的默认bridge
网络。在iptables的我看到nat
表的规则:Docker是否在桥接网络的iptables中自动化IP伪装规则?
-A POSTROUTING -s 10.0.3.0/24 ! -d 10.0.3.0/24 -j MASQUERADE
我假设泊坞创造了这个规则本身。
我创建了一个新的桥接网络:
docker network create \
--gateway=10.0.5.1 \
--subnet=10.0.5.0/24 \
-o "com.docker.network.bridge.host_binding_ipv4"="0.0.0.0" \
-o "com.docker.network.bridge.enable_icc"="true" \
-o "com.docker.network.driver.mtu"="1500" \
-o "com.docker.network.bridge.name"="lxcbr1" \
-o "com.docker.network.bridge.enable_ip_masquerade"="true" \
isolated_nw
这并不创造iptables的一个规则。我错过了一步吗?
以下是完整安装命令和结果,复制@larsks'例如:
[/share/Containers] # docker --version
Docker version 1.9.1, build 147ce3e
[/share/Containers] # iptables -t nat -S | grep 10.0.5.0
[/share/Containers] # docker network create \
> --gateway=10.0.5.1 \
> --subnet=10.0.5.0/24 \
> -o "com.docker.network.bridge.host_binding_ipv4"="0.0.0.0" \
> -o "com.docker.network.bridge.enable_icc"="true" \
> -o "com.docker.network.driver.mtu"="1500" \
> -o "com.docker.network.bridge.name"="lxcbr1" \
> -o "com.docker.network.bridge.enable_ip_masquerade"="true" \
> isolated_nw
a7b5c938008169f32fcdfc1d9409716b725cc916b30f472ac6ec2a1d71fb77f0
[/share/Containers] # iptables -t nat -S | grep 10.0.5.0
[/share/Containers] # iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A POSTROUTING -s 10.0.3.0/24 ! -d 10.0.3.0/24 -j MASQUERADE
[/share/Containers] #
您是否知道在https://docs.docker.com/engine/userguide/containers/networkingcontainers/上创建自己的桥接网络? –
我在该页面上使用了例子来创建我自己的网络。看起来不像是覆盖ip masquerade或iptables。 –
它......实际上。你可以看到我在答案中运行的命令的实际顺序。或者你可以看到这个,这是我运行相同测试的实际会话:https://asciinema.org/a/9ipp0n6izkcb3iqk2tdgmpx1i – larsks