iptables学习(3)

2023-01-31 02:01:34 iptables 学习

Target/jump

target/jump决定包的处理,语法是--jump target 或 -j target ,target分两类,一是具体的操作,如ACCEPT和DROP,另一个是发送到同一个表内的链

如:

iptables -N newchain

iptables -A INPUT -p tcp -j newchain

包从INPUT跳入newchain,到了newchain的结尾会退回INPUT链的下一条规则,如果在子链中ACCEPT,父链中也ACCEPT,相当于跳过父链中的其它规则

ACCEPT

-j ACCEPT ACCEPT后,当前链与表不再匹配,但还要接受其它表中的链的处理

DNAT

只能用在nat表的PREROUTING和OUTPUT链中,包含DNAT target的链不能被其它链调用

iptables -t nat -A PREROUTING -p tcp -d 172.16.1.1 --dport 80 -j DNAT --to-destination 192.168.1.1

DROP

丢掉包,不向发送者和路由返回信息

LOG

记录包的信息

iptables -A FORWARD -p tcp -j LOG --log-level debug

log-level分为:debug,info,notice warning,warn,err,error,crit,alert,emerg,panic

--log-prefix

log信息的前缀

--log-tcp-sequence

TCP序列号和其它日志信息一起记录

--log-ip-option

记录IP包头中字段大小不变的选项

MASQUERADE

与SNAT作用一样,但不需要指定--to-source,用于动态获取IP地址的连接,如拨号上网DHCP等,只能用于nat表的POSTROUTING,有一个选项--to-ports(非必须)

iptables -t nat POSTROUTING -p tcp -j MASQUERADE --to-ports 80

MARK

设置mark值

iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 2

MIRROR

反转目的地址与来源地址

QUEUE

为软件管理包队列

REDIRECT

防火墙所在的主机内部转发包到另一个端口.

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

REJECT

与DROP作用一样,还会返回错误信息,只能用在INPUT,OUTPUT,FORWARD

iptables -A FORWARD -p tcp --dport 22 -j REJECT --reject-with tcp-reset

可用的信息类型:1,icmp-net-unreachable 2,icmp-host-unreachable 3,icmp-port-unreachable 4,icmp-proto-unreachable 5,icmp-net-prohibited 6,icmp-host-prohibited,默认是3,还有 echo-reply tcp-reset

RETURN

返回上一层,顺序是子链--父链--默认策略

SNAT

只能用在nat表的POSTROUTING

iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to-source 192.168.10.10

可以指定单独或连续的地址,也可指定端口

TOS

iptables -t mangle -A PREROUTING -p tcp --dport 22 -j TOS --set-tos 0x10

TTL

若ISP通过判断包的TTL来禁止共享连接,可以设置TTL为相同的数值来冲过封

iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-set 64

--ttl-dec 减少1

--ttl-inc 加1

注意TTL每通过一个路由都会减1

ULOG

ULOG可以在用户空间记录被匹配的包的信息,这些信息和整个包都会通过netlink Socket被多播。然 后,一个或多个用户空间的进程就会接受它们。换句话说,ULOG是至今iptables和Netfilter下最成熟、最 完善的日志工具,它包含了很多更好的工具用于包的记录。这个target可以是我们把信息记录到Mysql或其 他数据库中。这样,搜索特定的包或把记录分组就很方便了。

iptables -A INPUT -p tcp --dport 22 -j ULOG --ulog-nlgroup 2

--ulog-prefix

--ulog-cprange

--ulog-Qtreshold

 

相关文章