iptable tproxy 模块的规则模板

一组 iptables 规则,懂的都懂

挂几个关键词:

  • iptables的TPROXY模块
  • 解决某些软件不走 PROXY
  • 真正的 “全局”
  • 代理 Docker Hub

先开启 /etc/sysctl.confnet.ipv4.ip_forward = 1

以下命令假设使用 root 权限,否则自行加上 sudo

# 设置策略路由
ip rule add fwmark 1 table 100
ip route add local 0.0.0.0/0 dev lo table 100

# DL局域网设备
iptables -t mangle -N V2R
iptables -t mangle -A V2R -d 127.0.0.1/32 -j RETURN
iptables -t mangle -A V2R -d 224.0.0.0/4 -j RETURN
iptables -t mangle -A V2R -d 255.255.255.255/32 -j RETURN
# 直连局域网, 避免 XXXXX 无法启动时无法连网关的 SSH
# 如果你配置的是其他网段(如 10.x.x.x 等), 则修改成自己的
iptables -t mangle -A V2R -d 192.168.0.0/16 -p tcp -j RETURN
# 直连局域网, 53 端口除外(因为要使用 XXX 的 DNS)
iptables -t mangle -A V2R -d 192.168.0.0/16 -p udp ! --dport 53 -j RETURN
# 直连 SO_MARK 为 0xff 的流量, 此规则目的是解决占用大量CPU
iptables -t mangle -A V2R -j RETURN -m mark --mark 0xff
# 给 UDP 打标记 1, 转发至 10801 端口
iptables -t mangle -A V2R -p udp -j TPROXY --on-ip 127.0.0.1 --on-port 10801 --tproxy-mark 1
# 给 TCP 打标记 1, 转发至 10801 端口
iptables -t mangle -A V2R -p tcp -j TPROXY --on-ip 127.0.0.1 --on-port 10801 --tproxy-mark 1
iptables -t mangle -A PREROUTING -j V2R

# DL网关本机
iptables -t mangle -N V2R_MASK 
iptables -t mangle -A V2R_MASK -d 224.0.0.0/4 -j RETURN 
iptables -t mangle -A V2R_MASK -d 255.255.255.255/32 -j RETURN 
# 直连局域网
iptables -t mangle -A V2R_MASK -d 192.168.0.0/16 -p tcp -j RETURN
# 直连局域网, 53 端口除外
iptables -t mangle -A V2R_MASK -d 192.168.0.0/16 -p udp ! --dport 53 -j RETURN
# 直连 SO_MARK 为 0xff 的流量, 此规则目的是避免代理本机(网关)流量出现回环问题
iptables -t mangle -A V2R_MASK -j RETURN -m mark --mark 0xff
iptables -t mangle -A V2R_MASK -p udp -j MARK --set-mark 1
iptables -t mangle -A V2R_MASK -p tcp -j MARK --set-mark 1
iptables -t mangle -A OUTPUT -j V2R_MASK

# 新建 DIVERT 规则, 避免已有连接的包二次通过 TPROXY, 理论上有一定的性能提升
iptables -t mangle -N DIVERT
iptables -t mangle -A DIVERT -j MARK --set-mark 1
iptables -t mangle -A DIVERT -j ACCEPT
iptables -t mangle -I PREROUTING -p tcp -m socket -j DIVERT

记得设置开机自启

mkdir -p /etc/iptables
iptables-save > /etc/iptables/rules.v4

创建文件 /etc/systemd/system/tproxy.service

[Unit]
Description=TPROXY rules
After=network.target
Wants=network.target

[Service]
Type=oneshot
RemainAfterExit=yes
# 注意分号前后要有空格
ExecStart=/sbin/ip rule add fwmark 1 table 100 ; /sbin/ip route add local 0.0.0.0/0 dev lo table 100 ; /sbin/iptables-restore /etc/iptables/rules.v4
ExecStop=/sbin/ip rule del fwmark 1 table 100 ; /sbin/ip route del local 0.0.0.0/0 dev lo table 100 ; /sbin/iptables -t mangle -F

[Install]
WantedBy=multi-user.target
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值