天天看点

iptables -L 不显示结果

闲来无事,今天测试了下列命令。

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
# 如下命令表示把所有10.8.0.0网段的数据包
# SNAT成网卡eth0的ip然后发出去
# MASQUERADE会自动读取eth0现在的ip地址然后做SNAT出去,
# 这样就实现了很好的动态SNAT地址转换。           

上述命令中MASQUERADE,地址伪装,算是snat中的一种特例,可以实现自动化的snat。

但是我使用iptables -L,啥结果没有,增加失败了吗?

iptables -L 不显示结果

原来不是如此,正确的命令是

iptables -L -t nat

使用-L, --list 选型可以列出当前防火墙规则,但是需要使用-t,--table命令选项来指定合适的Netfilter表,共有五种,分别为:filter(缺省default), nat, mangle, raw 和 security。

iptables --table nat --list
           

或者使用下列简短形式也行:

iptables -t nat -L
           
iptables -L 不显示结果

假如没有指定特定表,那么默认表就是filter。

为了避免DNS查询等待,可以使用-n、--numeric选项,直接打印IP地址而不是主机名。

假如需要删除增加的规则,那么使用下列命令即可,简单的加-A替换为-D选项即可:

iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE           

使用-v选项可以查看详细信息:

iptables -vL -t filter
iptables -vL -t nat
iptables -vL -t mangle
iptables -vL -t raw
iptables -vL -t security           
iptables -L 不显示结果

iptables参考图:

iptables -L 不显示结果