我想限制出站stream量只有本地主机使用iptables。 我已经在OUTPUT上有一个默认的DROP策略,并且有一个拒绝所有stream量的规则。 我需要在OUTPUT链中添加一条规则。
我已经看到了这种types的规则的几个不同的例子,最常见的是:
-A OUTPUT -o lo -j ACCEPT
和
-A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
有没有任何理由使用后者,而不是前者? 可以在数据包上使用127.0.0.1以外的地址吗?
如果您的机器有多个接口,并且您尝试与其他接口之一的IP进行通信,则stream量实际上将通过lo接口。 Linux足够聪明地弄清楚这个stream量是注定要发生的,而不是尝试使用真实的界面。
规则-A OUTPUT -o lo -j ACCEPT将允许其他stream量,而规则-A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT将拒绝它。
。
你可以看到内核在环回接口上运行的所有内容
ip route show type local table all
(只要注意第一个值,即IP或networking/掩码)
是的,它可以有其他地址。 你可能会看到127.0.0.0/8正在使用的任何东西。 在Debian / Ubuntu系统中, 127.0.0.0/8范围内的地址用于处理Apache问题。
其他地址也可以分配,但这是非常罕见的。
我已经在OUTPUT上有一个默认的DROP策略,并且有一个拒绝所有stream量的规则
这是没有意义的; 他们达到了同样的目的。 DROP的默认策略就足够了。
你正在寻找的规则可能是
iptables -A OUTPUT -o lo -j ACCEPT
但有一些iptables的经验将(希望)教你不要这样做; 使用input规则。