linux路由防火墙设置


当网络数据包通过网络适配器之后,都要通过路由和防火墙才能到达目的主机或网络(多网卡时),当一个应用发送一个数据时,内核创建的数据包也要通过路由和防火墙。
Linux内核定义了三种过滤规则或链(chains):INPUT、OUTPUT和FORWORD。
在2.4内核后,Linux对这三种规则做了很大的调整,简化了过滤逻辑,我在这里只写2.4内核的规则。所有网卡接收到的数据包, 都先要通过路由,路由之后的数据包如果到达本机,则要通过INPUT的过滤,而到达其他网卡的数据包要通过OUTPUT过滤。
对于本机发送的数据包要先通过OUTPUT过滤,才进行路由。
Linux 2.4内核用iptables替换了之前的ipchains,即用iptables设置网络过滤。与设置防火墙相关的文件有三个:
1. /sbin/目录下的应用程序
2. /etc/sysconfig/目录下的配置文件
3. /etc/init.d/目录下的启动脚本(/etc/init.d是/etc/rc.d/init.d的符号链接)
修改防火墙规则可以使用iptables命令,要永久保存防火规则,运行service iptables save,将新规则写到/etc/sysconfig/iptables(也可以直接修改这个文件)。
一般如果要定义自己的防火墙,可以在/etc/init.d/下编写自己的启动脚本,再用chkconfig加到启动项。iptables的一些使用有:
1. #iptables -F 清除所有路由规则
2. #iptables -P INPUT DROP 默认INPUT处理方式为丢弃
3. iptables -A INPUT -i eth0 -p tcp -s 209.200.200.10 --sport 1024:65535 -d MY.NETWORK.IP.ADDR --dport 22 -j ACCEPT 接收209.200.200.10的SSH连接。
4. iptables -A INPUT -i eth0 -p tcp ! --syn -s EMAIL.NET.IP.ADDR --sport 25 -d MY.NETWORK.IP.ADDR --dport 1024:65535 -j ACCEPT 允许发送e-mail。! --syn是一个安全选项,确保这个数据包是对之前数据包的回应。
5. iptables -A INPUT -i eth0 -p icmp -d MY.NETWORK.IP.ADDR -j ACCEPT 允许所有icmp包,也可以自定义所匹配的ICMP类型。
6. /sbin/iptables -A INPUT --match state --state ESTABLISHED,RELATED -j ACCEPT 允许已经建立连接的数据包,即所有回应本机主动连接的应用都会允许。
修改路由规则使用route命令:
1. #/sbin/route add --net 172.24.150.0 netmask 255.255.0.0 dev eth0
2. #/sbin/route add -host 192.168.150.33 gw 172.24.150.1
3. #/sbin/route add default gw 209.100.100.1
查看路由规则的命令:
1. #netstat -rn
2. #route -n
3. #ip route list

100次点赞 100次阅读