mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-09-10 18:34:18 +08:00
280 lines
7.3 KiB
Plaintext
280 lines
7.3 KiB
Plaintext
table inet hijpass {
|
|
# 防火墙配置不建议轻度用户修改,否则容易引发网络故障
|
|
chain pre-filter {
|
|
type filter hook prerouting priority filter - 50; policy accept;
|
|
|
|
# 过滤来源非本地内网的请求
|
|
# fib saddr type != local iif != br-lan counter return
|
|
|
|
# 过滤访问本地的请求
|
|
fib daddr type local counter return
|
|
|
|
# WAN 入站流量不参与透明代理
|
|
iifname $WAN_DEV counter return
|
|
|
|
iif != @proxy_interface_list ether saddr != @proxy_mac_list counter return
|
|
iif @proxy_interface_exclude_list counter return
|
|
ether saddr @proxy_mac_exclude_list counter return
|
|
|
|
# 过滤回包
|
|
ct direction reply counter return
|
|
|
|
# 不满足代理协议,返回原链
|
|
meta l4proto != $TPROXY_PROTO counter return
|
|
|
|
# 新连接设置代理、分流标记
|
|
ct state new,related counter jump tproxy-shunt
|
|
|
|
# 未标记连接,返回原链
|
|
ct mark != { $TPROXY_MARK, $TPROXY_SHUNT_MARK } counter return
|
|
|
|
# 仅代理常用端口
|
|
counter jump proxy-port-filter
|
|
|
|
# 代理标记,通过代理节点进行透明代理
|
|
meta l4proto $TPROXY_PROTO ct mark $TPROXY_MARK tproxy to :$TPROXY_PORT meta mark set $TPROXY_MARK counter accept
|
|
|
|
# 分流、代理标记,通过分流节点进行透明代理
|
|
meta l4proto $TPROXY_PROTO ct mark { $TPROXY_MARK, $TPROXY_SHUNT_MARK } tproxy to :$TPROXY_SHUNT_PORT meta mark set $TPROXY_MARK counter
|
|
}
|
|
|
|
chain out-route {
|
|
type route hook output priority filter - 50; policy accept;
|
|
|
|
fib daddr type local counter return
|
|
ct direction reply counter return
|
|
meta l4proto != $TPROXY_PROTO counter return
|
|
meta skgid $HIJPASS_USER counter return
|
|
|
|
ct state new,related counter jump tproxy-shunt
|
|
|
|
counter jump proxy-port-filter
|
|
counter jump tproxy-mark
|
|
}
|
|
|
|
chain tproxy-shunt {
|
|
ct mark { $TPROXY_MARK, $TPROXY_SHUNT_MARK } return
|
|
|
|
ip daddr @proxy4list ct mark set $TPROXY_MARK counter return
|
|
ip6 daddr @proxy6list ct mark set $TPROXY_MARK counter return
|
|
ip daddr @dnsproxy4list ct mark set $TPROXY_MARK counter return
|
|
ip6 daddr @dnsproxy6list ct mark set $TPROXY_MARK counter return
|
|
|
|
ip daddr @bypass4list counter return
|
|
ip6 daddr @bypass6list counter return
|
|
ip daddr @dnsbypass4list counter return
|
|
ip6 daddr @dnsbypass6list counter return
|
|
|
|
ip daddr @gfw4list counter ct mark set $TPROXY_MARK counter return
|
|
ip6 daddr @gfw6list counter ct mark set $TPROXY_MARK counter return
|
|
|
|
ip daddr @chn4list counter return
|
|
ip6 daddr @chn6list counter return
|
|
|
|
ip daddr @chnroute4list counter return
|
|
ip6 daddr @chnroute6list counter return
|
|
|
|
ct mark set $TPROXY_SHUNT_MARK counter comment "shunt mark"
|
|
}
|
|
|
|
chain tproxy-mark {
|
|
# 根据 ct mark 设置 meta mark
|
|
ct mark { $TPROXY_MARK, $TPROXY_SHUNT_MARK } meta mark set $TPROXY_MARK
|
|
}
|
|
|
|
chain proxy-port-filter {
|
|
# 禁止quic代理
|
|
meta l4proto udp udp dport 443 counter reject
|
|
|
|
# 不代理非DNS的UDP请求
|
|
meta l4proto udp udp dport != 53 ct mark set 0 counter return
|
|
|
|
# 非指定代理请求,仅代理常用TCP端口
|
|
meta l4proto tcp ct mark != $TPROXY_MARK tcp dport != { 22, 25, 53, 143, 465, 587, 853, 993, 995, 80, 443} ct mark set 0 counter return
|
|
}
|
|
|
|
chain dns-forward {
|
|
type nat hook prerouting priority dstnat - 1; policy accept;
|
|
|
|
# WAN 入站流量不参与 DNS 转发
|
|
iifname $WAN_DEV counter return
|
|
|
|
# 仅转发透明代理 ACL 选中的客户端 DNS 查询
|
|
iif != @proxy_interface_list ether saddr != @proxy_mac_list counter return
|
|
iif @proxy_interface_exclude_list counter return
|
|
ether saddr @proxy_mac_exclude_list counter return
|
|
meta l4proto { tcp, udp } th dport 53 counter redirect to :$DNS_FORWARD_PORT
|
|
}
|
|
|
|
chain dns-forward-output {
|
|
type nat hook output priority dstnat - 1; policy accept;
|
|
|
|
# DNS 服务和代理核心的上游查询不参与转发,避免递归
|
|
meta skgid $HIJPASS_USER counter return
|
|
|
|
# 仅转发路由器发往本机 53 端口的系统 DNS 查询
|
|
fib daddr type local meta l4proto { tcp, udp } th dport 53 counter redirect to :$DNS_FORWARD_PORT
|
|
}
|
|
|
|
######################
|
|
# 以下配置请勿随意修改 #
|
|
######################
|
|
|
|
# chnroute
|
|
set chnroute4list {
|
|
type ipv4_addr
|
|
flags interval,timeout
|
|
auto-merge
|
|
timeout 3d
|
|
gc-interval 3d
|
|
elements = {
|
|
$IP4_CHNROUTE_LIST
|
|
}
|
|
}
|
|
|
|
set chnroute6list {
|
|
type ipv6_addr
|
|
flags interval,timeout
|
|
auto-merge
|
|
timeout 3d
|
|
gc-interval 3d
|
|
elements = {
|
|
$IP6_CHNROUTE_LIST
|
|
}
|
|
}
|
|
|
|
# gfwlist
|
|
set gfw4list {
|
|
type ipv4_addr
|
|
flags interval,timeout
|
|
auto-merge
|
|
timeout 3d
|
|
gc-interval 3d
|
|
}
|
|
|
|
set gfw6list {
|
|
type ipv6_addr
|
|
flags interval,timeout
|
|
auto-merge
|
|
timeout 3d
|
|
gc-interval 3d
|
|
}
|
|
|
|
# chnlist
|
|
set chn4list {
|
|
type ipv4_addr
|
|
flags interval,timeout
|
|
auto-merge
|
|
timeout 3d
|
|
gc-interval 3d
|
|
}
|
|
|
|
set chn6list {
|
|
type ipv6_addr
|
|
flags interval,timeout
|
|
auto-merge
|
|
timeout 3d
|
|
gc-interval 3d
|
|
}
|
|
|
|
# user custom proxy domain list
|
|
set dnsproxy4list {
|
|
type ipv4_addr
|
|
flags interval,timeout
|
|
auto-merge
|
|
timeout 3d
|
|
gc-interval 3d
|
|
}
|
|
|
|
set dnsproxy6list {
|
|
type ipv6_addr
|
|
flags interval,timeout
|
|
auto-merge
|
|
timeout 3d
|
|
gc-interval 3d
|
|
}
|
|
|
|
# user custom direct domain list
|
|
set dnsbypass4list {
|
|
type ipv4_addr
|
|
flags interval,timeout
|
|
auto-merge
|
|
timeout 3d
|
|
gc-interval 3d
|
|
}
|
|
|
|
set dnsbypass6list {
|
|
type ipv6_addr
|
|
flags interval,timeout
|
|
auto-merge
|
|
timeout 3d
|
|
gc-interval 3d
|
|
}
|
|
|
|
# user custom proxy ip list
|
|
set bypass4list {
|
|
type ipv4_addr
|
|
flags interval
|
|
auto-merge
|
|
elements = {
|
|
$IP4_DIRECT_NFT_LIST
|
|
}
|
|
}
|
|
|
|
set proxy4list {
|
|
type ipv4_addr
|
|
flags interval
|
|
auto-merge
|
|
elements = {
|
|
$IP4_PROXY_NFT_LIST
|
|
}
|
|
}
|
|
|
|
# user custom direct ip list
|
|
set bypass6list {
|
|
type ipv6_addr
|
|
flags interval
|
|
auto-merge
|
|
elements = {
|
|
$IP6_DIRECT_NFT_LIST
|
|
}
|
|
}
|
|
|
|
set proxy6list {
|
|
type ipv6_addr
|
|
flags interval
|
|
auto-merge
|
|
elements = {
|
|
$IP6_PROXY_NFT_LIST
|
|
}
|
|
}
|
|
|
|
set proxy_mac_list {
|
|
type ether_addr
|
|
elements = {
|
|
$PROXY_MAC
|
|
}
|
|
}
|
|
|
|
set proxy_mac_exclude_list {
|
|
type ether_addr
|
|
elements = {
|
|
$PROXY_MAC_EXCLUDE
|
|
}
|
|
}
|
|
|
|
set proxy_interface_list {
|
|
type iface_index
|
|
elements = {
|
|
$PROXY_INTERFACE
|
|
}
|
|
}
|
|
|
|
set proxy_interface_exclude_list {
|
|
type iface_index
|
|
elements = {
|
|
$PROXY_INTERFACE_EXCLUDE
|
|
}
|
|
}
|
|
}
|