- iptables [-t 表] -命令 匹配 操作
- 参数
- t # 要操作的匹配表
- 命令
- P # 策略, INPUT等
- A # append, 添加
- I 1 # 在第2条前添加
- D 1 # delete, 删除
- R 1 # 替换
- L # list 显示
- n # 端口以数字显示
- v # verbose, 显示更多信息
- F # flush
- X # 清除自定chain
- Z # 清除统计数
- 规则
- p # 协议
- i # 指定网卡流入
- o # 指定网卡流出
- s # 来源ip, !表示排除
- d # 目标ip
- -sport # 源端口
- -dport # 目标端口
- m # 使用模块, 会根据-p选择模块
- 动作
- 四表(table)
- raw # 跟踪
- mangle # 标记
- nat # 修改ip、port
- filter # 过滤, 默认
- 五链(chain)
- PREROUTING
- FORWORD # INPUT前转发到POSTROUTING
- INPUT
- OUTPUT
- POSTROUTING
- 策略(policy)
- ACCEPT # 通过
- REJECT # 拒绝,返回数据
- 返回数据包
- ICMP port-unreachable
- ICMP echo-reply
- tcp-reset
- iptables -A INPUT -p TCP —dport 22 -j REJECT —reject-with ICMP echo-reply
- DROP # 丢弃
- REDIRECT # 导向端口(PNAT)
- iptables -t nat -A PREROUTING -p tcp —dport 80 -j REDIRECT—to-ports 8081
- MASQUERADE # 改写来源ip为本机ip, 可指定目标端口范围
- iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE —to-ports 21000-31000
- LOG # 日志, 记在/var/log
- iptables -A INPUT -p tcp -j LOG —log-prefix “input packet”
- ULOG
- SNAT # 改写源地址, 只适用POSTROUTING
- iptables -t nat -A POSTROUTING -p tcp-o eth0 -j SNAT —to-source 192.168.10.15-192.168.10.160:2100-3200
- DNAT # 改写目标地址, 只适用POSTROUTING
- iptables -t nat -A PREROUTING -p tcp -d 15.45.23.67 —dport 80 -j DNAT —to-destination 192.168.10.1-192.168.10.10:80-100
- TOS
- MIRROR # 对调源ip与目标ip后返回
- QUEUE # 封包入队列待处理,实现功能如:计算联机费用
- RETURN # 退出当前规则链, 返回主规则链
- TTL
- MARK # 对包做标记数字
- iptables -t mangle -A PREROUTING -p tcp —dport 22 -j MARK —set-mark 22
- 规则(rule) # 自定义的条件
- 配置文件
- /etc/sysconfig/iptables
- /usr/libexec/iptables/iptables.init
- rules.v4 # 自定义配置
- filter
- :INPUT ACCEPT [186:19951]
- :FORWARD ACCEPT [0:0]
- :OUTPUT ACCEPT [71:11164]
- A INPUT -p tcp -m tcp —dport 22 -j ACCEPT
- A INPUT -p tcp -m tcp —dport 23 -j ACCEPT
- A INPUT -p tcp -m tcp —dport 24 -j ACCEPT
- COMMIT
- 命令
- systemctl enable iptables.service
- service iptables save
- service iptables restart
- iptables-restore < rules.v4
- 案例
- 关iptables
- service iptables stop
- chkconfig iptables off
- 查看
- iptables -L -n -v —line-numbers
- 查nat表
- flush, 生效
- service命令
- service iptables save
- service iptables stop
- service iptables start
- service iptables restart
- 开机启动
- /etc/network/if-pre-up.d/iptables
- iptables-restore < rules.v4
- 插入规则
- iptables -I INPUT 2 -s 202.54.1.2 -j DROP
- 删除规则
- 开放所有input/output
- iptables -P INPUT ACCEPT
- iptables -P OUTPUT ACCEPT
- 开放input/output tcp 22
- iptables -A INPUT -p tcp —dport 22 -j ACCEPT
- iptables -A OUTPUT -p tcp —sport 22 -j ACCEPT
- vpn转发
- iptables -t nat -A POSTROUTING -s 192.168.252.0/24 -j SNAT —to-source 10.171.83.146
- 屏蔽私有地址
- iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j DROP
- iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
- 屏蔽ip
- iptables -A INPUT -s 1.2.3.4 -j DROP
- iptables -A INPUT -s 192.168.0.0/24 -j DROP
- iptables -A OUTPUT -d 192.168.1.0/24 -j DROP
- iptables -A OUTPUT -o eth1 -d 192.168.1.0/24 -j DROP
- 屏蔽端口
- iptables -A INPUT -p tcp -s 1.2.3.4 —dport 80 -j DROP
- iptables -A INPUT -i eth1 -p tcp -s 192.168.1.0/24 —dport 80 -j DROP
- 记录并屏蔽
- iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG —log-prefix “IP_SPOOF A: ”
- iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
- mac屏蔽
- iptables -A INPUT -m mac —mac-source 00:0F:EA:91:04:08 -j DROP
- *only accept traffic for TCP port # 8080 from mac 00:0F:EA:91:04:07 *
- iptables -A INPUT -p tcp —destination-port 22 -m mac —mac-source 00:0F:EA:91:04:07 -j ACCEPT
- 屏蔽icmp
- iptables -A INPUT -p icmp —icmp-type echo-request -j DROP
- iptables -A INPUT -i eth1 -p icmp —icmp-type echo-request -j DROP
- 开启范围端口
- iptables -A INPUT -m state —state NEW -m tcp -p tcp —dport 7000:7010 -j ACCEPT
- 开启范围ip
- iptables -A INPUT -p tcp —destination-port 80 -m iprange —src-range 192.168.1.100-192.168.1.200 -j ACCEPT
- nat
- iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT —to 123.4.5.100
- 改写来自192.168.1.0/24的包, 源ip为123.4.5.100
- iptables -t nat -A PREROUTING -s 192.168.1.0/24 -i eth1 -j DNAT —to 123.4.5.100
- 改写来自192.168.1.0/24的包, 目标ip为123.4.5.100
- iptables -t nat -A POSTROUTING -s 172.27.0.0/16 -d 10.0.0.1 -p tcp —dport 80 -j SNAT —to-source MASQUERADE
- 改写来自172.27.0.0/16去向10.0.0.1:80的tcp包, 源ip为本机ip
- iptables -t nat -A PREROUTING -d 192.168.1.1 -p tcp —dport 80 -j DNAT —to-destination 10.0.0.1
- 改写去向192.168.1.1:80的tcp包, 目标ip为10.0.0.1