- 企业7之前的版本没有firewalld这个软件
只有企业7之后才有,3.x的内核以上才有,之前的版本只有iptables软件
准备工作:
将firewalld关闭锁定,打开iptables
systemctl stop firewalld
systemctl disable firewalld
systemctl mask firewalld
systemctl unmask iptables
systemctl start iptables
systemctl enable iptables
iptables -nL 查看列表,默认表是filter表
1.iptables的基本操作
-F | ##刷新 |
---|---|
save | ##保存当前的状态 |
-A | ##添加 只能添加在最后一行 |
-I | ##插入 默认在第一行插入 |
-R | ##替换 不将策略写完整会替换失败, |
-D | ##删除 |
-P | ##修改默认的策略 |
-n | ##显示ip,不加-n会显示主机名,反向解析,PTR记录 |
-t | ##指定表的名称 |
-L | ##指定表中的策略 |
-p | ##网络协议 |
–dport | ##端口 |
-s | ##数据来源 |
-j | ##动作 |
(1) iptables -F -----> 刷新,之前的信息都没有了
iptables -F
iptables -nL
systemctl restart iptables
重启服务又会出现
(2) service iptables save ##保存当前的状态
iptables -F
iptables -nL
service iptables save ##保存当前的状态
systemctl restart iptables ## 重启服务后查看
iptables -nL ##是保存之前查看到的状态
(3) iptables -P INPUT DROP ## 修改INPUT链的默认状态为丢弃
iptables -nL
测试:真实主机连接当前主机时不会有反响
iptables -P INPUT ACCEPT
iptables -nL
测试:真实主机连接当前主机时可以连接上
(4) -A ##添加
iptables -t filter -A INPUT -p tcp --dport 22 -j REJECT
iptables -nL
添加成功真实主机访问会被拒绝
iptables -t filter -A INPUT -p tcp --dport 22 -s 172.25.254.27 -j ACCEPT
##添加允许68主机连接
iptables -nL
测试添加成功,但真实主机还是无法连接,因为先读取第一行
(5) -D ##删除
iptables -D INPUT 2 ##删除第二行
iptables -nL
删除成功
(6) -I ##插入到指定位置
iptables -t filter -I INPUT 1 -s 172.25.254.27 -p tcp --dport 22 -j ACCEPT
iptables -nL
插入成功
测试:真实主机可以连接上
(7) -R ##替换
iptables -t filter -R INPUT 1 -s 172.25.254.29 -p tcp --dport 22 -j ACCEPT
iptables -nL
替换成功
(8) -N ##添加链
iptables -N redhat
iptables -nL
添加成功
(9) -E ##修改链名
iptables -E redhat WESTOS
iptables -nL
修改成功
(10) -X ##删除链
iptables -X WESTOS
iptables -nL
删除成功
2.iptables的火墙伪装
1
1.1.1.227主机ping 172.25.254.68主机ping不通
[root@localhost ~]# ping 172.25.254.68
2 双网卡主机设置地址转换
[root@shenzhen Desktop]# iptables -t nat -nL
[root@shenzhen Desktop]# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.127
##意思是只要有人通过服务端的eth0网卡,就对他的ip做源地址转换,
将他的ip转换成 172.25.254.127(路由后的地址转换)
iptables -nL -t nat
添加成功
3 测试:
1.1.1.227主机再次 ping 172.25.254.68主机可以ping通
ssh 连接68主机,连接成功
[root@localhost Desktop]# ping 172.25.254.68
[root@localhost Desktop]# ssh root@172.25.254.68
4 连接之后w -i查看
[root@foundation68 ~]# w -i
查看的是 172.25.254.127主机正在连接68主机,而这时真正连接68主机的是 1.1.1.227主机
[root@foundation68 ~]# ssh root@172.25.254.127连接
链接到的是127主机,但我们是想通过127主机连接真正连接68主机的 1.1.1.227主机
要做到这一步的话需要做端口转发
3.端口转发
1 双网卡主机做目的地地址转换
[root@shenzhen Desktop]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-dest 1.1.1.227
##意思是只要有人要通过有路由功能的主机的eth0网卡,
就对这个ip做目的地地址转换,将自己的22端口转发给 1.1.1.227 这台主机
[root@shenzhen Desktop]# iptables -t nat -nL
查看添加成功
2 测试
[root@foundation68 ~]# ssh root@172.25.254.127
[root@localhost ~]# ifocnfig
##连接上68主机的 1.1.1.227主机,用68主机来连接查看到的ip 172.25.254.127
连接成功,连接之后查看ip,查看到的是真正连接68的主机的ip即 1.1.1.227(路由前的地址转换)
*iptables和firewalld的区别
做完端口转发之后iptables的客户端可以连接到68主机,不会出现跳转到自己的情况
这里做的是源地址转换