虽然说很多工具都没用过,但是看下来基本上 Openwrt 上透明代理自动分流,都是依赖 iptables/nftables 来匹配并转发发至透明代理 这样产生的一个问题是,openwrt 自身设置的一些规则往往就无效了
比如在 openwrt 里设置目标 IP 1.2.3.4 的包全部丢弃,但是这个规则是在 filter 表里的,而透明代理一般都是在 mangle 表里的,优先级更高,如果 1.2.3.4 走透明代理的话,上述规则就彻底失效了
不知道有谁有什么好的建议呢
1
Lentin 2023-05-15 20:58:18 +08:00
在 mangle 表里面处理=。=
|
2
yaott2020 2023-05-15 21:00:02 +08:00 via Android
用 tun ?
|
4
terrytw OP 主要是现在 22.03 里面,没法在 fw4 restart 之后附加规则了,所以在 raw 表里加规则都不行了
|
5
Lentin 2023-05-15 21:17:00 +08:00
|
6
lovelylain 2023-05-15 21:20:12 +08:00 via Android
|
7
terrytw OP @lovelylain 看到你说 iptables+fwmark ,难道你的 iptables 规则不是在 mangle 和 nat 表嘛?
|
8
terrytw OP @Lentin 看来看去 openclash 也是用 iptables 在 mangle 表做分流啊,不知道你想表达什么意思
|
10
crysislinux 2023-05-16 00:20:02 +08:00 via Android
感觉确实没有太好的办法,可以多加一个 openwrt 来先处理这些 IP 。但是这样一样透明代理又不能针对某个 lan 上的设备做特殊处理了。
|
11
yanyanjia 2023-05-16 00:37:53 +08:00
加一个 openwrt ,两个 openwrt 之间用 ospf 协议分流呢?
|
12
huaxie1988 2023-05-16 00:45:46 +08:00 via Android
@terrytw 22.3 可以删除 nft 使用 iptables 。
opkg remove luci-ssl luci luci-app-firewall firewall4 opkg install iptables-legacy firewall luci 而且你这种需要在透明代理的规则前可以加一条 ipset 跳过代理,封 ip 规则也写为封锁该 ipset ,然后将需要封锁的 ip 添加到该 ipset ,ipset 比一条一条的 ip 规则效率更高。 |
13
ccde8259 2023-05-16 02:02:57 +08:00 via iPhone
一套 OpenWRT 不行就两套……主路由 ER2260T 通过策略路由分流,目标地址国内 IP 或者源地址旁路网关直接上行宽带提供商,其余绕行旁路网关。再在旁路网关上走代理出去……
|
14
qwvy2g 2023-05-16 02:18:54 +08:00 via Android
是的,如果流量被分流到代理中,openwrt 防火墙设置就无效了。不如考虑在 openwrt 代理软件中添加绕过代理或者直接在代理里面添加新规则 IPblock 这些 IP 。
|
15
unnamedhao 2023-05-16 04:10:18 +08:00 via iPhone
mangle 里把 1.2.3.4 return
|
16
kokutou 2023-05-16 08:11:46 +08:00 via Android
最精确的还得是客户机上装客户端。。。
|
17
mritd 2023-05-16 08:21:02 +08:00 via iPhone
搞不明白 openwrt ,自己搓了一个 github.com/mritd/tpclash
|
18
cwbsw 2023-05-16 10:56:18 +08:00
手写规则就可以了,用现成工具肯定多多少少有不如意的地方。
|
19
gesse 2023-05-16 12:05:33 +08:00
学学 GFW ,哈哈哈
iptables -t nat -A PREROUTING -d 1.2.3.4 -j DNAT --to 2.2.2.2 |
20
missdeer 2023-05-16 13:41:03 +08:00
不要用一键安装的插件就行了,自己手写 iptables
|
21
YGBlvcAK 2023-05-16 14:06:26 +08:00
这还不简单吗? mangle 表里 return ,再在 filter 表的 FORWARD 链 drop 掉
|
22
azure2023us559 2023-05-16 19:27:00 +08:00
你真的了解透明代理吗?
可以不需要用 mangle 表,请配合 ipset ss-libev 给的方案太粗鲁了,将所有国外 ip 经过代理,其实完全不需要。 完全可以通过 ipset 解决。 /etc/firewall.user # create ipset ipset create gfw hash:ip hashsize 4096 # for gfw vultr us iptables -t nat -I PREROUTING -p tcp -m set --match-set gfw dst -m multiport --dports 80,443 -j REDIRECT --to-ports 1234 iptables -t nat -I OUTPUT -p tcp -m set --match-set gfw dst -m multiport --dports 80,443 -j REDIRECT --to-ports 1234 配合 dnsmasq.conf ipset=/google.com/gfw server=/google.com/127.0.0.1#5300 /etc/rc.local # for gfw /opt/ss-libev/ss-tunnel -c /opt/ss-libev/ss.json -b 127.0.0.1 -l 5678 -L 127.0.0.1:53 -f /var/run/ss-tunnel.pid /opt/ss-libev/dns-forwarder -b 0.0.0.0 -p 5300 -s 127.0.0.1:5678 & /opt/ss-libev/ss-redir -c /opt/ss-libev/ss.json -b 0.0.0.0 -l 1234 -f /var/run/ss-redir.pid |
23
azure2023us559 2023-05-16 19:31:04 +08:00
以上,只需要 1 条 iptables 解决
# for gfw vultr us iptables -t nat -I PREROUTING -p tcp -m set --match-set gfw dst -m multiport --dports 80,443 -j REDIRECT --to-ports 1234 output 链是让本地路由器访问 gfw ,也可以走代理。 |
24
terrytw OP @azure2023us559 你真的了解透明代理嘛?用 mangle 表是为了 UDP 流量
1 条 iptbales 就解决的前提是,你的需求很简单,我随便说几个功能,你的 iptables 条数就会不停往上涨 1. NAS 不走透明代理 2. NAS 不走透明代理的前提下,部分 tracker 的域名对应流量强制走代理 3. Windows 下某个程序不走透明代理,其他所有流量自动分流 |
25
terrytw OP |
26
ftfunjth 2023-05-16 21:15:40 +08:00 via iPhone
先说明你是通过 tproxy 还是 dnat 实现的透明代理
|
27
azure2023us559 2023-05-16 21:37:55 +08:00
@terrytw udp 流量主要是有哪些需求? dns ?游戏?
|
28
azure2023us559 2023-05-16 21:42:03 +08:00
@terrytw 新版 op 用的 fw4 还有很多 bug 。踩完坑就知道了。我主要会用到 docker ,建议退回到 old 稳定版 21.0x
|
30
huaxie1988 2023-05-16 22:14:02 +08:00 via Android
@terrytw 22.3 可以用 fw3 的。
|
31
ftfunjth 2023-05-16 22:37:09 +08:00 1
mangle 链的 PREROUTING 中的 ipse 规则 t 是一个很好的方案, 它可以让你免去对 forwarded 的 ip package routing 两次的开销(network card => lo => network card), 不加 ipset 情况下使用 TPROXY 的代理工具如 v2ray 分流,一定会多 routing 一次。
|
33
ftfunjth 2023-05-16 22:38:47 +08:00
建议对 mangle 链的 OUTPUT 也加上分流国内 ip 的 ipset 规则。
|
34
shamburger 2023-05-16 22:38:50 +08:00 1
我在使用 pbr (policy-based routing) 即策略路由插件,好在以纳入 openwrt 的主 repo 。
- 支持 fw4 + nft 或 fw3 + iptables - 可以通过 luci-app-pbr 填写规则 或 拼接自定义脚本(比如 china-ip 分流) - 自动识别 wan 和隧道出口,并搭建相应的 fwmark 、ipset 、nftset - 通过 hotplug.d 热插拔即自动刷新 规则导流对象主要为 openvpn 或 wireguard 隧道出口。我不确定 pbr 是否支持代理工作模式。 https://docs.openwrt.melmac.net/pbr/ |
35
YGBlvcAK 2023-05-16 22:53:35 +08:00 via Android
op 是给小白用的,楼主既然懂 Linux ,不如直接在 debian 中搭建一套,熟练了 10 几分钟就搭建完了,上面这需求就太简单了
话说我就是这么干的,所有工具都是自己安装的,想装什么版本就装什么版本,多套方案随意切换 |
36
cwbsw 2023-05-17 08:57:44 +08:00 1
|
38
aliensb 2023-09-14 17:02:32 +08:00
老哥,这个问题最后怎么解决的呢
|