CentOS 6 防火墙

本人使用的是CentOS 6.5 64bit 版本,如果是CentOS 7 以上版本请查看:

      

一、设置防火墙

1.防火墙配置文件
  a 编辑配置文件    

vim /etc/sysconfig/iptables

  b 文件内容,可在文件中添加相应的配置,开放一些端口,以及端口转发等
    ----------------------------------中间为iptables文件内容-------------------------------------------

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8000:20000 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

    ----------------------------------中间为iptables文件内容-------------------------------------------

2.常用命令
    

开机启动:chkconfig iptables on
开机关闭:chkconfig iptables off
查看防火墙状态:service iptables status
启动防火墙服务:service iptables start
关闭防火墙服务:service iptables stop
重启防火墙服务:service iptables restart
保存配置:service iptables save  //在使用iptables命令添加/删除时,需要用到此命令。若直接编辑/etc/sysconfig/iptables文件,则不需要。

3.开放端口
  a 修改配置文件 /etc/sysconfig/iptables
    开放80端口:        

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

    开放8000-20000范围内的端口:        

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8000:20000 -j ACCEPT

  b 使用命令添加(添加使用 -A 插入使用 -I 删除使用 -D)
    开放80端口:        

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

    开放8000-20000范围内的端口:

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8000:20000 -j ACCEPT

   注意:使用命令修改时需要保存        

service iptables save

  注意:修改后需要重启防火墙    

service iptables restart

二、端口转发

 a 同端口转发:

iptables -t nat -A PREROUTING -p tcp --dport [端口号] -j DNAT --to-destination [目标IP]
 iptables -t nat -A PREROUTING -p udp --dport [端口号] -j DNAT --to-destination [目标IP]
 iptables -t nat -A POSTROUTING -p tcp -d [目标IP] --dport [端口号] -j SNAT --to-source [本地服务器IP]
 iptables -t nat -A POSTROUTING -p udp -d [目标IP] --dport [端口号] -j SNAT --to-source [本地服务器IP]

 b 非同端口转发:使用本地服务器的 8001 端口来转发目标 IP 为 目标服务器 的 9001 端口(其中/32可以不加)    

iptables -t nat -A PREROUTING -p tcp --dport 8001 -j DNAT --to-destination [目标服务器IP]:9001
iptables -t nat -A PREROUTING -p udp --dport 8001 -j DNAT --to-destination [目标服务器IP]:9001
iptables -t nat -A POSTROUTING -d [目标服务器IP]/32 -p tcp -m tcp --dport 9001 -j SNAT --to-source [本地服务器IP]
iptables -t nat -A POSTROUTING -d [目标服务器IP]/32 -p udp -m udp --dport 9001 -j SNAT --to-source [本地服务器IP]

 c 多端口转发:将本地服务器的 8000~9000 转发至目标 IP 为 目标服务器 的 8000~9000 端口    

iptables -t nat -A PREROUTING -p tcp --dport 8000:9000 -j DNAT --to-destination [目标服务器IP]
iptables -t nat -A PREROUTING -p udp --dport 8000:9000 -j DNAT --to-destination [目标服务器IP]
iptables -t nat -A POSTROUTING -d [目标服务器IP] -p tcp --dport 8000:9000 -j SNAT --to-source [本地服务器IP]
iptables -t nat -A POSTROUTING -d [目标服务器IP] -p udp --dport 8000:9000 -j SNAT --to-source [本地服务器IP]

 d 本机端口转发     

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

其中 -t nat 必须加上,否则报错:iptables: No chain/target/match by that name.

  加上 -t nat 后,添加的规则并不在文件 /etc/sysconfig/iptables 中,所以如果你发现该文件中没有刚添加的配置,不用担心。

  保存,重启服务    

service iptables save
service iptables restart

例如:本机172.16.0.4的10080端口 转发到 121.196.223.183的80端口
    先使用命令:ifconfig,找到本机的ip地址(内网):172.16.0.4,然后执行下面的命令:    

iptables -t nat -A PREROUTING -p tcp --dport 10080 -j DNAT --to-destination 121.196.223.183:80
iptables -t nat -A POSTROUTING -p tcp -d 121.196.223.183 --dport 80 -j SNAT --to-source 172.16.0.4
service iptables save        //保存,如果不保存,重启防火墙后还是没有添加上
service iptables restart    //重启防火墙
service iptables status        //查看防火墙状态

 如果添加错误了,可以使用删除或替换命令,二者选一:
  1.删除第1条,删除后重新添加就可以了    

iptables -t nat -D PREROUTING 1

  2.替换第1条    

iptables -t nat -R POSTROUTING 1 -p tcp -d 121.196.223.183 --dport 10869 -j SNAT --to-source 172.16.0.4