1.命令管理(查看链规则的内容)
[root@base1 Desktop]# systemctl stop firewalld
[root@base1 Desktop]# yum install -y iptables-services
[root@base1 Desktop]# systemctl start iptables
[root@base1 Desktop]# systemctl enable iptables
[root@base1 Desktop]# iptables -L # -L 表示列出所有
[root@base1 Desktop]# systemctl stop firewalld
[root@base1 Desktop]# yum install -y iptables-services
[root@base1 Desktop]# systemctl start iptables
[root@base1 Desktop]# systemctl enable iptables
[root@base1 Desktop]# iptables -L # -L 表示列出所有规则
[root@base1 Desktop]# iptables -nL # -n 表示不做解析
[root@base1 Desktop]# iptables -t nat -nL # 指定查看nat表,-t 表示指定表
[root@base1 Desktop]# iptables -t mangle -nL # 指定查看mangle表
[root@base1 Desktop]# iptables -F # 刷掉所有规则,即清除
[root@base1 Desktop]# iptables -L # 再次查看
[root@base1 Desktop]# systemctl restart iptables.service # 但是重启服务之后,规则又会出现
[root@base1 Desktop]# iptables -L
[root@base1 Desktop]# vim /etc/sysconfig/iptables # 是因为所有的规则全部被保存在了文件里
[root@base1 Desktop]# iptables -F # 刷新策略
[root@base1 Desktop]# service iptables save # 将刷新后的内容保存到文件里
[root@base1 Desktop]# systemctl restart iptables.service # 重启服务也不会影响
[root@base1 Desktop]# iptables -L # 查看,保存成功
[root@base1 Desktop]# vim /etc/sysconfig/iptables # 文件内容不会改变
2.修改火墙策略
[root@base1 Desktop]# iptables -nL
[root@base1 Desktop]# iptables -P INPUT DROP # 改变规则为DROP
[root@base1 Desktop]# iptables -nL
[root@base1 Desktop]# iptables -N LINUX # 添加自定义的链LINUX
[root@base1 Desktop]# iptables -nL
扫描二维码关注公众号,回复:
5121167 查看本文章
[root@base1 Desktop]# iptables -E LINUX linux # 修改链的名称
[root@base1 Desktop]# iptables -nL
3.添加火墙策略
[root@base1 Desktop]# iptables -t filter -A INPUT -s 172.25.254.78 -p tcp --dport 22 -j REJECT # 在filter表中添加策略,不允许172.25.254.78这台主机连接我
[root@base1 Desktop]# iptables -nL
# 测试
[root@foundation78 ~]# ssh [email protected] # 拒绝连接
ssh: connect to host 172.25.254.125 port 22: Connection refused
[root@base1 Desktop]# iptables -A INPUT -j REJECT # 任何人访问我的时候都被拒绝
[root@base1 Desktop]# iptables -t filter -A INPUT -s 172.25.254.78 -p tcp --dport 22 -j ACCEPT # 只允许78这台主机连接我
[root@base1 Desktop]# iptables -nL
# 在78这台主机上测试,不生效,是因为默认度的规则是第一条,后面的规则不生效
[root@foundation78 ~]# ssh [email protected] s
sh: connect to host 172.25.254.125 port 22: Connection refused
在服务端修改
[root@base1 Desktop]# iptables -I INPUT -s 172.25.254.78 -p tcp --dport 22 -j ACCEPT # 把这条规则插入到第一条,-I表示插入,默认是1
[root@base1 Desktop]# iptables -D INPUT 3 # 删除第3条策略
[root@base1 Desktop]# iptables -nL
[root@base1 Desktop]# iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT # 设置使连接过的和正在使用的不读取,那么在后边新写入的策略就会被读取,以此类推,新写入的策略总能被读取到
iptables -A INPUT -m state –state NEW -p tcp –dport 22 -j ACCEPT
[root@base1 Desktop]# iptables -A INPUT -m state –state NEW -p tcp –dport 53 -j ACCEPT
[root@base1 Desktop]# iptables -A INPUT -m state –state NEW -p tcp –dport 80 -j ACCEPT
[root@base1 Desktop]# iptables -A INPUT -m state –state NEW -p tcp –dport 443 -j ACCEPT
[root@base1 Desktop]# iptables -A INPUT -m state –state NEW -p tcp –dport 3260 -j ACCEPT
[root@base1 Desktop]# iptables -A INPUT -m state –state NEW -p -i lo -j ACCEPT
[root@base1 Desktop]# iptables -nL
[root@base1 Desktop]# iptables -F
[root@base1 Desktop]# service iptables save # 保存策略到文件中
[root@base1 Desktop]# cat /etc/sysconfig/iptales
# 在78这台主机上测试,连接成功
[root@foundation78 ~]# ssh [email protected]
[email protected]'s password: Last login: Sun Dec 9 11:05:36 2018 from 172.25.254.178
[root@base1 ~]# exit
在服务端
[root@base1 Desktop]# iptables -R INPUT 2 -j ACCEPT # 把第二条策略改为ACCEPT
[root@base1 Desktop]# iptables -nL
[root@base1 Desktop]# iptables -F
[root@base1 Desktop]# iptables -A INPUT ! -s 172.25.254.78 -p tcp --dport 22 -j ACCEPT
[root@base1 Desktop]# iptables -nL
4.实现端口转发和地址伪装(在nat表中实现)
1.地址伪装
[root@base1 Desktop]# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.125 # 从eth0出去的数据做SNAT转换为172.25.254.125
[root@base1 Desktop]# iptables -t nat -nL
[root@base1 Desktop]# sysctl -a | grep ip_froward # 查看内核IP路由功能功能是否打开、
# 在客户端测试
[root@base3 Desktop]# ssh [email protected] # 此处输入的密码是转换后主机的密码
[email protected]'s password:
Last login: Sun Dec 9 12:52:27 2018 from 172.25.254.125
[root@foundation78 ~]# w -i | cat
2.端口转发
[root@base1 Desktop]# iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-dest 192.168.0.225 # 所有从eth0进来的数据都转发到192.168.0.225这台主机上
[root@base1 Desktop]# iptables -t nat -nL
# 测试
[root@foundation78 ~]# ssh [email protected]
[email protected]'s password: # 此处输入的密码是转发到的主机上的密码
[root@base3 ~]# ifconfig # 查看,转发成功