iptables的网络传输解说
数据传输的过程,数据包经过防火墙的过程:
1 数据包首先进入的是prerouting链,会自动匹配prerouting的规则。
这里面分为两种情况;一种是进入本机的,访问本机数据的,此时数据包进入input链,获得数据后,到达output链,经postrouting链去往目标主机。
另外一种是经过转发,不做数据查询的,那么就会自动匹配forward链的规则,然后到达postrouting链出站去往目标主机
在这里做一个示意图
此图是参考别人的,很形象也很直观。熟悉此图有利于我们更好的理解运用防火墙规则。
iptables 用法说明:
选择表后 链前的使用规则
A 添加,一般在前一条的规则后面添加。 I 大写的I ,规则是直接添加在已有规则的最前面。 D 删除防火墙的某条规则。 F 直接清空所有防火墙的规则 L 显示防火墙的规则
链规则后使用;
-p 表示选择哪种协议(tcp udp icmp )
-s 表示源ip
-d 表示目标ip
--sport 表示源端口
实例运用 : iptables -A INPUT -p tcp --sport 80 -j ACCEPT 表示允许外部服务器的源端口为80的发送的数据进入本机
--dport 表示目标端口
实例运用: iptables -A INPUT -p tcp --dport 80 -j ACCEPT 表示允许外部服务器访问我本机的80端口服务
-i 表示选择数据流经过哪张网卡
内部地址要访问公网上的服务时(如web访问),内部地址会主动发起连接,由路由器或者防火墙上的网关对内部地址做个地址转换,将内部地址的私有IP转换为公网的公有IP,网关的这个地址转换称为SNAT,主要用于内部共享IP访问外部。
当内部需要提供对外服务时(如对外发布web网站),外部地址发起主动连接,由路由器或者防火墙上的网关接收这个连接,然后将连接转换到内部,此过程是由带有公网IP的网关替代内部服务来接收外部的连接,然后在内部做地址转换,此转换称为DNAT,主要用于内部服务对外发布。
SNAT 一般表示内网ip访问外网地址进行的一个转换
实例运用: iptables -t nat -A POSTROUTING -s 192.168.1.10 -p tcp --sport 22 -j SNAT --to-source 100.0.0.1:422 表示转发422端口到22端口上
iptables -t nat -A POSTROUTING -s 192.168.72.161 -p tcp --sport 80 -j SNAT --to-source 192.168.72.161:9000 表示本机的3306端口映射在8087端口上
DNAT 一般表示外网地址返回给本机的地址转换
实例运用 iptables -t nat -A PREROUTING -d 100.0.0.1 -p tcp --dport 422 -j DNAT --to-destination192.168.1.10:22 表示外网访问本机的422端口转到本机的22端口上
iptables -t nat -A PREROUTING -d 192.168.72.161 -p tcp --dport 9000 -j DNAT --to-destination 192.168.72.161:80 表示外网访问本机的9000端口转到本机的80端口上