77 lines
3.0 KiB
Bash
77 lines
3.0 KiB
Bash
#!/usr/bin/env bash
|
||
|
||
# 设置策略路由
|
||
# 添加路由表 100
|
||
sudo ip route add local default dev lo table 100
|
||
# 为路由表 100 设定规则
|
||
+ip rule add fwmark 1 table 100
|
||
|
||
|
||
# 创建XRAY过滤器链
|
||
iptables -t mangle -N XRAY
|
||
|
||
# 代理局域网设备
|
||
iptables -t mangle -A XRAY -d 10.0.0.0/8 -j RETURN
|
||
iptables -t mangle -A XRAY -d 100.64.0.0/10 -j RETURN
|
||
iptables -t mangle -A XRAY -d 127.0.0.0/8 -j RETURN
|
||
iptables -t mangle -A XRAY -d 169.254.0.0/16 -j RETURN
|
||
iptables -t mangle -A XRAY -d 172.0.0.0/8 -j RETURN
|
||
iptables -t mangle -A XRAY -d 224.0.0.0/4 -j RETURN
|
||
iptables -t mangle -A XRAY -d 255.255.255.255/32 -j RETURN
|
||
|
||
# 直连局域网,避免 XRAY 无法启动时无法连网关的 SSH,如果你配置的是其他网段(如 10.x.x.x 等),则修改成自己的
|
||
iptables -t mangle -A XRAY -d 192.168.233.0/24 -p tcp -j RETURN
|
||
|
||
# 直连局域网,53 端口除外(因为要使用 XRAY 的 DNS)
|
||
iptables -t mangle -A XRAY -d 192.168.233.0/24 -p udp ! --dport 53 -j RETURN
|
||
|
||
|
||
# 给 UDP 打标记 1,转发至 12345 端口
|
||
iptables -t mangle -A XRAY -i ens3 -p udp -j TPROXY --on-port 12345 --tproxy-mark 1
|
||
# 给 TCP 打标记 1,转发至 12345 端口
|
||
iptables -t mangle -A XRAY -i ens3 -p tcp -j TPROXY --on-port 12345 --tproxy-mark 1
|
||
# 应用规则
|
||
iptables -t mangle -A PREROUTING -j XRAY
|
||
|
||
|
||
# 代理网关本机
|
||
iptables -t mangle -N XRAY_SELF
|
||
|
||
iptables -t mangle -A XRAY -d 10.0.0.0/8 -j RETURN
|
||
iptables -t mangle -A XRAY -d 100.64.0.0/10 -j RETURN
|
||
iptables -t mangle -A XRAY -d 127.0.0.0/8 -j RETURN
|
||
iptables -t mangle -A XRAY -d 169.254.0.0/16 -j RETURN
|
||
iptables -t mangle -A XRAY -d 172.0.0.0/8 -j RETURN
|
||
iptables -t mangle -A XRAY -d 224.0.0.0/4 -j RETURN
|
||
iptables -t mangle -A XRAY -d 255.255.255.255/32 -j RETURN
|
||
|
||
iptables -t mangle -A XRAY_SELF -d 192.168.233.0/24 -p tcp -j RETURN # 直连局域网
|
||
# 直连局域网,53 端口除外(因为要使用 XRAY 的 DNS)
|
||
iptables -t mangle -A XRAY_SELF -d 192.168.233.0/24 -p udp ! --dport 53 -j RETURN
|
||
|
||
|
||
# 除了上述的所有流量,均为进入PostRouting的流量,需要判定mark标记,然后释放
|
||
iptables -t mangle -A XRAY_SELF -m mark --mark 23 -j RETURN
|
||
|
||
# 为CoreDNS开启PostRouting流量
|
||
|
||
# 请求UDP-53的流量 放行请求国内dns的请求,直接出去
|
||
iptables -t mangle -A XRAY_SELF -i ens3 -p udp --dport 53 -j RETURN
|
||
# 请求DNS over TLS - 853 的流量 需要重新回到Xray中走代理
|
||
#iptables -t mangle -A XRAY_SELF -p tcp --dport 853 -j RETURN
|
||
#iptables -t mangle -A XRAY_SELF -p udp --dport 853 -j RETURN
|
||
|
||
# 所有其他流量,需要重路由
|
||
# 给 UDP 打标记,重路由
|
||
iptables -t mangle -A XRAY_SELF -i ens3 -p udp -j MARK --set-mark 1
|
||
# 给 TCP 打标记,重路由
|
||
iptables -t mangle -A XRAY_SELF -i ens3 -p tcp -j MARK --set-mark 1
|
||
# 应用规则
|
||
iptables -t mangle -A OUTPUT -j XRAY_SELF
|
||
|
||
# 新建 DIVERT 规则,避免已有连接的包二次通过 TPROXY,理论上有一定的性能提升
|
||
iptables -t mangle -N DIVERT
|
||
iptables -t mangle -A DIVERT -i ens3 -j MARK --set-mark 1
|
||
iptables -t mangle -A DIVERT -j ACCEPT
|
||
iptables -t mangle -I PREROUTING -p tcp -m socket -j DIVERT
|