--------iptables------
Iptables服务与Firewalld服务都是用来定义防火墙规则功能的“防火墙管理工具”。
iptables命令用于管理防火墙的规则策略。
三表五链:
**filter表:确定是否放行该数据包(过滤)
**nat表:修改数据包中的源、目标IP地址或端口
**mangle表:为数据包设置标记
filter表:INPUT:处理入站的数据包
OUTPUT:处理出站的数据包
FORWARD:处理转发的数据包,进行了内核解析
NAT表:
PREROUTING:在进行路由选择前处理数据包
INPUT:处理入站的数据包
OUTPUT:处理出站的数据包
FORWARD:处理转发的数据包
POSTROUTING:在进行路由选择后处理数据包
首先关闭firewalld服务
安装iptables服务
开启iptables服务
1.iptables命令:
iptables
-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表
service iptables save ###保存当前策略
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 ###y允许250主机访问本机所有端口
iptables -A INPUT -j REJECT ####拒绝所有主机的数据来源
iptables -N redhat ####增加链redhat
iptables -E redhat westos ###改变链名称
iptables -X westos ###删除westos链
iptables -D INPUT 2 ###删除INPUT链中的第二条策略
iptables -I INPUT -p tcp --dport 80 -j REJECT ###插入策略到INPUT中的第一条
iptables -R INPUT 1 -p tcp --dport 80 -j ACCEPT ###修改第一条策略
iptables -P INPUT DROP ####把INPUT表中的默认策略改为drop
2.数据包状态的策略
数据包状态:
RELATED :表示该信息包正在启动新连接,以及它与已建立的连接相关联
ESTABLISHED :指出该信息包属于已建立的连接,该连接一直用于发送和接收信息包并且完全有效
NEW : 意味着该信息包已经或将启动新的连接,或者它与尚未用于发送和接收信息包的连接相关联
iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT ##允许RELATED与ESTABLISHED包(当服务状态为related或established时,不需要下面的验证)
iptables -A INPUT -i lo -m state –state NEW -j ACCEPT ##允许NEW包
iptables -A INPUT -p tcp –dport 22 -m state –state NEW -j ACCEPT ##允许NEW包访问22端口(ssh服务)
iptables -A INPUT -p tcp –dport 80 -m state –state NEW -j ACCEPT ##允许NEW包访问80端口
iptables -A INPUT -p tcp –dport 443 -m state –state NEW -j ACCEPT ##允许NEW包访问443端口
iptables -A INPUT -p tcp –dport 53 -m state –state NEW -j ACCEPT ##允许NEW包访问53端口
iptables -A INPUT -j REJECT ##拒绝所有主机数据来源
防火墙路由设置:
iptables -F #####刷掉之前的策略
sysctl -a | grep forward #####查看内部网卡IP转发功能是否开启
echo “net.ipv4.ip_forward = 1” >> /etc/sysctl.conf ####允许双网卡内部通信
sysctl -p ######重新加载
desktop端:
eth0 =172.25.254.159
eth1 =172.25.0.10
server端:
eth0 =172.25.0.11
GATEWAY=172.25.0.10 ###设置其中网关为路由主机的同网段ip
iptables -t nat -A PREROUTING -i eth1 -j DNAT –to-dest 172.25.0.11 ####在nat表中的PREROUTING 链添加策略将外网转换为内网,源地址转换
iptables -t nat -A POSTROUTING -o eth1 -j SNAT –to-source 172.25.254.159 ######在nat表中的POSTROUTING链添加策略将内网转换为外网,目的地址转换
测试:连接另外一台不同网段ip的主机