1、运行环境
CentOS Linux release 7.5
2、CentOS7默认的防火墙不是iptables,而是firewalld,这里我们使用iptables,所以先关闭firewalld
防火墙命令:
1.1、设置开机启用防火墙:systemctl enable firewalld
1.2、设置开机禁用防火墙:systemctl disable firewalld
1.3、启动防火墙:systemctl start firewalld
1.4、关闭防火墙:systemctl stop firewalld
1.5、注销防火墙:systemctl mask firewalld
1.6、取消注销: systemctl unmask firewalld
1.7、检查防火墙状态:systemctl status firewalld
1.8、检查是否开机启动:systemctl is-enabled firewalld
1.9、已经启动的服务列表:systemctl list-unit-files|grep enabled
1.10、启动失败的服务:
执行关闭:
systemctl stop firewalld
systemctl disable firewalld.service
2、安装iptables
yum install iptables-services
3、设置iptables开机启动
1、systemctl start iptables
2、systemctl enable iptables
4、其他iptables命令
systemctl status iptables #查看iptables状态
systemctl restart iptables #服务重启
systemctl stop iptables #服务禁用
5、查看开放了哪些端口
iptables -L -n
6、查看nat
iptables -t nat --list
7、开启转发功能
vi /etc/sysctl.conf,将net.ipv4.ip_forward=0更改为net.ipv4.ip_forward=1
sysctl -p //配置生效
8、添加iptables允许访问的端口
1、在/etc/sysconfig/iptables 配置如下规则:
-A INPUT -p tcp -m multiport --dports 8000:8500 -j ACCEPT
2、systemctl restart iptables 生效
9、本地转发访问8000转发到8001
1、在/etc/sysconfig/iptables 配置如下规则:
-A PREROUTING -p tcp --dport 8000 -j REDIRECT --to-port 8001
2、生效 systemctl restart iptables
10、远程端口转发
假设需要配置客户机想通过192.168.1.100机器的8000端口,
访问到外网服务器ip xxx.xxx.xxx.xxx的22 ssh端口
1、登入192.168.1.100机器
2、在/etc/sysconfig/iptables 配置如下规则:
-A PREROUTING -p tcp -m tcp --dport 8000 -j DNAT --to-destination xxx.xxx.xxx:22
-A POSTROUTING -p tcp -m tcp --dport 22 -j SNAT --to-source 192.168.1.100
等价下面这种方式(指定网卡):
-A PREROUTING -p tcp -i eth0 --dport 8000 -j DNAT --to-destination xxx.xxx.xxx:22
-A POSTROUTING -j MASQUERADE
3、生效 systemctl restart iptables
4、找一台客户机测试验证
执行 ssh test@192.168.1.100 -p 8000