之前上学那会老师说网络设备的操作系统是基于linux开发的,当时没有概念但是当学习了linux之后体会越发的明显,特别是linux防火墙与网络设备防火墙、nat之间的关系。

      在进入设备时做dnat,再出设备时做snat。以及3个表,3条连。下面是摘自网络的linux防火墙知识。

    

iptables

ptables简介

iptables是基于内核的防火墙,功能非常强大,iptables内置了filternatmangle三张表。

filter负责过滤数据包,包括的规则链有,inputoutputforward

nat则涉及到网络地址转换,包括的规则链有,preroutingpostroutingoutput

mangle表则主要应用在修改数据包内容上,用来做流量×××的,默认的规则链有:INPUTOUTPUTNATPOSTROUTINGPREROUTING

input匹配目的IP是本机的数据包,forward匹配流经本机的数据包,prerouting用来修改目的地址用来做DNATpostrouting用来修改源地址用来做SNAT

iptable基本操作

iptables -L  列出iptables规则
iptables -F 
清除iptables内置规则
iptables -X 
清除iptables自定义规则

设定默认规则

iptables规则中没有匹配到规则则使用默认规则进行处理

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

配置SSH规则

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT 
如果你把OUTPUT 设置成DROP,就需要加上这个规则,否则SSH还是不能登录,因为SSH服务职能进不能出。

只允许192.168.0.3的机器进行SSH连接

iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT

如果要允许,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP.

允许loopback回环通信

IPTABLES -A INPUT -i lo -p all -j ACCEPT 
IPTABLES -A OUTPUT -o lo -p all -j ACCEPT

目的地址转换,映射内部地址

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dprot 81 -j DNAT --to 192.168.0.2:80
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dprot 81 -j DNAT --to 192.168.0.1-192.168.0.10

源地址转换,隐藏内部地址

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1-1.1.1.10

地址伪装,动态ipNAT

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

masqueradesnat的主要区别在于,snat是把源地址转换为固定的IP地址或者是地址池,而masqueradeadsl等方式拨号上网时候非常有用,因为是拨号上网所以网卡的外网IP经常变化,这样在进行地址转换的时候就要在每次都要修改转换策略里面的ip,使用masquerade就很好的解决了这个问题,他会自己去探测外网卡获得的ip地址然后自动进行地址转换,这样就算外网获得的ip经常变化也不用人工干预了。

开启转发功能

iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT 只允许已建连接及相关链接对内转发
ptables -A FORWARD -i eth1 -o eh0 -j ACCEPT
允许对外转发

过滤某个MAC

iptables -A FORWARD -m mac --mac -source MAC地址 -j DROP

报文经过路由后,数据包中原有的MAC信息会被替换,所以在路由后的iptables中使用mac匹配没有意义。

数据包整流

iptables -A FORWARD -d 192.168.0.1 -m limit --limit 50/s -j ACCEPT
iptables -A FORWARD -d 192.168.0.1 -j DROP

多端口匹配

用以一次匹配多个端口

iptables -A INPUT -p tcp -m muliport --dport s 21,22,25,80,110 -j ACCEPT

丢弃非法连接

iptables -A INPUT   -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP
iptables-A FORWARD -m state --state INVALID -j DROP

存储于恢复iptables规则

iptables-save > somefile
iptables-restore < somefile

转载请注明:

本文转自:http://www.liusuping.com/ubuntu-linux/iptables-firewall-setting.html