Linux IPTables
Netfilter(内核):
chain(链、过滤点):INPUT、FORWARD、OUTPUT、PREROUTING、POSTROUTING
表(功能):filter、nat、mangle
用户通过iptables命令来管理netfilter模块
iptables通过规则对数据进行访问控制
一个规则占用一行
规则按顺序排列 (在前面的先生效)
每个数据包按规则顺序依依匹配,如果有匹配的,则立即执行该规则指定的动作(允许、丢弃)
查看当前设置:
iptables -L
service iptables status
插入: -I (TABLE)
删除: -D (TABLE)
动作(-j):
ACCEPT
DROP
REJECT
筛选:
基于IP地址
-s 源IP地址
-d 目标IP地址
基于接口
-i eth0 收接口
-o eth1 发接口
基于协议及端口
-p (tcp\udp\icmp) --(dport\sport) x
排除参数 '!'
NAT:
进行路由跳转(PREROUNTING) -j DNAT --to-dest xxx.xxx.xxx.xxx
对出向数据跳转(OUTPUT) -j DNAT --to-dest xxx.xxx.xxx.xxx
对数据流伪装(POSTROUNTING) -o eth0 -j MASQUERADE (将数据伪装成eth0的IP,例如公网IP)
隐藏源IP地址(POSTROUNTING) -j SNAT --to-sources xxx.xxx.xxx.xxx
用iptables命令设置不会永久保存,需要要写入文件
1、iptables规则保存在配置文件:
/etc/sysconfig/iptables
2、以下命令可以将当前iptables配置保存到配置文件中:
service iptables save
IP地址格式 xxx.xxx.xxx.xxx/(子网掩码)
命令示范:
插入一个iptables规则:
iptables -I INPUT 3 -p tcp --dport 80 -s 192.168.1.0/24 -j DROP
iptables -I INPUT 3 -p tcp --dport 80 -s '!' 192.168.1.0/24 -j DROP
删除一个iptables规则:
iptables -D INPUT 3
iptables -D INPUT -p tcp --dport 80 -s 192.168.1.0/24 -j DROP
配置一个NAT伪装:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE