表和链
数据包在表和链中的过程:
Mangle表:修改IP报文的TOS(服务类型)等
(不要做过滤、NAT、伪装)
五种target:
(1)TOS :修改TOS字段
(2)TTL:设置所有报文共享系统TTL
(3)MATK:设置标记
(4)SECMATK:安全标记
(5)CONNSECMARK:把连接的标记拷贝给单个报文或相反
NAT表:源/目的地址转换
4种target:
(1)DNAT:目的地址改变
(2)SNAT:源地址改变
(3)MASQUERADE:与SNAT一样
(4)REDIRECT
RAW表:标记报文不被连接跟踪(状态机制)
Filter表:报文过滤
所有的target都能用
状态匹配(连接跟踪)
两个地方被触发:prerouting和output
内核状态
不同的报文不同状态
(从/proc/net/ip_conntrack里面读出来的值)
TCP协议(6) 117表示生存时间 SYN_SENT表示状态 源地址 目的地址 源端口 目的端口 (UNREPLIED)表示没有收到回应 最后是希望接收的应答包的消息 (ASSURED)表示两个方向没有流量。
用户空间状态
NEW:连接跟踪系统看到的第一个报文(SYN报文)
ESTABLISHED:双向流量,会持续匹配。
RELATED:一个established连接是主连接,一个related连接是子连接。
INVALID:不被识别,丢包。
UNTRACKED:不能被连接跟踪。
TCP连接的状态
UDP连接的状态
ICMP连接的状态
(1)echo报文:
多了几个字段:type类型,code编码,ID
(2)错误通知报文
FTP协议的状态
控制连接(主连接)建立后,用helper把数据连接关联到主连接
(1)主动模式:
(2)被动模式