快速理解iptables入门教程
一、iptables安装
一般系统已经自带,没有安装请参照下面安装 (redhat系):Yum install iptables (debian系)Sudo apt-get install iptables iptables -version查看版本 iptables v1.4.14 即为OK,已正常安装。iptables v1.x.x即为版本号。二、三表五链
三个表: Filter、NAT、Mangle。默认使用Filter。
Filter:用于一般信息包过滤,包含了INPUT、OUTPUT、FORWARD链。
NAT:用于需转发(NAT)的信息包,包含了OUTPUT、PREROUTING、POSTROUTING。
Mangle:包含一些规则来标记用于高级路由,包含PREROUTING和OUTPUT链。如查信息包及其头内进行了任何更改,则使用该表。
五个内置链:
PREROUTING 数据包进入路由表之前,用于修改目的地址(DNAT)。
INPUT 通过路由表后目的地为本机,匹配目的 IP 是本机的数据包。
FORWARD 通过路由表后,目的地不为本机,匹配穿过本机的数据包。
OUTPUT 由本机产生,向外转发。
POSTROUTING 发送到网卡接口之前,用于修改源地址 (SNAT)。
iptables(netfilter)五条链相互关系
三表五链处理过程中的位置
三、目标(target)
ACCEPT (-j ACCEPT) 当信息包与ACCEPT目标的规则完全匹配时,会被接受即允许前往目的地,并将停止遍历链。
DROP (-j DROP) 当信息包与DROP目标的规则完全匹配时,会阻塞该包即丢弃该包。
REJECT (-j REJECT) 该目标工作方式与DROP目标相同,比DROP好的是REJECT不会在服务器和客户机上留下死套接字,并将错误消息发回给信息包的发送方。
RETURN (-j RETURN) 该目标是让与该规则相匹配的信息包停止遍历所有链,如果该链是INPUT之类的链,则使用该链的缺省策略处理该信息包。
还有其它的高级点的目标,如LOG、REDIRECT、MARK、MIRROR和MASQUERADE等。
四、命令和语法
iptables基本语法 iptables [-t 表名] -命令 -匹配 -j 动作/目标 iptables内置了filter、nat和mangle三张表,我们可以使用-t参数来设置对哪张表生效哈~也可以省略-t参数,则默认对filter表进行操作。 命令(command): -I (--insert) 插入 -A(--append)追加 -D(--delete)删除 -P(--policy)策略 匹配(match): -p(--protocol)协议 -s(--source)源 -d(--destination)目标 --in-interface eth2短格式:-i eth2 表示从eth2进--out-interface eth0短格式:-o eth0 表示从eth0出 (--sport、--dport)来源端口、目的端口 附加模块使用-m来匹配
按包状态匹配 (state)
按来源 MAC 匹配(mac)
按包速率匹配 (limit)
多端口匹配 (multiport)
配置SNAT命令基本语法
iptables -t nat -A POSTROUTING -o 网络接口 -j SNAT --to-source IP地址
配置DNAT命令基本语法
iptables -t nat -A PREROUTING -i 网络接口 -p 协议 --dport 端口 -j DNAT --to-destination IP地址
五、策略保存
六、常用实用策略
该内容来自其互联网。
注意:确保规则循序正确,弄清逻辑关系,学会时刻使用 -vnL
先开启转发:echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -F 清除预设表filter中的所有规则链的规则
iptables -X 清除预设表filter中使用者自定链中的规则
iptables -Z 清除预设表filter中使用计数器
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
可根据需求设置默认策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
这样默认把INPUT 、FORWARD 设置成DROP,只有OUTPUT是ACCEPT,如需要也可以设置成DROP。
(以后再来完成)按拓扑图进行一个案例设置:
FTP
SSH
MYSQL
NAT1-3389
NAT2-web