【问题标题】:Docker's NAT table output chain ruleDocker的NAT表输出链式规则
【发布时间】:2015-01-13 19:32:34
【问题描述】:

我正在尝试理解 iptables 中的规则之一:

$ sudo iptables -t nat  --list -v
...

Chain OUTPUT (policy ACCEPT 618 packets, 31267 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DOCKER     all  --  any    any     anywhere            !127.0.0.0/8          ADDRTYPE match dst-type LOCAL

...

所以这条规则试图匹配目标地址类型“LOCAL”而不是在 127.0.0.0/8 的范围内?

那么它会匹配什么地址? 这条规则的目的是什么?

谢谢!

【问题讨论】:

    标签: docker iptables nat


    【解决方案1】:

    此规则将匹配源自本地计算机的所有数据包(因为它位于OUTPUT 链中),目的地为不以127.X.X.X 开头的本地托管IP 地址。此类数据包将移交给DOCKER 链进行进一步处理。

    不以127.X.X.X 开头的本地托管IP 地址与为机器接口定义的每个IP 地址相匹配。这也包括动态定义的 IP 地址,例如通过 DHCP 分配的 IP 地址。

    可以通过执行命令ip route show table local type local提取机器本地托管的IP地址。


    为了检查该规则实际匹配了哪些 IP 地址,可以在DOCKER 链的开头添加一条日志记录规则,如下所示:

    sudo iptables -t nat -I DOCKER -m limit --limit 2/min -j LOG --log-level 4 --log-prefix 'DOCKER CHAIN '
    

    匹配的数据包将记录在文件/var/log/syslog中。

    【讨论】:

    • 我不认为这很常见......我认为应该是“iptables 匹配”?
    • 不,但是评论看起来像/* addrtype --dst-type LOCAL */,并且该规则应该来自类似:iptables -t nat -A OUTPUT -j DOCKER ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL
    • 上一个命令中有轻微的错字;应该是-t nat(小写),可能
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 2014-05-01
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多