数据包流向
PREROUTING->FORWARD->POSTROUTING
PRETOUTING->INPUT->OUTPUT->POSTROUTING
第一种方式是NAT路由器,第二种方式是主机防火墙。
iptables包含三个表:filter,nat和mangle
filter是默认的表,包含真正的防火墙过滤规则,内建的规则链包括:INPUT,OUTPUT,FORWARD.
nat表包含源和目的地址以及端口转换使用的规则,内建的规则链包括:PREROUTING,OUTPUT,POSTROUTING.
mangle表用于设计特殊的数据包路由标志 的规则,这些标志随后被filter表中的规则检查。内建的规则链包括:PREROUTING,INPUT,FORWARD,POSTROUTING,OUTPUT.
表对应的相关规则链的功能:
INPUT:当一个数据包由内核中的路由计算确定是本地的Linux系统后,它会通过INPUT链的检查
OUTPUT:保留系统自身生成的数据包
FORWARD:经过Linux系统路由的数据包(即当iptables防火墙用于连接两个网络时,两个网络之间的数据包必须流经该防火墙)
PREROUTING:用于修改目标地址(DNAT)
POSTROUTING:用于修改源地址(SNAT)
iptables详细语法
iptables [-t 表名] < -A|I|D|R >链名[规则编号] [ -i|o 网卡名称 ] [-p 协议类型] [-s 源ip地址|源子网] [--sport 源端口号] [ -d 目标ip地址|目标子网] [--dport 目标端口号] <-j 动作>
详细说明:
1.定义默认策略
作用:当数据包不符合链中任意一条规则时,iptables将根据该链预先定义的默认策略来处理数据包
iptables [-t 表名] <-P> <链名> <动作>
-t 默认策略用于哪个表,可以使用filter,nat和mangle,如果没有指定就使用filter。
-P 定义默认策略
<链名> 指默认策略用于哪个链,可以使用所有链
<动作> 处理数据包的动作,可以使用ACCEPT和DROP
2.查看iptables规则
iptables [-t 表名] <-L> [链名]
[-t 表名]
指查看哪个表的规则列表,可以使用filter,nat和mangle,如果没有指定就使用filter。
<-L>
查看指定表和指定链的规则列表
[链名]
指查看指定表中哪个链的规则列表,可以使用所有类型的链。如果不指明则将查看所有链的规则列表。
3.增加、插入、删除、替换iptables规则
iptables [-t 表名] <-A|I|D|R> [链名] [规则编号]
-A 增加一条规则,该规则将会增加到规则列表的最后一行,该参数不能使用规则编号
-I 插入一条规则,原本该位置上的规则将会往后顺序移动,如果没有指定规则编号,则在第一条规则前插入
-D 从规则列表中删除一条规则,可以输入完整规则,或直接指定规则编号加以删除
-R 替换某条规则,必须要指定替换的规则编号,规则被替换不会改变顺序
[-i|o 网卡名称]
[-p 协议类型] 可以指定规则应用的协议
动作说明
DROP:丢弃数据包
ACCEPT:接收数据包
REDIRECT:将数据包重新转向到本机或另外一台主机的某个端口,通常能实现透明代理或对外开放内网的某些业务。
REJECT:拦截该数据封包,并发回封包通知对方。
SNAT:源地址转换,即改变数据包的源地址。
DNAT:目标地址转换,即改变数据包的目的地址。
MASQUERADE:IP伪装,即常说的NAT技术,只能用于ADSL等拨号上网的IP伪装,也就是主机的IP是由ISP动态分配的,如果主机的IP地址是静态固定的就只能使用SNAT
LOG:日志功能,将符合规则的数据包相关信息记录在日志里,以便管理员的分析和排错。
-s = source address
-d = destination address
-p = protocol
-j = action
-P = specify default policy for chain
-D = delete a rule from chain
-R = replace a rule from chain
-F = remove all rules for specified chain
-L = list chain rules
-A = append/add a rule to the end of the chain
常见端口号
FTP = TCP 21/20 21 for configuration and 20 for file transfering.
SSH = TCP 22
Telnet = TCP 23
Web/http = TCP 80
SSL/https = TCP 443
DNS = UDP 53
DHCP = UDP 67 and UDP 68
SAMBA = 137-139 and 445
NETBIOS = 137-139
ACTIVE DIRECTORY = 445 Netbios/DNS
SMTP(email out) = 25
POP3(email in) = 110
IMAP(email in) = 143
VPN = 1723
KERBEROS = 88
SNMP = 161/162
参考书《构建高可用Linux服务器》等