一、iptables应用:
1.规则添加:
| 类别 | 条件类型 | 用法 | 示例 | |
|---|---|---|---|---|
| 通用匹配 | 协议匹配 | -p 协议名 可以是tcp、udp或者icmp。 | iptables -I INPUT -p icmp -j DROP | |
| 地址匹配 | -s 源地址、-d 目的地址 | iptables -A FORWARD -s 192.168.1.11 -j REJECT | ||
| 接口匹配 | -i 入站网卡、-o 出站网卡 | ipables -t nat -I PROROUTING -i ens33 条件 iptables -t nat -I POSTROUTING -I OUPUT -o ens33 条件 | ||
| 隐含匹配 | 端口匹配 | —sport 源端口、—dport 目的端口 | iptables -R INPUT 1 -p tcp —dport 80 -j ACCEPT | |
| TCP标记匹配 | —tcp-flags 检查范围 被设置的标记 | |||
| ICMP类型匹配 | —icmp-type [ICMP类型 两个参数] | 习惯使用 -p tcp —syn | ||
| 连续端口 | —dport 端口:端口 | iptables -I INPUT -p tcp —dport 8000:9000 -j ACCEPT | ||
| 显式匹配 | 多端口匹配(离散) | -m multiport {—sports \ | —dports } 端口列表 | iptables -I INPUT 2 -p tcp -m multiport —dport 80,8080,3306 -j ACCEPT |
| IP范围匹配 | -m iprange —src-range IP范围 | 192.168.12.2-192.168.12.200 | ||
| MAC地址匹配 | -m mac —mac-source MAC地址 | 04 | ||
| 状态匹配 | -m state —state 连接状态 (NEW新连接、ESTABLISHED双向传输、RELATED已连接的数据包,后续的操作、INVAILD未知链接,一般DROP) | iptables -I INPUT -m -state —state RELATED,ESTABLISHED |
2.规则保存:
iptables中设置的规则会因为重启iptables而消失。
systemctl restart iptables 验证是否重启后丢失
如何保存规则:
(1)iptables-save > /etc/sysconfig/iptables
(2)service iptables save
3.NAT表操作:
完成各种转发配置:通过prerouting和postrouting 实现NAT操作
完成nat配置之前必须设置系统转发:
(1)配置/etc/sysctl .conf 文件
1.添加内容
vi sysctl.conf
net.ipv4.ip_forward=1
2.加载文件
sysctl -p
(2)直接修改/proc/sys/net/ipv4/ip_forward的值
echo 1 > /proc/sys/net/ipv4/ip_forward
(3)查看:
cat /proc/sys/net/ipv4/ip_forward 如果值为1,则开启转发
(4)配置nat表实现本机端口转发:
将8080端口映射到本机88端口:
iptables -t nat -I PREROUTING -p tcp --dport 88 -j REDIRECT --to-port 8080
将指定ip的8080端口请求映射到88端口:
iptables -t nat -I PREROUTING -p tcp -s 192.168.102.50 --dport 88 -j REDIRECT --to-port 8080
(5)windows通过linux指定端口转发woniunote.com请求:
windows->linux
iptables -t nat -I PREROUTING -p tcp -d 192.168.32.136 —dport 88 -j DNAT —to 117.78.49.99:80
Linux—> woniunote.com
iptables -t nat -I POSTROUTING -p tcp -d 117.78.49.99 —dport 80 -j SNAT —to 192.168.32.136:88
4.SNAT
snat : 源地址转换:
场景:实现一个内网中主机通过iptables设置snat成功访问外网。
准备工作:
(1)在iptables所在centos上添加网卡:
(2)重启linux,进入/etc/sysconfig/network-scripts/目录
1.复制ifcfg-ens33 改名为ifcfg-ens37 2.修改ens37配置文件
(3)配置仅主机模式centos
(4)配置iptables:
1.检查系统转发:
cat /proc/sys/net/ipv4/ip_forward 是否为1
2.开filter中的转发:
iptables -I FORWARD -j ACCEPT
3.配置nat表的POSTROUTIING链
iptables -t nat -I POSTROUTING -o ens33 -s 192.168.21.100 -j SNAT —to 192.168.32.136
5.DNAT:
dnat: 目的地址转换:
场景:windows通过输入防火墙ip:port 成功访问内网中web服务
iptables配置:
iptables -t nat -I PREROUTING -p tcp -i ens33 -d 192.168.32.136 —dport 88 -j DNAT —to 192.168.21.100:80