iptables 配置笔记


image-20221109214721175

基础定义

四表

FILTER

控制数据包是否允许进出及转发(INPUT、OUTPUT、FORWARD),可以控制的链路有input, forward, output

NAT

控制数据包中地址转换,可以控制的链路有prerouting, input, output, postrouting

MANGLE

修改数据包中的原数据,可以控制的链路有prerouting, input, forward, output, postrouting

RAW

控制nat表中连接追踪机制的启用状况,可以控制的链路有prerouting, output

五链

PREROUTING

INPUT

FORWARD

OUTPUT

POSTROUTING

堵通策略

ACCEPT

放行

DROP

丢弃

REJECT

拒绝

一般配置

NAT配置

1
iptables -t nat -A POSTROUTE -s 192.168.55.0/255.255.255.0 -o eth0 -j MASQUEADE

PREROUTING

当外网的数据包进入到内网时,我们需要修改数据包中的公网 IP 为内网的主机 IP,这种 DNAT 的行为规则就要在 PREROUTING 链里添加。

POSTROUTING

和 PREROUTING 不同,在执行 SNAT 任务时的行为规则就添加在 POSTROUTING 链中。

透明代理配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/sh
vpn_ip="`ping home.nekokami.cc -c 1| grep 64 | awk -F" " '{print $4}'`"
wwan_ip="`ifconfig wwan0 | grep "inet " | awk -F" " '{print $2}'`"
echo "VPN地址".$vpn_ip
echo "WWAN地址".$wwan_ip

iptables -t nat -F
iptables -t nat -X

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

iptables -t nat -N clash_dns

iptables -t nat -A PREROUTING -p tcp --dport 53 -d 192.168.55.1/32 -j clash_dns
iptables -t nat -A PREROUTING -p udp --dport 53 -d 192.168.55.1/32 -j clash_dns

iptables -t nat -A clash_dns -p tcp --dport 53 -j REDIRECT --to-ports 5353
iptables -t nat -A clash_dns -p udp --dport 53 -j REDIRECT --to-ports 5353


iptables -t nat -N clash
iptables -t nat -A PREROUTING -p tcp -j clash

iptables -t nat -A clash -d 0.0.0.0/8 -j RETURN
iptables -t nat -A clash -d 10.0.0.0/8 -j RETURN
iptables -t nat -A clash -d 127.0.0.0/8 -j RETURN
iptables -t nat -A clash -d 169.254.0.0/16 -j RETURN
iptables -t nat -A clash -d 172.16.0.0/12 -j RETURN
iptables -t nat -A clash -d 192.168.0.0/16 -j RETURN
iptables -t nat -A clash -d 224.0.0.0/4 -j RETURN
iptables -t nat -A clash -d 240.0.0.0/4 -j RETURN
iptables -t nat -A clash -d $vpn_ip/32 -j RETURN
iptables -t nat -A clash -d $wwan_ip/30 -j RETURN

iptables -t nat -A clash -p tcp -j RETURN -m mark --mark 0xff
iptables -t nat -A clash -p tcp --dport 22 -d 192.168.55.1/32 -j RETURN
iptables -t nat -A clash -p tcp -j REDIRECT --to-ports 12345

echo "Configure ok..."