建立一个新的链 ( -N)
删除一个链 ( -X)
改变一个内建(默认)规则链 ( -P)
列出链中的所有规则 ( -L)
xx一个链中的所有规则 ( -F)
对规则的基本操作:
-A 在链尾加一条规则
-I 插入规则
-D 删除规则
-R 替代一条已存在的规则
-L 列出所有规则
对链与规则的目标动作:
ACCEPT 接收该数据报
DROP 丢弃该数据报
REJECT 拒绝该数据报
对规则的基本匹配条件:
-p 指定协议 (tcp / udp/ icmp)
-s 源地址 (IP Address / mask Len)
-d 目的地址 (IP Address / mask Len)
-i 数据报输入接口
-o 数据报输出接口
--sport 源端口协议 (tcp / upd / icmp)
--dport 目的端口协议 (tcp / upd / icmp)
附:
PREROUTING 用于DNAT 只能选择进入接口 ( -i )
POSTROUTING用于SNAT 只能选择送出接口 ( -o )
在使用iptables 前装载 NAT 模块
modprobe iptable_nat (主要模块)
modprobe ip_contrack
modprobe ip_contrack_ftp
modprobe ip_nat_ftp
基本语法:
iptables -t table -Operation chain -j target
例:允许所有IP到本机的SMTP port 的连接
iptables -t filter -A INPUT -p tcp --dport smtp -j ACCEPT
删除一个规则:
iptables -t filter/nat/mangle -D INPUT/OUTPUT/FORWARD/… 1/2/3/…
删除所有规则:
iptables -t filter/nat/mangle -F
删除一个外加的链:
iptables -t filter/nat/mangle -X (外加的链)
检查当前链状态:
iptables -L -t filter/nat/mangle or iptables -L (只对filter有效)
改变一个链的规则:
iptables -t filter/nat/mangle -P INPUT/OUTPUT/FORWARD/…
不允许所有电脑ping my server:
iptables -A INPUT -p icmp -j DROP
允许内网ssh连server:
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport ssh -j ACCEPT
阻塞外网对内网server的ssh连接:
iptables -A INPUT -s ! 192.168.0.0/24 -p tcp --dport ssh -j DROP
阻塞向外网的的telnet连接
iptables -A OUTPUT -p tcp --dport telnet -j DROP
禁止192.168.0.4的IP访问所有www:
iptables -A FORWARD -s 192.168.0.4 -p tcp --dport www -j REJECT
禁止某NIC’s Address 不能访问所有的www:
iptables -A FORWARD -p tcp -m mac -- mac-source <mac adderss> -d 0.0.0.0 - --dport www -j DROP
在NAT(-nat)表中加入一条规则,在路由之前(-A PREROUTING) 指向1.2.3.4(-d 1.2.3.4)8080 port (-dport 8080)的tcp包(-p tcp)目标地址 (-j DNAT)被重定向到192.168.0.4的80port(--to 192.168.0.4:80):
iptables -t nat -A PREROUTING -p tcp -d 1.2.3.4 - - dprot 8080 -j DNAT - - to 192.168.0.4:80
SNAT的特例为伪装(MASQUERADE)只用于动态分配IP地址的情况(静态IP地址请用SNAT)
伪装所有ppp0送出的东西:
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
伪装来源为192.168.0.4的www协议到ppp0送出到202.64.164.247的80端口:
iptables -t nat -A POSTROUTING -s 192.168.0.4 -p tcp --sport www -o ppp0 -j MASQUERADE --to 202.64.164.247
附内核的编辑:
/usr/src/kernel’s version/make menuconfig
/usr/src/kernel’s version/make xconfig
/usr/src/kernel’s version/make config
内核配置完后运行:
make bzImage
make modules
make modules_install