iptable
客户端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的表与链
iptables具有Filter, NAT, Mangle, Raw四种内建表
Filter表示iptables的默认表因此如果你没有自定义表那么就默认使用filter表它具有以下三种内建链
INPUT链 – 处理来自外部的数据。OUTPUT链 – 处理向外发送的数据。FORWARD链 – 将数据转发到本机的其他网卡设备上。
NAT表有三种内建链
PREROUTING链 – 处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址destination ip address通常用于DNAT(destination NAT)。POSTROUTING链 – 处理即将离开本机的数据包。它会转换数据包中的源IP地址source ip address通常用于SNATsource NAT。OUTPUT链 – 处理本机产生的数据包。
Mangle表用于指定如何处理数据包。它能改变TCP头中的QoS位。Mangle表具有5个内建链
PREROUTINGOUTPUTFORWARDINPUTPOSTROUTING
Raw表用于处理异常它具有2个内建链
PREROUTING chainOUTPUT 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 -Fiptables -nL###查看之前文件被清除
systemctl restart iptables.service iptables -nL###重启服务后恢复
###内容存储在文件/etc/sysconfig/iptables中vim /etc/sysconfig/iptables###查看策略文件service iptables save#保存当前策略iptables -Fiptables -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 ACCEPTiptables -nLiptables -D INPUT -p tcp --dport22 -j ACCEPT
ssh连接断开 在服务端
iptables -A INPUT -p tcp --dport 22 -j ACCEPTiptables -nL
发现有报错删除优先级更高的
iptables -D INPUT -j REJECTiptables -nL
无报错
[kiosklocalhost ~]$ ssh root172.25.254.101
连接成功
自定义链的管理默认端为例
增加链
iptables -N redhat##增加链redhatiptables -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 3iptables -nLiptables -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 root172.25.254.101
2 仅允许172.25.254.70的ssh端口开放仅不允许拒绝
iptables -Fiptables -nLiptables -A INPUT ! -s 172.25.254.70 -p tcp --dport 22 -j ACCEPT
测试
地址伪装与端口转发
SNAT源地址转换源映射DNAT目的地址转换) 目的映射
环境
服务端des 内网1.1.1.101外网172.25.254.101客户端clientip1.1.1.201网关1.1.1.101
服务端
ip addr show
客户端
ifconfig eth0
查看网关
route -nping通不同网段
地址伪装SNAT
服务端
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source172.25.254.101iptables -t nat -nL ###查看nat域-o out指输出--to-source指转换后的ip
客户端 可以与处在非同网段的主机通信 登陆非同网段主机发现地址被伪装
[kioskclient ~]#ssh root172.25.254.70[kiosklocalhost ~]$ w -i
.端口转发DNAT
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.101iptables -t nat -nL--to--destination ##指定执行DNAT策略后数据包的目的IP-i ##指定数据包从哪一块网卡进入