什么时iptables?
概念:iptables 是用来设置、维护和检查Linux内核的IP包过滤规则的。可以定义不同的表,每个表都包含几个内部的链,也能包含用户定义的链。每个链都是一个规则列表,对对应的包进行匹配:每条规则指定应当如何处理与之相匹配的包。这被称作'target'(目标),也可以跳向同一个表内的用户定义的链。防火墙的规则指定所检查包的特征,和目标。如果包不匹配,将送往该链中下一条规则检查;如果匹配,那么下一条规则由目标值确定.该目标值可以是用户定义的链名,或是某个专用值,如ACCEPT[通过],DROP[删除],QUEUE[排队],或者 RETURN[返回]。
防火墙处理数据包的四种方式:
1.ACCEPT 允许数据包通过
2.DROP 直接丢弃数据包,不给任何回应信息
3.REJECT 拒绝数据包通过,必要时会给数据发送端一个响应的信息。
4.LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则
iptables的四表五链
Filter表:过滤数据包
NAT表:用于网络地址转换(IP、端口)
Mangle表:修改数据包的服务类型、TTL、并且可以配置路由实现QOS
Raw表:决定数据包是否被状态跟踪机制处理
五条链分别存放什么链路的规则?
INPUT链——进来的数据包应用此规则链中的规则
OUTPUT链——外出的数据包应用此规则链中的规则
FORWARD链——转发数据包时应用此规则链中的规则
PREROUTING链——对数据包作路由选择前应用此链中的规则
POSTROUTING链——对数据包作路由选择后应用此链中的规则
iptables的基本命令
-A 在指定链的末尾添加(append)一条新的规则
-D删除(delete)指定链中的某一条规则,可以按规则序号和内容删除
-I在指定链中插入(insert)一条新的规则,默认在第一行添加
-R修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换
-L列出(list)指定链中所有的规则进行查看
-F清空(flush)
-N新建(new-chain)一条用户自己定义的规则链
-X删除指定表中用户自定义的规则链(delete-chain)
-P设置指定链的默认策略(policy)
-n使用数字形式(numeric)显示输出结果
-v查看规则表详细信息(verbose)的信息
-V查看版本(version)
-h获取帮助(help)
iptables命令的使用
- 开启服务
systemctl stop firewalld systemctl musk firewalld yum install iptables-services systemctl start iptables systemctl enable iptables
- 清空规则(-F)
- iptables的配置文件
vim /etc/sysconfig/iptables
- 开放指定文件的端口
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT #允许本地回环接口(即运行本机访问本机)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #允许已建立的或相关连的通行
iptables -A OUTPUT -j ACCEPT #允许所有本机向外的访问
iptables -A INPUT -p tcp --dport 22 -j ACCEPT #允许访问22端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT #允许访问80端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT #允许ftp服务的21端口
iptables -A INPUT -p tcp --dport 20 -j ACCEPT #允许FTP服务的20端口
iptables -A INPUT -j reject #禁止其他未允许的规则访问
iptables -A FORWARD -j REJECT #禁止其他未允许的规则访问
屏蔽IP
iptables -I INPUT -s 123.45.6.7 -j DROP #屏蔽单个IP的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP #封整个段即从123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP #封IP段即从123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 123.45.6.0/24 -j DROP #封IP段即从123.45.6.1到123.45.6.254的命令是
查看已经添加的iptables规则
地址伪装
在desktop中设置两个网卡,ip分别为eth0:172.25.254.117和eth1:192.168.0.117
在server中设置ip为192.168.0.217,网关设置为192.168.0.117
在desktop上
[root@localhost Desktop]# iptables -F
[root@localhost Desktop]# iptables -t nat -nL
[root@localhost Desktop]# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.117
[root@localhost Desktop]# iptables -t nat -nL
[root@localhost Desktop]# vim /etc/sysctl.conf
加入:net.ipv4.ip_forward = 1
[root@localhost Desktop]# sysctl -p
net.ipv4.ip_forward = 1
在server上
在ping主机172.25.254.17
地址转换
[root@localhost Desktop]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-dest 192.168.0.217 ##伪装ip为217
在主机连117虚拟机时,转换到217虚拟机