本人使用的是CentOS 6.5 64bit 版本,如果是CentOS 7 以上版本请查看:
https://blog.csdn.net/dling8/article/details/87359821
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