客户端(1.1.1.101)
之前需要在客户端配置网关
,使客户端能和服务端相连
客户端(172.25.254.70)
除基础配置外不做其他设置
服务端(1.1.1.101)(172.25.254.101)
开启服务需要先关闭火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
iptables具有Filter, NAT, Mangle, Raw
四种内建表:
- Filter表
Filter表示iptables的默认表,因此如果你没有自定义表,那么就默认使用filter表,它具有以下三种内建链:
INPUT链 – 处理来自外部的数据。 OUTPUT链 – 处理向外发送的数据。 FORWARD链 – 将数据转发到本机的其他网卡设备上。
- NAT表
NAT表有三种内建链:
PREROUTING链 – 处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。 POSTROUTING链 – 处理即将离开本机的数据包。它会转换数据包中的源IP地址(source ip address),通常用于SNAT(source NAT)。 OUTPUT链 – 处理本机产生的数据包。
- Mangle表
Mangle表用于指定如何处理数据包。它能改变TCP头中的QoS位。Mangle表具有5个内建链:
PREROUTING OUTPUT FORWARD INPUT POSTROUTING
- Raw表
Raw表用于处理异常,它具有2个内建链:
PREROUTING chain OUTPUT chain
iptable
-t | 指定表名称 |
---|---|
-n | 不作解析 |
-L | 列出指定表中的策略 |
-A | 增加策略 |
-p | 网络协议 |
–dport | 端口 |
-s | 数据来源 |
-j | 动作 |
ACCEPT | 允许 |
REJECT | 拒绝 |
DROP | 丢弃 |
-N | 增加链 |
-E | 修改链名称 |
-X | 删除链 |
-D | 删除指定策略 |
-I | 插入 |
-R | 修改策略 |
-P | 修改默认策略 |
iptables -t filter -nL #查看filter表中的策略
iptables -F #刷掉filter表中的所有策略,当没有用-t指定表名称时默认时filter(相当于删除)
iptables -F
iptables -nL
###查看之前文件被清除
systemctl restart iptables.service
iptables -nL
###重启服务后恢复
###内容存储在文件/etc/sysconfig/iptables中
vim /etc/sysconfig/iptables
###查看策略文件
service iptables save
#保存当前策略
iptables -F
iptables -nL
###删除且不会恢复
iptables -A INPUT -i lo -j ACCEPT
###允许lo环权限
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
###允许其他主机访问22端口
iptables -A INPUT -s 172.25.254.250 -j ACCEPT
###允许250主机访问本机所有端口
iptables -A INPUT -j REJECT
###拒绝所有主机的数据来源
###删除加入的策略
iptables -D INPUT -s 172.25.254.70 -j ACCEPT
iptables -nL
iptables -D INPUT -p tcp --dport=22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -nL
发现有报错,删除优先级更高的
iptables -D INPUT -j REJECT
iptables -nL
无报错
[kiosk@localhost ~]$ ssh [email protected]
连接成功
增加链
iptables -N redhat ##增加链redhat
iptables -nL
改变链名称
iptables -E redhat westos ##改变链名称
iptables -nL
删除westos链
iptables -X westos ##删除westos链
iptables -nL
iptables -I INPUT -p tcp --dport 80 -j REJECT
###插入策略到INPUT中的第一条(修改优先级)
iptables -nL
iptables -D INPUT 1
###删除INPUT链中的第1条策略
iptables -nL
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190606000521959.png)
iptables -R INPUT 1 -p tcp --dport 80 -j ACCEPT
###修改第一条策略
iptables -nL
iptables -P INPUT DROP
###把INPUT表中的默认策略改为drop
###仅添加172.25.254.70的ssh端口开放
两种方法
1
还原
iptables -F
修改
iptables -D INPUT 3
iptables -nL
iptables -t filter -I INPUT 1 -p tcp -s 172.25.254.70 --dport 22 -j ACCEPT
^ ^ ^ ^ ^ ^ ^
表 链 第几条 协议 来源 端口 动作 (!除了)
iptables -A INPUT -p tcp --dport 22 -j REJECT
ssh [email protected]
2
仅允许172.25.254.70的ssh端口开放(仅不允许拒绝)
iptables -F
iptables -nL
iptables -A INPUT ! -s 172.25.254.70 -p tcp --dport 22 -j ACCEPT
测试
SNAT(源地址转换)源映射
DNAT(目的地址转换) 目的映射
服务端:des
内网:1.1.1.101
外网:172.25.254.101
客户端:client
ip:1.1.1.201
网关:1.1.1.101
服务端
ip addr show
ifconfig eth0
route -n
ping通不同网段
地址伪装(SNAT)
服务端
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source=172.25.254.101
iptables -t nat -nL
###查看nat域
-o out指输出
--to-source指转换后的ip
客户端
可以与处在非同网段的主机通信
登陆非同网段主机,发现地址被伪装
[kiosk@client ~]#ssh [email protected]
[kiosk@localhost ~]$ w -i
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 22 -j DNAT --to-dest 1.1.1.101
###将从eth0进入连接22端口的将ip转换为1.1.1.101
iptables -t nat -nL
--to--destination ##指定执行DNAT策略后数据包的目的IP
-i ##指定数据包从哪一块网卡进入