linux-iptables

 linux_iptables小结
1、 使用iptables可以定义一组规则,对出入系统的数据包做检查。iptables是类似于防火墙的一组组件。可以通过定义安全规则,来实现防火墙的功能。


2、 iptables的三个表
filter  :过滤,允许|不允许
nat   :实现地址转换。
mangle :修改报文元数据


3、 五个hook functions(钩子函数或者叫做链)
PREROUTING   :路由前
INPUT      :流入接口
FORWARD    :转发关口
OUTPUT     :流出接口
POSTROUTING   :路由后
可以这样画一个图
 

 

它们可以这么对应
filter
  INPUT   FORWARD  OUTPUT
nat
  PREROUTING  OUTPUT POSTROUTING
mangle
 PREROUTING  INPUT  FORWARD  OUTPUT POSTROUTING


4、 iptables用法可以归纳如下,还有很多,没有一一列出。

5、 iptables定义的规则都是自上而下执行的。
定义的规则都是立即生效,重启全部失效。如果想要重启不失效,可以把配置保存在一个文件中让文件重启自动执行。默认情况使用以下两种方式保存。
service iptables save   默认保存在/etc/sysconfig/iptables
iptables-save > /etc/sysconfig/iptables
如果你不想保存在这个目录中,可以自定义目录,比如
iptables-save > /etc/sysconfig/backup  //定义保存位置
iptables-restore < /etc/sysconfig/backup //定义启动


6、 部分例子介绍
如:我有一台服务器172.16.100.1,上面安装了web。允许172.16.0.0/16拒绝172.16.0.1访问
iptables -A INPUT -s 172.16.0.1 -d 172.16.100.1 -j DROP
iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.1 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
后面跟的是状态检测的定义.


7、 地址转换nat
如果是一个正常的网络地址,经过路由器访问外网是不会改变ip地址的。由于现在ipv4地址早已耗尽,所以没有足够的ip让你使用,但是还必须要上网,所以此时就使用路由器来设置一个nat协议,把从内网发来的数据包的ip首部信息中源地址转换为路由的公网地址,等数据包返回的时候再把目标地址转换成你的地址来实现上网。这叫做源地址转换SNAT。同样还存在目标地址转换DNAT,还有就是MASQUERADE源地址伪装(如果你不确定你的源地址,因为源地址可以通过DHCP自动获取,有时候不是固定的,这时就需要源地址伪装)。
如:源地址转换
iptables -t nat -A POSTROUTING -s 192.168.0.2/24 -j SNAT --to-source 123.123.123.123把来自192.168.0.0/24的源地址都转换为123.123.123.123
目标地址转换把来自外网的访问内网web服务的目标地址进行转换,web的80端口
iptables -t nat -A PREROUTING -d 192.168.100.2 -p tcp --dport 80 -j DNAT --to-destination 172.16.100.2
源地址伪装
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
地址伪装比直接指定转换为哪个ip要耗费更多的资源
……


8、 配置双网卡,实现路由转发功能
echo “1” > /proc/sys/net/ipv4/ip_forward让其具有转发功能
给主机添加路由功能
route add -net 172.16.100.0 netmask 255.255.0.0 dev eth0
…...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章