命令:
管理规则
-A:附加一条规则,添加在链的尾部
-I CHAIN [num]: 插入一条规则,插入为对应CHAIN上的第num条;
-D CHAIN [num]: 删除指定链中的第num条规则;
例如:iptables -D OUTPUT 2
-R CHAIN [num]: 替换指定的规则;
管理链:
-F [CHAIN]:flush,清空指定规则链,如果省略CHAIN,则可以实现删除对应表中的所有链
-P CHAIN: 设定指定链的默认策略;
-N:自定义一个新的空链
-X: 删除一个自定义的空链
-Z:置零指定链中所有规则的计数器;
-E: 重命名自定义的链;
查看类:
-L: 显示指定表中的规则;
-n: 以数字格式显示主机地址和端口号;
-v: 显示链及规则的详细信息
-vv:
-x: 显示计数器的精确值
--line-numbers: 显示规则号码
动作(target):-j
REDIRECT:端口重定向
LOG:日志
MARK:打标记
ACCEPT 允许数据包通过
DROP 丢弃数据包不做处理
REJECT 拒绝数据包,并返回报错信息
SNAT 一般用于 nat 表的 POSTROUTING 链,进行源地址转换
DNAT 一般用于 nat 表的 PREROUTING 链,进行目的地址转换
MASQUERADE 动态源地址转换,动态 IP 时使用
例如:
# iptables 服务器作为网关时,内网访问公网
SNAT 策略应用
:是为局域网共享上网提供接入策略,处理数据包的切入时机是在路由选择后进行,是将局域网外发数据包的源 IP 地址修改为网关服务器的外网接口 IP 地址。
SNAT 策略用在 nat 表的 postrouting 链。
编写 SNAT 策略时,需使用 iptables 命令结合--to-source IP 地址
选项来指定修改后的源 IP 地址。
iptables –t nat -A POSTROUTING -s [内网 IP 或网段] -j SNAT --to [公网 IP]
# 访问 iptables 公网 IP 端口,转发到内网服务器端口
DNAT 应用:是在 Internet 中发布企业内部的服务器,处理数据包的切入时机是在路由选择之前进行。将访问网关外网接口 IP 地址的数据包的目标地址修改为实际提供服务的内部服务器的 IP 地址。
DNAT 策略用在 nat 表的 prerouting 链
使用 iptables 命令设置 DNAT 策略时,需要结合--to-destination IP 地址
选项来指定内部服务器的 IP 地址。
iptables –t nat -A PREROUTING -d [对外 IP] -p tcp --dport [对外端口] -j DNAT --to [内 网 IP:内网端口]
# 本地 80 端口转发到本地 8080 端口
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
# iptables -N clean_in
# iptables -A clean_in -d 255.255.255.255 -p icmp -j DROP
# iptables -A clean_in -d 172.16.255.255 -p icmp -j DROP
# iptables -A clean_in -p tcp ! --syn -m state --state NEW -j DROP
# iptables -A clean_in -p tcp --tcp-flags ALL ALL -j DROP
# iptables -A clean_in -p tcp --tcp-flags ALL NONE -j DROP
# iptables -A clean_in -d 172.16.100.7 -j RETURN
# iptables -A INPUT -d 172.16.100.7 -j clean_in
# iptables -A INPUT -i lo -j ACCEPT
# iptables -A OUTPUT -o lo -j ACCEPT
# iptables -A INPUT -i eth0 -m multiport -p tcp --dports 53,113,135,137,139,445 -j DROP
# iptables -A INPUT -i eth0 -m multiport -p udp --dports 53,113,135,137,139,445 -j DROP
# iptables -A INPUT -i eth0 -p udp --dport 1026 -j DROP
# iptables -A INPUT -i eth0 -m multiport -p tcp --dports 1433,4899 -j DROP
# iptables -A INPUT -p icmp -m limit --limit 10/second -j ACCEPT