当前位置:   article > 正文

解读-m addrtype --dst-type LOCAL -j DOCKER_addrtype match dst-type local

addrtype match dst-type local

比方说我们使用docker容器,一定会在iptables的NAT表中看到下在这样的一条配置规则:

-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
  • 1

从整体上看,这条规则是要把符合什么匹配规则的数据包,在数据包进入NAT表PREROUTING链时,让它直接jump到一个名为DOCKER的链。至于在这个DOCKER的链中有哪些继续生效的NAT规则,不是我们要讨论的。

我们主要是分析一下“-m addrtype --dst-type”的数据包匹配规则该做怎样的理解。

首先是,-m addrtype。

iptables提供了众多的扩展模块,以支持更多的功能。addrtype就是这样的一个扩展模块,提供的是Address type match的功能。引用的方式就是 -m 模块名。

对于iptables扩展模块应用的最多的莫过于在INPUT表中的类似下面这个规则了:

-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
  • 1
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  • 1

注:至于conntrack和state两个模块的异同,其实没有什么差别,效果一致。

其次是,–dst-type

我们可以通过查看addrtype模块的使用说明来了解–dst-type选项的使用方法以及取值范围。

# iptables -m addrtype --help
iptables v1.4.21
 
Usage: iptables -[ACD] chain rule-specification [options]
       iptables -I chain [rulenum] rule-specification [options]
       iptables -R chain rulenum rule-specification [options]
       iptables -D chain rulenum [options]
       iptables -[LS] [chain [rulenum]] [options]
       iptables -[FZ] [chain] [options]
       iptables -[NX] chain
       iptables -E old-chain-name new-chain-name
       iptables -P chain target [options]
       iptables -h (print this help information)
 
Address type match options:
 [!] --src-type type[,...]      Match source address type
 [!] --dst-type type[,...]      Match destination address type
     --limit-iface-in           Match only on the packet's incoming device
     --limit-iface-out          Match only on the packet's outgoing device
 
Valid types:           
                                UNSPEC
                                UNICAST
                                LOCAL
                                BROADCAST
                                ANYCAST
                                MULTICAST
                                BLACKHOLE
                                UNREACHABLE
                                PROHIBIT
                                THROW
                                NAT
                                XRESOLVE
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

从上面的内容可以看到该模块支持按源地址或目标地址类型去做匹配,支持的地址类型有很多种,比如LOCAL表示是本地网络地址,BROADCAST表示匹配广播地址,以及其它各种特殊用途的地址类型。

所以回到开头的那条规则上,其作用就是:把目标地址类型属于主机系统的本地网络地址的数据包,在数据包进入NAT表PREROUTING链时,都让它们直接jump到一个名为DOCKER的链。

原文链接:https://blog.csdn.net/watermelonbig/article/details/80319766

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/500873
推荐阅读
相关标签
  

闽ICP备14008679号