Ovear's Blog

I'am Ovear,Ovear is me.

Theme Refrain made by Eiko

Proudly powered by WordPress

标签: iptables

iptables-extensions中socket模块是个啥?

今天看到这个叫做socket的iptables 模块挺有意思的,但是没有找到太多的资料;想了想翻译一下文档,应该可以作为理解一下这个模块的作用的开始。

(然而发现并不能,所以又研究了一大堆相关的其他东西,就有了这一篇)

文档

   socket
       如果能通过分组执行socket搜索后,能够找到一个打开的TCP/UDP
       socket,则会进行匹配。具体来说,这会匹配一条已建立(establshed)
       的链接,或者非0绑定监听器(不是监听0.0.0.0或者::/非INADDR_ANY)
       socket(比如说有可能是非本地地址)。搜索是通过TCP/UDP分组的元
       组进行的,对于ICMP/ICMPv6错误分组来说,则是使用内嵌在内的原始
       TCP/UDP头部中的元组。

       --transparent
              忽略非透明(non-transparent) sockets.

       --nowildcard
              不要忽略绑定在'任意'地址的sockets。默认情况下,不会
              匹配0绑定监听器;因为在那种情况下,本地的服务可以
              拦截本来会被转发的流量。因此,在匹配使用策略路由重
              定向到本地的转发流量时,本选项有安全影响。当使用
              socket 匹配器来实现绑定在非本地地址的完全透明代理
              时,更推荐使用 --transparent 选项。

       例如(假如被标记为1的分组会被发送到本地):

              -t mangle -A PREROUTING -m socket --transparent -j MARK
              --set-mark 1

       --restore-skmark
              将分组标记设置为匹配到的socket的标记。可以和 --transparent
              以及 --nowildcard 选项组合使用来限制恢复分组标记时匹配的
              sockets。

       例如:一个打开了2个透明(IP_TRANSPARENT)的sockets,并
       使用SO_MARK选项设置了一个标记。我们可以这样过滤匹配的分组:

              -t mangle -I PREROUTING -m socket --transparent --restore-
              skmark -j action

              -t mangle -A action -m mark --mark 10 -j action2

              -t mangle -A action -m mark --mark 11 -j action3

记一次因CONNTRACK和ICMP导致的奇怪问题

起因

策略路由是个好东西,就是用起来特别麻烦,经常产生一些很奇怪的问题,这次遇到的问题也是特别迷惑。

有一条规则会使用CONNTRACK对链接进行分类,然后把整个链接打上标记,如果不符合任何规则就打一个默认标记。

这条规则看起来一点问题都没有,使用起来也非常正常。但是如果使用MTR对负责这条规则的链接做路由追踪的话,就会出现第一次路由追踪完毕后,从第二跳开始就会丢包。

© 2024 Ovear's Blog All rights reserved.