iptables:“--src-type LOCAL”到底是什么意思?

iptables:“--src-type LOCAL”到底是什么意思?

iptables 手册页将其定义为“本地地址”,但是这是否仅指 127 范围(localhost)还是也包括 10、169、192?

答案1

答案2

我认为 addr-type LOCAL 表示环回的答案是错误的,因为它只是部分答案,而且极具误导性。LOCAL 表示在主机的一个接口上分配的任何 IP,包括环回。如果您说 LOCAL 只是 127.0.0.0/8(如 sasanet 所述),那么您会将其限制为环回接口,这完全是错误的。

此外,IP 甚至可以是可路由的和公开的。对于主机来说,这无关紧要,因为从它的角度来看,IP 将引用主机本身。如果您对其接口上分配的公共 IP 执行 curl 或 ping 操作,它显然不会将数据包发送出去,而是在本地路由。示例:

ip地址显示dev eth0:

 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 0a:e7:8b:89:d5:f4 brd ff:ff:ff:ff:ff:ff
    inet 172.31.20.254/20 brd 172.31.31.255 scope global dynamic eth0
       valid_lft 3110sec preferred_lft 3110sec

ip 路由显示表本地:

local 172.31.20.254 dev eth0 proto kernel scope host src 172.31.20.254

(如前所述,IP 是私有的还是公共的显然无关紧要,只要它被分配给网络接口即可)

答案3

“本地路由”这个术语意味着数据包将“本地”传送到您的主机,因为目的地被分配给了您的主机的一个接口。它确实不是仅表示localhost,如环回地址(也不169.254/16表示“链接本地”地址)。

Linux 使用 Netlink 协议在内核空间和用户空间之间发送消息,其中的一个 Netlink 家族是NETLINK_ROUTE,它可以用来接收路由更新、修改接口地址、ETC。例如,ip 路由iproute2 的命令使用这个。

看看addrtype源代码在 iptables 中,你会看到对linux/rtnetlink.h,定义RTN_LOCAL为消息类型。rtnetlink(7)手册页描述RTN_LOCAL如下:

rtm_type          Route type
───────────────────────────────────────────────────────────
RTN_LOCAL         a local interface route

当你读到这些内容时,你不会觉得这些内容很清楚,我能找到的一些最好的参考资料是各种各样的互联网来源,因此造成混乱也是可以理解的。

答案4

-m addr-type LOCAL127.0.0.0/8-网络。

相关内容