luci-app-v2ray icon indicating copy to clipboard operation
luci-app-v2ray copied to clipboard

OpenWrt 22.03适配

Open WordsWorthLess opened this issue 2 years ago • 39 comments

最近發現有部分網友有對OpenWrt 22.03的適配的需求,於是試著將插件修改一下,目前能處理nft和iptables的防火墻規則了,因爲一來自身水平有限,邊學邊改,而來也沒有時間,有空才拾起來修修補補,所以有可能會遇到各種奇奇怪怪的bug,請見諒(目前我在19.07和22.03就碰到過未指定fakedns的域名用了fakedns來解析的bug).

具體的改動如下:

  1. 兼容iptables 和 nft 需要注意的是,目前OpenWrt 22.03使用的是dnsmasq 2.86,尚不支持nftable的set, 如果需要使用 代理gfwlist 模式的網友需要自行編譯dnsmasq 2.87, (這裏有x86_64的dnsmasq, 其它平臺的網友請自行編譯) , 插件檢測到dnsmasq 版本過低的話,會改用默認模式,即 全局代理 ,這樣的話就需要自己配置 路由規則了

  2. 修改透明代理頁面更新gfwlist和chnroute的更新邏輯,改用脚本下載 原來的下載邏輯是在網頁端調用Luci.Request,把列表文件在下載到緩存,解析成功再更新路由器上的文件,但是這種方法在我這裏成功率出奇的低,相關的issue也不少,於是我修改爲調用shell脚本下載並解析文件,下載成功自動刷新頁面,下載失敗會給出失敗原因,因爲脚本用到OpenSSL的base64解密,和curl下載工具,所以依賴包多了一個curl. 解析gfwlist部分我抄的 cokebar大佬的gfwlist2dnsmasq脚本,如有不妥請見諒

  3. 取消劫持局域網的DNS流量 因爲插件本來是默認挾持局域網内的全部DNS流量,導致DNS查詢無法流入路由器的DNSMASQ,這樣DNSMASQ就無法把對應的解析結果添加到ipset/nftset,代理gfwlist模式 會失效。所以我將防火墻規則修改爲指向網關的DNS查詢放行,不流入V2RAY, 僅挾持網關的DNS流量, 這樣DNS查詢就能順利發往DNSMASQ. DNSMASQ發往上游DNS服務器的查詢會通過V2RAY發出。要注意的是,如果客戶端的DNS服務器不是設置成網關ip的話,就無法通過V2RAY發出了。

  4. ** 添加Trojan / VLESS協議,xTLS 以及 gRPC底層傳輸方式 fakedns等** 因爲我一直使用XRAY, 所以配置文件是參考 Project X的配置指南 來生成的 ,因爲V2RAY 從v5開始,啓動的命令參數不同了,所以儘管V2RAY 5.0向下兼容舊版配置文件,但是這個插件還是不能通過簡單替換可執行文件來使用新版本的V2RAY, 因爲適配新版的工作量也有點大,所以近期也沒有適配的打算...

  5. ** 微調LuCI界面 ** 禁用了匿名配置,添加配置前都要輸入配置的名稱 (未添加配置名稱,有可能會重現這個issue裏面提及到的界面報錯BUG) 出站配置界面中的 前置代理 路配置 界面的 入站節點出站節點 從原來的手動輸入改爲從列表裏選擇 ,節點多的話會比較方便

=============================================================================== 最近XTLS那邊更新了REALITY, 修改了一下,準備發上來,發現之前修改了帖子后附件不見了,太尷尬了 https://github.com/WordsWorthLess/luci-app-v2ray/releases

WordsWorthLess avatar Oct 25 '22 10:10 WordsWorthLess

谢谢。非常需要。修改后的插件在哪里呢?

dalton-chiou avatar Nov 07 '22 09:11 dalton-chiou

最近發現有部分網友有對OpenWrt 22.03的適配的需求,於是試著將插件修改一下,目前能處理nft和iptables的防火墻規則了,因爲一來自身水平有限,邊學邊改,而來也沒有時間,有空才拾起來修修補補,所以有可能會遇到各種奇奇怪怪的bug,請見諒(目前我在19.07和22.03就碰到過未指定fakedns的域名用了fakedns來解析的bug).

具體的改動如下:

  1. 兼容iptables 和 nft 需要注意的是,目前OpenWrt 22.03使用的是dnsmasq 2.86,尚不支持nftable的set, 如果需要使用 代理gfwlist 模式的網友需要自行編譯dnsmasq 2.87, (這裏有x86_64的dnsmasq, 其它平臺的網友請自行編譯) , 插件檢測到dnsmasq 版本過低的話,會改用默認模式,即 全局代理 ,這樣的話就需要自己配置 路由規則了
  2. 修改透明代理頁面更新gfwlist和chnroute的更新邏輯,改用脚本下載 原來的下載邏輯是在網頁端調用Luci.Request,把列表文件在下載到緩存,解析成功再更新路由器上的文件,但是這種方法在我這裏成功率出奇的低,相關的issue也不少,於是我修改爲調用shell脚本下載並解析文件,下載成功自動刷新頁面,下載失敗會給出失敗原因,因爲脚本用到OpenSSL的base64解密,和curl下載工具,所以依賴包多了一個curl. 解析gfwlist部分我抄的 cokebar大佬的gfwlist2dnsmasq脚本,如有不妥請見諒
  3. 取消劫持局域網的DNS流量 因爲插件本來是默認挾持局域網内的全部DNS流量,導致DNS查詢無法流入路由器的DNSMASQ,這樣DNSMASQ就無法把對應的解析結果添加到ipset/nftset,代理gfwlist模式 會失效。所以我將防火墻規則修改爲指向網關的DNS查詢放行,不流入V2RAY, 僅挾持網關的DNS流量, 這樣DNS查詢就能順利發往DNSMASQ. DNSMASQ發往上游DNS服務器的查詢會通過V2RAY發出。要注意的是,如果客戶端的DNS服務器不是設置成網關ip的話,就無法通過V2RAY發出了。
  4. ** 添加Trojan / VLESS協議,xTLS 以及 gRPC底層傳輸方式 fakedns等** 因爲我一直使用XRAY, 所以配置文件是參考 Project X的配置指南 來生成的 ,因爲V2RAY 從v5開始,啓動的命令參數不同了,所以儘管V2RAY 5.0向下兼容舊版配置文件,但是這個插件還是不能通過簡單替換可執行文件來使用新版本的V2RAY, 因爲適配新版的工作量也有點大,所以近期也沒有適配的打算...
  5. ** 微調LuCI界面 ** 禁用了匿名配置,添加配置前都要輸入配置的名稱 (未添加配置名稱,有可能會重現這個issue裏面提及到的界面報錯BUG) 出站配置界面中的 前置代理 路配置 界面的 入站節點出站節點 從原來的手動輸入改爲從列表裏選擇 ,節點多的話會比較方便

新固件在哪,我也需要,感谢!

youland avatar Nov 21 '22 05:11 youland

最近發現有部分網友有對OpenWrt 22.03的適配的需求,於是試著將插件修改一下,目前能處理nft和iptables的防火墻規則了,因爲一來自身水平有限,邊學邊改,而來也沒有時間,有空才拾起來修修補補,所以有可能會遇到各種奇奇怪怪的bug,請見諒(目前我在19.07和22.03就碰到過未指定fakedns的域名用了fakedns來解析的bug).

具體的改動如下:

  1. 兼容iptables 和 nft 需要注意的是,目前OpenWrt 22.03使用的是dnsmasq 2.86,尚不支持nftable的set, 如果需要使用 代理gfwlist 模式的網友需要自行編譯dnsmasq 2.87, (這裏有x86_64的dnsmasq, 其它平臺的網友請自行編譯) , 插件檢測到dnsmasq 版本過低的話,會改用默認模式,即 全局代理 ,這樣的話就需要自己配置 路由規則了
  2. 修改透明代理頁面更新gfwlist和chnroute的更新邏輯,改用脚本下載 原來的下載邏輯是在網頁端調用Luci.Request,把列表文好消息,,, op 主线已经更新到 dnsmasq 2.87 版本了,同时新增了 过滤 ipv6 ipv4 功能,但是估计插件作者已经不打算更新了,您这里件在下載到緩存,解析成功再更新路由器上的文件,但是這種方法在我這裏成功率出奇的低,相關的issue也不少,於是我修改爲調用shell脚本下載並解析文件,下載成功自動刷新頁面,下載失敗會給出失敗原因,因爲脚本用到OpenSSL的base64解密,和curl下載工具,所以依賴包多了一個curl. 解析gfwlist部分我抄的 cokebar大佬的gfwlist2dnsmasq脚本,如有不妥請見諒
  3. 取消劫持局域網的DNS流量 因爲插件本來是默認挾持局域網内的全部DNS流量,導致DNS查詢無法流入路由器的DNSMASQ,這樣DNSMASQ就無法把對應的解析結果添加到ipset/nftset,代理gfwlist模式 會失效。所以我將防火墻規則修改爲指向網關的DNS查詢放行,不流入V2RAY, 僅挾持網關的DNS流量, 這樣DNS查詢就能順利發往DNSMASQ. DNSMASQ發往上游DNS服務器的查詢會通過V2RAY發出。要注意的是,如果客戶端的DNS服務器不是設置成網關ip的話,就無法通過V2RAY發出了。
  4. ** 添加Trojan / VLESS協議,xTLS 以及 gRPC底層傳輸方式 fakedns等** 因爲我一直使用XRAY, 所以配置文件是參考 Project X的配置指南 來生成的 ,因爲V2RAY 從v5開始,啓動的命令參數不同了,所以儘管V2RAY 5.0向下兼容舊版配置文件,但是這個插件還是不能通過簡單替換可執行文件來使用新版本的V2RAY, 因爲適配新版的工作量也有點大,所以近期也沒有適配的打算...
  5. ** 微調LuCI界面 ** 禁用了匿名配置,添加配置前都要輸入配置的名稱 (未添加配置名稱,有可能會重現這個issue裏面提及到的界面報錯BUG) 出站配置界面中的 前置代理 路配置 界面的 入站節點出站節點 從原來的手動輸入改爲從列表裏選擇 ,節點多的話會比較方便

好消息,,, op 主线已经更新到 dnsmasq 2.87 版本了,同时新增了 过滤 ipv6 ipv4 功能,,,我不知道开源软件的江湖规矩,但是好像作者已经停止更新软件了,我看到你的 PR 作者没有受理,你是不是可以 fork 出来更新呢

jerry-ch-issue avatar Nov 29 '22 07:11 jerry-ch-issue

最近發現有部分網友有對OpenWrt 22.03的適配的需求,於是試著將插件修改一下,目前能處理nft和iptables的防火墻規則了,因爲一來自身水平有限,邊學邊改,而來也沒有時間,有空才拾起來修修補補,所以有可能會遇到各種奇奇怪怪的bug,請見諒(目前我在19.07和22.03就碰到過未指定fakedns的域名用了fakedns來解析的bug). 具體的改動如下:

  1. 兼容iptables 和 nft 需要注意的是,目前OpenWrt 22.03使用的是dnsmasq 2.86,尚不支持nftable的set, 如果需要使用 代理gfwlist 模式的網友需要自行編譯dnsmasq 2.87, (這裏有x86_64的dnsmasq, 其它平臺的網友請自行編譯) , 插件檢測到dnsmasq 版本過低的話,會改用默認模式,即 全局代理 ,這樣的話就需要自己配置 路由規則了
  2. 修改透明代理頁面更新gfwlist和chnroute的更新邏輯,改用脚本下載 原來的下載邏輯是在網頁端調用Luci.Request,把列表文好消息,,, op 主线已经更新到 dnsmasq 2.87 版本了,同时新增了 过滤 ipv6 ipv4 功能,但是估计插件作者已经不打算更新了,您这里件在下載到緩存,解析成功再更新路由器上的文件,但是這種方法在我這裏成功率出奇的低,相關的issue也不少,於是我修改爲調用shell脚本下載並解析文件,下載成功自動刷新頁面,下載失敗會給出失敗原因,因爲脚本用到OpenSSL的base64解密,和curl下載工具,所以依賴包多了一個curl. 解析gfwlist部分我抄的 cokebar大佬的gfwlist2dnsmasq脚本,如有不妥請見諒
  3. 取消劫持局域網的DNS流量 因爲插件本來是默認挾持局域網内的全部DNS流量,導致DNS查詢無法流入路由器的DNSMASQ,這樣DNSMASQ就無法把對應的解析結果添加到ipset/nftset,代理gfwlist模式 會失效。所以我將防火墻規則修改爲指向網關的DNS查詢放行,不流入V2RAY, 僅挾持網關的DNS流量, 這樣DNS查詢就能順利發往DNSMASQ. DNSMASQ發往上游DNS服務器的查詢會通過V2RAY發出。要注意的是,如果客戶端的DNS服務器不是設置成網關ip的話,就無法通過V2RAY發出了。
  4. ** 添加Trojan / VLESS協議,xTLS 以及 gRPC底層傳輸方式 fakedns等** 因爲我一直使用XRAY, 所以配置文件是參考 Project X的配置指南 來生成的 ,因爲V2RAY 從v5開始,啓動的命令參數不同了,所以儘管V2RAY 5.0向下兼容舊版配置文件,但是這個插件還是不能通過簡單替換可執行文件來使用新版本的V2RAY, 因爲適配新版的工作量也有點大,所以近期也沒有適配的打算...
  5. ** 微調LuCI界面 ** 禁用了匿名配置,添加配置前都要輸入配置的名稱 (未添加配置名稱,有可能會重現這個issue裏面提及到的界面報錯BUG) 出站配置界面中的 前置代理 路配置 界面的 入站節點出站節點 從原來的手動輸入改爲從列表裏選擇 ,節點多的話會比較方便

好消息,,, op 主线已经更新到 dnsmasq 2.87 版本了,同时新增了 过滤 ipv6 ipv4 功能,,,我不知道开源软件的江湖规矩,但是好像作者已经停止更新软件了,我看到你的 PR 作者没有受理,你是不是可以 fork 出来更新呢

试下v2rayA,刚才在最新的22.03.2上面,安装成功。 https://github.com/v2rayA/v2raya-openwrt/blob/master/README.zh-cn.md

youland avatar Nov 29 '22 07:11 youland

nftables 实现可参考我的项目: luci-app-xray/firewall_include.ut at 1.27.0-rabit · ttimasdf/luci-app-xray

当然,也可直接安装这个作为替代,毕竟 xray 完全兼容 v2ray 😉

ttimasdf avatar Jan 03 '23 16:01 ttimasdf

@WordsWorthLess 你好,请问一下,你更新到nftable可以正常使用了吗?可否把你编译的ipk共享一下?谢谢!

youland avatar Feb 19 '23 09:02 youland

Snipaste_2023-03-09_02-17-12 image

已经在22.03.2使用和很长一段时间了,具体相关的配置请自行研究,我使用正常,只是安装相关教程添加了VLESS协议的支持。具体的ipk文件都是官方版本的,包括v2ray-core-4.44.0.1和luci-app-v2ray-2.0.0-1。使用一切正常,openwrt是22.03.2的官方版本,并非自行编译修改的版本。在此给各位提供一点小小的帮助。

shunjiankongbai-cn avatar Mar 08 '23 18:03 shunjiankongbai-cn

@WordsWorthLess 你好,请问一下,你更新到nftable可以正常使用了吗?可否把你编译的ipk共享一下?谢谢! 抱歉,已经更新了地址

WordsWorthLess avatar Mar 22 '23 03:03 WordsWorthLess

@WordsWorthLess 你好,请问一下,你更新到nftable可以正常使用了吗?可否把你编译的ipk共享一下?谢谢! 抱歉,已经更新了地址

万分感谢!!!!这就去下载测试去,谢谢大佬!!!

youland avatar Mar 22 '23 03:03 youland

@WordsWorthLess 你好,请问一下,你更新到nftable可以正常使用了吗?可否把你编译的ipk共享一下?谢谢! 抱歉,已经更新了地址

今天在官方原版openwrt 22.03.3 x86上面测试了一下你新的luci,没有通。 1,openwrt 22.03.3 x86,dnsmasq 2.87,v2ray 5.3 2,web界面无法识别v2的版本号,且无法运行。 3,手动在用ssh命令运行/usr/bin/v2ray run -c ~/config.json可以跑起来,但是不通。

youland avatar Mar 24 '23 06:03 youland

@WordsWorthLess 你好,请问一下,你更新到nftable可以正常使用了吗?可否把你编译的ipk共享一下?谢谢! 抱歉,已经更新了地址

今天在官方原版openwrt 22.03.3 x86上面测试了一下你新的luci,没有通。 1,openwrt 22.03.3 x86,dnsmasq 2.87,v2ray 5.3 2,web界面无法识别v2的版本号,且无法运行。 3,手动在用ssh命令运行/usr/bin/v2ray run -c ~/config.json可以跑起来,但是不通。

我试了也不行;然后意识到只能用xray(且需要最新版的)。我不用xray,只好放弃了。

dalton-chiou avatar Mar 24 '23 06:03 dalton-chiou

@WordsWorthLess 你好,请问一下,你更新到nftable可以正常使用了吗?可否把你编译的ipk共享一下?谢谢! 抱歉,已经更新了地址

今天在官方原版openwrt 22.03.3 x86上面测试了一下你新的luci,没有通。 1,openwrt 22.03.3 x86,dnsmasq 2.87,v2ray 5.3 2,web界面无法识别v2的版本号,且无法运行。 3,手动在用ssh命令运行/usr/bin/v2ray run -c ~/config.json可以跑起来,但是不通。

我试了也不行;然后意识到只能用xray(且需要最新版的)。我不用xray,只好放弃了。

是的,默认的是xray,但是我改成v2ray,一样也不行。我也不用xray,也只好放弃了。

youland avatar Mar 24 '23 07:03 youland

检查了一下, 发现问题应该出在/etc/init.d/v2ray 这个脚本第 922行

echo "$reserved_v4" | sed '$d' | sed 's/240\.0\.0\.0\/4/240\.0\.0\.0\-255\.255\.255\.255/'

这行代码是为了将定义好的 ipv4 保留ip段添加到直连的nftables的元素组v2ray_dst_direct_v4里面 但是没有在元素之间添加一个,分隔,导致生成的nftable配置文件格式出错 应该修改为

echo "$reserved_v4" | sed '$d' | sed 's/240\.0\.0\.0\/4/240\.0\.0\.0\-255\.255\.255\.255/' | sed '$!s/$/,/'


貌似Xray 的配置文件格式跟V2ray 4.X 的是兼容的,V2Ray v5好像又能兼容v4的配置文件,改一下脚本应该能兼容v2ray v5

WordsWorthLess avatar Mar 30 '23 17:03 WordsWorthLess

我把运行的问题截图上来。

下图,显示v2ray运行不起来 1

dns情况 2

透明代理 3

ssh里运行没有报错 4 5 6 7

youland avatar Apr 01 '23 02:04 youland

我把运行的问题截图上来。

ssh里运行没有报错 ![4](https://user-images.githubusercontent.com/3339858/229262008-4b72cdfa-9322-4dec-9581-

仅选择了gfwlist模式是不够的 ,gfwlist模式工作的具体过程是:

  1. 下载gfwlist.txt
  2. base64解密gfwlist.txt 并获取域名
  3. 用解密得到的域名生成dnsmasq配置文件,并保存到/tmp/dnsmasq.d/v2ray
  4. 重启dnsmasq,(dnsmasq启动过程会自动读取/tmp/dnsmasq.d/目录下的所有配置文件)
  5. 路由器下的客户端设置DNS服务器为路由器,DNS请求会发往dnsmasq
  6. dnsmasq向上游DNS服务器发出DNS请求,获取解析到的域名ip(V2RAY会挟持dnsmasq发出的DNS请求,防止DNS污染)
  7. dnsmasq会根据配置文件,如果请求的域名命中了/tmp/dnsmasq.d/v2ray的域名,会根据配置,将解析到的ip地址添加到 对应的IPSET或者nftables的元素组 v2ray_dst_proxy_v4(需要v2ray代理的IP集)
  8. iptables/ nft会将v2ray_dst_proxy_v4里面的IP的流量转发到V2RAY,实现代理gfwlist模式

要注意的是:

  1. 要实现gfwlist模式,就要代理DNS请求,局域网内的DNS请求发往路由器ip, udp 53端口的流量 所以,要么勾选转发UDP,要么勾选转发DNS
  2. 因为挟持局域网所有DNS请求会导致所有DNS请求跳过dnsmasq,全部发往V2RAY处理,gfwlist模式会失效,所以 我把插件修改为仅挟持路由器本机的DNS请求,其它客户端(手机,电脑等)需要手工或者通过DHCP配置DNS服务器 为路由器IP地址 (因为对于dnsmasq来说,根本就没人让他解析域名,它一直就没执行过任何工作,无法根据域名将ip添加到v2ray_dst_proxy_v4 代理IP集合)
  3. 正如上面第6步所说的,仅仅是把DNS请求发送到V2RAY而已,具体DNS请求在V2RAY内部是如何处理的,还得根据V2RAY 内置的路由决定(涉及到DNS模块的配置,以及路由模块的配置)
  4. 也正如上面第8步所说,gfwlist模式仅仅是把指定ip的流量转发到V2RAY,至于V2RAY内部如何处理,也得根据V2RAY路由模块 来决定

WordsWorthLess avatar Apr 02 '23 14:04 WordsWorthLess

我的理解不太一样,DNS劫持还是要做的,不然路由器会把解析请求直接发给上游DNS服务器(比如运营商的),劫持还是dnsmasq来完成的,,,只要在LUCI 的DHCP/DNS 的DNS 转发里改成 localhost 比如127.0.0.1 ipv6 是 ::1,然后在 V2RAY 里的--透明代理--代理列表DNS--中改成8.8.8.8#53 或者其他地址,最后在--额外的代理列表--中加入这个地址就能实现 gfwlist 的全链路代理。流程是客户机将域名解析请求发给路由器---路由器将请求发给自己(dnsmasq)---当域名命中gfwlist,将请求发给8.8.8.8,并建立规则,将解析后的IP加入ipset;如果没有命中,直接发给上游路由器---最后根据ipset 地址集代理IP。。。所以如果gfwlist 模式的话,根本用不到 v2ray里的dns模块(我是直接去掉勾选的,主要是它并不能过滤v4,v6流量)。UDP的流量转发其实在gfwlist 模式下是用不到的。 不过我后面用了 smartdns 过滤墙后网址 ipv6 的地址,没办法,ipv6 必须要用,但是DNS 解析里 ipv6 的优先级现在是最高的,机场只有 ipv4 的话,就百分百撞墙。

edit:如楼下所说,不需要设置DNS转发,默认接进来就是127.0.0.1的53端口,且设置后会被dnsmasq ignore 掉

On Sun, Apr 2, 2023, 22:29 WordsWorthLess @.***> wrote:

我把运行的问题截图上来。

ssh里运行没有报错 ![4]( https://user-images.githubusercontent.com/3339858/229262008-4b72cdfa-9322-4dec-9581-

仅选择了gfwlist模式是不够的 ,gfwlist模式工作的具体过程是:

  1. 下载gfwlist.txt
  2. base64解密gfwlist.txt 并获取域名
  3. 用解密得到的域名生成dnsmasq配置文件,并保存到/tmp/dnsmasq.d/v2ray
  4. 重启dnsmasq,(dnsmasq启动过程会自动读取/tmp/dnsmasq.d/目录下的所有配置文件)
  5. 路由器下的客户端设置DNS服务器为路由器,DNS请求会发往dnsmasq
  6. dnsmasq向上游DNS服务器发出DNS请求,获取解析到的域名ip(V2RAY会挟持dnsmasq发出的DNS请求,防止DNS污染)
  7. dnsmasq会根据配置文件,如果请求的域名命中了/tmp/dnsmasq.d/v2ray的域名,会根据配置,将解析到的ip地址添加到 对应的IPSET或者nftables的元素组 v2ray_dst_proxy_v4(需要v2ray代理的IP集)
  8. iptables/ nft会将v2ray_dst_proxy_v4里面的IP的流量转发到V2RAY,实现代理gfwlist模式

要注意的是:

  1. 要实现gfwlist模式,就要代理DNS请求,局域网内的DNS请求发往路由器ip, udp 53端口的流量 所以,要么勾选转发UDP,要么勾选转发DNS
  2. 因为挟持局域网所有DNS请求会导致所有DNS请求跳过dnsmasq,全部发往V2RAY处理,gfwlist模式会失效,所以 我把插件修改为仅挟持路由器本机的DNS请求,其它客户端(手机,电脑等)需要手工或者通过DHCP配置DNS服务器 为路由器IP地址 (因为对于dnsmasq来说,根本就没人让他解析域名,它一直就没执行过任何工作,无法根据域名将ip添加到v2ray_dst_proxy_v4 代理IP集合)
  3. 正如上面第6步所说的,仅仅是把DNS请求发送到V2RAY而已,具体DNS请求在V2RAY内部是如何处理的,还得根据V2RAY 内置的路由决定(涉及到DNS模块的配置,以及路由模块的配置)
  4. 也正如上面第8步所说,gfwlist模式仅仅是把指定ip的流量转发到V2RAY,至于V2RAY内部如何处理,也得根据V2RAY路由模块 来决定

— Reply to this email directly, view it on GitHub https://github.com/kuoruan/luci-app-v2ray/issues/461#issuecomment-1493352616, or unsubscribe https://github.com/notifications/unsubscribe-auth/APWTSQMUYNXKSKMIEHNVEKLW7GEK3ANCNFSM6AAAAAARNZ2WXY . You are receiving this because you commented.Message ID: @.***>

jerry-ch-issue avatar Apr 03 '23 04:04 jerry-ch-issue

我的理解不太一样,DNS劫持还是要做的,不然路由器会把解析请求直接发给上游DNS服务器(比如运营商的),劫持还是dnsmasq来完成的,,,只要在LUCI 的DHCP/DNS 的DNS 转发里改成 localhost 比如127.0.0.1 ipv6 是 ::1,然后在 V2RAY 里的--透明代理--代理列表DNS--中改成8.8.8.8#53 或者其他地址,最后在--额外的代理列表--中加入这个地址就能实现 gfwlist 的全链路代理。流程是客户机将域名解析请求发给路由器---路由器将请求发给自己(dnsmasq)---当域名命中gfwlist,将请求发给8.8.8.8,并建立规则,将解析后的IP加入ipset;如果没有命中,直接发给上游路由器---最后根据ipset 地址集代理IP。。。所以如果gfwlist 模式的话,根本用不到 v2ray里的dns模块(我是直接去掉勾选的,主要是它并不能过滤v4,v6流量)。UDP的流量转发其实在gfwlist 模式下是用不到的。 不过我后面用了 smartdns 过滤墙后网址 ipv6 的地址,没办法,ipv6 必须要用,但是DNS 解析里 ipv6 的优先级现在是最高的,机场只有 ipv4 的话,就百分百撞墙。

我试验过了,如果挟持局域网所有DNS的话,dnsmasq是收不到局域网内的任何DNS请求的,只挟持路由器本机的话就没有问题了,如果dnsmasq设置的上游dns服务器可以保证不会污染解析结果的话,譬如8.8.8.8,确实无需V2ray的dns模块,只需要代理8.8.8.8这个ip,但是这又会带来另外一个问题,8.8.8.8解析出来的ip,可能连接速度没有运营商自己的DNS或者114解析出来的快,这时候如果使用V2ray的DNS模块就可以为国内/国外的域名指定不同的DNS服务器,理论上可以提供更好的解析结果

WordsWorthLess avatar Apr 03 '23 07:04 WordsWorthLess

@WordsWorthLess 我目前用的旧版的luci,一切良好,没有设置dns转发。在测试时,win10的网关和dns均填写的是openwrt的ip,也就是装了v2ray的openwrt做网关,也做dns服务器。 dns服务器用dnsmasq来承担,同时做分流。在dnsmasq里设置gfwlist列表,列表里的域名都由127.0.0.1#53来解析,也就是openwrt里的dnsmasq,当然解析的过程也是走隧道出去,保证dns的清洁。其它不在此黑名单里的,由其它国内的dns来解析。

我在debian11里安装过v2ray v5.3,用dnsmasq 2.87配合nft,可以调通ipv4的流量,ipv6就不行了。

debian 11里的nft

flush table inet gfwtable
table inet gfwtable{
	set gfwlist {
		type ipv4_addr
		size 65536
	}
	chain prerouting {
		type nat hook prerouting priority 0; policy accept;
		ip daddr @gfwlist meta l4proto {tcp,udp} redirect to :2000
	}
	chain output {
		type nat hook output priority 0; policy accept;
		ip daddr @gfwlist meta l4proto {tcp,udp} redirect to :2000
	}
}

dnsmasq 的配置类似于这样( dnsmasq 版本必须手工更新到 2.87 或以上): server=/somedomain.com/127.0.0.1#53 nftset=/somedomain.com/4#inet#gfwlisttable#gfwlist

youland avatar Apr 03 '23 07:04 youland

我的理解不太一样,DNS劫持还是要做的,不然路由器会把解析请求直接发给上游DNS服务器(比如运营商的),劫持还是dnsmasq来完成的,,,只要在LUCI 的DHCP/DNS 的DNS 转发里改成 localhost 比如127.0.0.1 ipv6 是 ::1,然后在 V2RAY 里的--透明代理--代理列表DNS--中改成8.8.8.8#53 或者其他地址,最后在--额外的代理列表--中加入这个地址就能实现 gfwlist 的全链路代理。流程是客户机将域名解析请求发给路由器---路由器将请求发给自己(dnsmasq)---当域名命中gfwlist,将请求发给8.8.8.8,并建立规则,将解析后的IP加入ipset;如果没有命中,直接发给上游路由器---最后根据ipset 地址集代理IP。。。所以如果gfwlist 模式的话,根本用不到 v2ray里的dns模块(我是直接去掉勾选的,主要是它并不能过滤v4,v6流量)。UDP的流量转发其实在gfwlist 模式下是用不到的。 不过我后面用了 smartdns 过滤墙后网址 ipv6 的地址,没办法,ipv6 必须要用,但是DNS 解析里 ipv6 的优先级现在是最高的,机场只有 ipv4 的话,就百分百撞墙。

我试验过了,如果挟持局域网所有DNS的话,dnsmasq是收不到局域网内的任何DNS请求的,只挟持路由器本机的话就没有问题了,如果dnsmasq设置的上游dns服务器可以保证不会污染解析结果的话,譬如8.8.8.8,确实无需V2ray的dns模块,只需要代理8.8.8.8这个ip,但是这又会带来另外一个问题,8.8.8.8解析出来的ip,可能连接速度没有运营商自己的DNS或者114解析出来的快,这时候如果使用V2ray的DNS模块就可以为国内/国外的域名指定不同的DNS服务器,理论上可以提供更好的解析结果

我所说的方案,其实已经包含分流了,只有gfwlist(还有自己设置的域名),才会走8.8.8.8,然后从代理出去,其他正常域名是用openwrt自动从上游获取的(我的是运营商)

jerry-ch-issue avatar Apr 03 '23 08:04 jerry-ch-issue

@WordsWorthLess 我目前用的旧版的luci,一切良好,没有设置dns转发。在测试时,win10的网关和dns均填写的是openwrt的ip,也就是装了v2ray的openwrt做网关,也做dns服务器。 dns服务器用dnsmasq来承担,同时做分流。在dnsmasq里设置gfwlist列表,列表里的域名都由127.0.0.1#53来解析,也就是openwrt里的dnsmasq,当然解析的过程也是走隧道出去,保证dns的清洁。其它不在此黑名单里的,由其它国内的dns来解析。

我在debian11里安装过v2ray v5.3,用dnsmasq 2.87配合nft,可以调通ipv4的流量,ipv6就不行了。

debian 11里的nft

flush table inet gfwtable
table inet gfwtable{
	set gfwlist {
		type ipv4_addr
		size 65536
	}
	chain prerouting {
		type nat hook prerouting priority 0; policy accept;
		ip daddr @gfwlist meta l4proto {tcp,udp} redirect to :2000
	}
	chain output {
		type nat hook output priority 0; policy accept;
		ip daddr @gfwlist meta l4proto {tcp,udp} redirect to :2000
	}
}

dnsmasq 的配置类似于这样( dnsmasq 版本必须手工更新到 2.87 或以上): server=/somedomain.com/127.0.0.1#53 nftset=/somedomain.com/4#inet#gfwlisttable#gfwlist

我按照你的操作,结果如下:

透明代理配置 : 不转发UDP/DNS, 配置gfwlist的DNS为8.8.8.8#53 transparent-proxy

脚本生成的dnsmasq规则文件: 能生成正确格式的规则 dnsmasq v2ray 检查nftables的代理ip集:能看到gfwlist的域名解析得到的IP被添加到代理ip集内 nft-sets 局域网内的PC访问youtube: 能正常访问youtube

curl-youtube

WordsWorthLess avatar Apr 03 '23 08:04 WordsWorthLess

我的理解不太一样,DNS劫持还是要做的,不然路由器会把解析请求直接发给上游DNS服务器(比如运营商的),劫持还是dnsmasq来完成的,,,只要在LUCI 的DHCP/DNS 的DNS 转发里改成 localhost 比如127.0.0.1 ipv6 是 ::1,然后在 V2RAY 里的--透明代理--代理列表DNS--中改成8.8.8.8#53 或者其他地址,最后在--额外的代理列表--中加入这个地址就能实现 gfwlist 的全链路代理。流程是客户机将域名解析请求发给路由器---路由器将请求发给自己(dnsmasq)---当域名命中gfwlist,将请求发给8.8.8.8,并建立规则,将解析后的IP加入ipset;如果没有命中,直接发给上游路由器---最后根据ipset 地址集代理IP。。。所以如果gfwlist 模式的话,根本用不到 v2ray里的dns模块(我是直接去掉勾选的,主要是它并不能过滤v4,v6流量)。UDP的流量转发其实在gfwlist 模式下是用不到的。 不过我后面用了 smartdns 过滤墙后网址 ipv6 的地址,没办法,ipv6 必须要用,但是DNS 解析里 ipv6 的优先级现在是最高的,机场只有 ipv4 的话,就百分百撞墙。

我试验过了,如果挟持局域网所有DNS的话,dnsmasq是收不到局域网内的任何DNS请求的,只挟持路由器本机的话就没有问题了,如果dnsmasq设置的上游dns服务器可以保证不会污染解析结果的话,譬如8.8.8.8,确实无需V2ray的dns模块,只需要代理8.8.8.8这个ip,但是这又会带来另外一个问题,8.8.8.8解析出来的ip,可能连接速度没有运营商自己的DNS或者114解析出来的快,这时候如果使用V2ray的DNS模块就可以为国内/国外的域名指定不同的DNS服务器,理论上可以提供更好的解析结果

我所说的方案,其实已经包含分流了,只有gfwlist(还有自己设置的域名),才会走8.8.8.8,然后从代理出去,其他正常域名是用openwrt自动从上游获取的(我的是运营商)

@jerry-ch-issue 经你这么一解析,我想通了,因为我一直用xray来联机游戏,所以我一直都默认udp要转发到xray/v2ray,如果不转发UDP/DNS的话,就在dnsmasq里配置好gfwlist的DNS就可以了

WordsWorthLess avatar Apr 04 '23 03:04 WordsWorthLess

@WordsWorthLess 我目前用的旧版的luci,一切良好,没有设置dns转发。在测试时,win10的网关和dns均填写的是openwrt的ip,也就是装了v2ray的openwrt做网关,也做dns服务器。 dns服务器用dnsmasq来承担,同时做分流。在dnsmasq里设置gfwlist列表,列表里的域名都由127.0.0.1#53来解析,也就是openwrt里的dnsmasq,当然解析的过程也是走隧道出去,保证dns的清洁。其它不在此黑名单里的,由其它国内的dns来解析。

我在debian11里安装过v2ray v5.3,用dnsmasq 2.87配合nft,可以调通ipv4的流量,ipv6就不行了。

debian 11里的nft

flush table inet gfwtable
table inet gfwtable{
	set gfwlist {
		type ipv4_addr
		size 65536
	}
	chain prerouting {
		type nat hook prerouting priority 0; policy accept;
		ip daddr @gfwlist meta l4proto {tcp,udp} redirect to :2000
	}
	chain output {
		type nat hook output priority 0; policy accept;
		ip daddr @gfwlist meta l4proto {tcp,udp} redirect to :2000
	}
}

dnsmasq 的配置类似于这样( dnsmasq 版本必须手工更新到 2.87 或以上): server=/somedomain.com/127.0.0.1#53 nftset=/somedomain.com/4#inet#gfwlisttable#gfwlist

@youland 我修改了一下,在官方OpenWRT 21.02 和 20.03.03的 版本都能正常使用了,麻烦测试一下 https://github.com/WordsWorthLess/luci-app-v2ray/releases/tag/luci-app-v2ray_2.1.0

WordsWorthLess avatar Apr 04 '23 05:04 WordsWorthLess

@WordsWorthLess 我目前用的旧版的luci,一切良好,没有设置dns转发。在测试时,win10的网关和dns均填写的是openwrt的ip,也就是装了v2ray的openwrt做网关,也做dns服务器。 dns服务器用dnsmasq来承担,同时做分流。在dnsmasq里设置gfwlist列表,列表里的域名都由127.0.0.1#53来解析,也就是openwrt里的dnsmasq,当然解析的过程也是走隧道出去,保证dns的清洁。其它不在此黑名单里的,由其它国内的dns来解析。 我在debian11里安装过v2ray v5.3,用dnsmasq 2.87配合nft,可以调通ipv4的流量,ipv6就不行了。 debian 11里的nft

flush table inet gfwtable
table inet gfwtable{
	set gfwlist {
		type ipv4_addr
		size 65536
	}
	chain prerouting {
		type nat hook prerouting priority 0; policy accept;
		ip daddr @gfwlist meta l4proto {tcp,udp} redirect to :2000
	}
	chain output {
		type nat hook output priority 0; policy accept;
		ip daddr @gfwlist meta l4proto {tcp,udp} redirect to :2000
	}
}

dnsmasq 的配置类似于这样( dnsmasq 版本必须手工更新到 2.87 或以上): server=/somedomain.com/127.0.0.1#53 nftset=/somedomain.com/4#inet#gfwlisttable#gfwlist

@youland 我修改了一下,在官方OpenWRT 21.02 和 20.03.03的 版本都能正常使用了,麻烦测试一下 https://github.com/WordsWorthLess/luci-app-v2ray/releases/tag/luci-app-v2ray_2.1.0

我一直在是官方原版的openwrt 22.03.3上面测试的,对于21.02没有意义,因为作者旧版的还能在21.02上面使用。

youland avatar Apr 04 '23 06:04 youland

旧版的,我一直用这个方法:https://www.youtube.com/watch?v=cUo02fhXyHs

刚才在openwrt 22.03.3里测试一下,还是不行。 web里面v2ray v5.3能运行起来,用的透明代理,一切都是默认。出站用的是vless+ws和vless+tls两种,都不通。

youland avatar Apr 04 '23 06:04 youland

旧版的,我一直用这个方法:https://www.youtube.com/watch?v=cUo02fhXyHs

刚才在openwrt 22.03.3里测试一下,还是不行。 web里面v2ray v5.3能运行起来,用的透明代理,一切都是默认。出站用的是vless+ws和vless+tls两种,都不通。

能不能把你的nft的 v2ray表和 v2ray的日志发出来看一下 查看nftable的命令是 nft list table inet v2ray v2ray的运行日志在OpenWRT 网页管理界面的状态>系统日志里面可以看到

WordsWorthLess avatar Apr 04 '23 08:04 WordsWorthLess

怎么弄都不通。。。。。

root@OpenWrt:~# nft list table inet v2ray
table inet v2ray {
        set v2ray_dst_direct_v4 {
                type ipv4_addr
                flags interval
                elements = { 0.0.0.0/8, 10.0.0.0/8,
                             100.64.0.0/10, 127.0.0.0/8,
                             169.254.0.0/16, 172.16.0.0/12,
                             173.82.94.19, 192.0.0.0/24,
                             192.0.2.0/24, 192.18.0.0/15,
                             192.88.99.0/24, 192.168.0.0/16,
                             198.51.100.0/24, 203.0.113.0/24,
                             224.0.0.0/4, 240.0.0.0-255.255.255.255 }
        }

        set v2ray_src_direct_v4 {
                type ipv4_addr
                flags interval
        }

        set v2ray_dst_proxy_v4 {
                type ipv4_addr
                flags interval
        }

        set v2ray_dst_direct_v6 {
                type ipv6_addr
                flags interval
                elements = { ::,
                             ::1,
                             ::ffff:0.0.0.0/96,
                             ::ffff:0:0:0/96,
                             64:ff9b::/96,
                             100::/64,
                             2001::/32,
                             2001:20::/28,
                             2001:db8::/32,
                             2002::/16,
                             fc00::/7,
                             fe80::/10,
                             ff00::-ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff }
        }

        set v2ray_dst_proxy_v6 {
                type ipv6_addr
                flags interval
        }

        chain tcp_prerouting {
                type nat hook prerouting priority dstnat; policy accept;
                iifname "br-lan" meta l4proto tcp counter packets 9 bytes 457 jump v2ray_tcp_rules
        }

        chain v2ray_tcp_rules {
                meta l4proto tcp meta mark 0x000000ff counter packets 0 bytes 0 accept
                ip daddr @v2ray_dst_direct_v4 counter packets 2 bytes 123 accept
                ip saddr @v2ray_src_direct_v4 counter packets 0 bytes 0 accept
                ip6 daddr @v2ray_dst_direct_v6 counter packets 0 bytes 0 accept
                tcp dport 0-65535 ip daddr @v2ray_dst_proxy_v4 counter packets 0 bytes 0 redirect to :2000
        }

        chain tcp_output {
                type nat hook output priority filter; policy accept;
                counter packets 3 bytes 225 jump v2ray_tcp_rules
        }
}
ue Apr  4 11:18:16 2023 daemon.info dnsmasq[1]: read /tmp/hosts/odhcpd - 0 addresses
Tue Apr  4 11:18:16 2023 daemon.info v2ray[32243]: V2Ray 5.3.0 (OpenWrt) R1 (go1.19.5 linux/amd64)
Tue Apr  4 11:18:16 2023 daemon.info v2ray[32243]: A unified platform for anti-censorship.
Tue Apr  4 11:19:01 2023 daemon.err dnsmasq[1]: nftset inet v2ray v2ray_dst_proxy_v6 Error: Could not resolve hostname: Name does not resolve
Tue Apr  4 11:19:05 2023 daemon.err dnsmasq[1]: nftset inet v2ray v2ray_dst_proxy_v6 Error: Could not resolve hostname: Name does not resolve
Tue Apr  4 11:19:05 2023 daemon.err dnsmasq[1]: nftset inet v2ray v2ray_dst_proxy_v6 Error: Could not resolve hostname: Name does not resolve
Tue Apr  4 11:19:14 2023 daemon.err dnsmasq[1]: nftset inet v2ray v2ray_dst_proxy_v6 Error: Could not resolve hostname: Name does not resolve
Tue Apr  4 11:19:39 2023 daemon.err dnsmasq[1]: nftset inet v2ray v2ray_dst_proxy_v6 Error: Could not resolve hostname: Name does not resolve
Tue Apr  4 11:19:39 2023 daemon.err dnsmasq[1]: nftset inet v2ray v2ray_dst_proxy_v6 Error: Could not resolve hostname: Name does not resolve
Tue Apr  4 11:19:39 2023 daemon.err dnsmasq[1]: nftset inet v2ray v2ray_dst_proxy_v6 Error: Could not resolve hostname: Name does not resolve
Tue Apr  4 11:20:11 2023 daemon.info v2ray: Routing disabled: main_routing
Tue Apr  4 11:20:11 2023 daemon.info v2ray: Policy disabled: main_policy
Tue Apr  4 11:20:11 2023 daemon.info v2ray: Reverse disabled: main_reverse
Tue Apr  4 11:20:11 2023 daemon.info v2ray: Setting transparent proxy on port: 2000
Tue Apr  4 11:20:11 2023 daemon.info v2ray: Transparent proxy mode: gfwlist_proxy
Tue Apr  4 11:20:11 2023 daemon.info v2ray: Use TProxy to setup nftables
Tue Apr  4 11:20:11 2023 daemon.info v2ray: Restarting dnsmasq...
Tue Apr  4 11:20:11 2023 daemon.info dnsmasq[1]: exiting on receipt of SIGTERM
Tue Apr  4 11:20:11 2023 daemon.info dnsmasq[1]: started, version 2.87 cachesize 150
Tue Apr  4 11:20:11 2023 daemon.info dnsmasq[1]: DNS service limited to local subnets
Tue Apr  4 11:20:11 2023 daemon.info dnsmasq[1]: compile time options: IPv6 GNU-getopt no-DBus UBus no-i18n no-IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset nftset auth cryptohash DNSSEC no-ID loop-detect inotify dumpfile
Tue Apr  4 11:20:11 2023 daemon.info dnsmasq[1]: UBus support enabled: connected to system bus
Tue Apr  4 11:20:11 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test
Tue Apr  4 11:20:11 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion
Tue Apr  4 11:20:11 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost
Tue Apr  4 11:20:11 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local
Tue Apr  4 11:20:11 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid
Tue Apr  4 11:20:11 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind
Tue Apr  4 11:20:11 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan
Tue Apr  4 11:20:11 2023 daemon.info dnsmasq[1]: reading /tmp/resolv.conf.d/resolv.conf.auto
Tue Apr  4 11:20:11 2023 daemon.info dnsmasq[1]: using nameserver 114.114.114.114#53
Tue Apr  4 11:20:11 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test
Tue Apr  4 11:20:11 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion
Tue Apr  4 11:20:11 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost
Tue Apr  4 11:20:11 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local
Tue Apr  4 11:20:11 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid
Tue Apr  4 11:20:11 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind
Tue Apr  4 11:20:11 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan
Tue Apr  4 11:20:11 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses
Tue Apr  4 11:20:11 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses
Tue Apr  4 11:20:11 2023 daemon.info dnsmasq[1]: read /tmp/hosts/odhcpd - 0 addresses
Tue Apr  4 11:20:11 2023 daemon.info v2ray[800]: V2Ray 5.3.0 (OpenWrt) R1 (go1.19.5 linux/amd64)
Tue Apr  4 11:20:11 2023 daemon.info v2ray[800]: A unified platform for anti-censorship.

youland avatar Apr 04 '23 11:04 youland

Tue Apr  4 11:20:11 2023 daemon.info v2ray: Routing disabled: main_routing

关闭了V2RAY的路由功能,那么v2ray的配置文件第一个outbound是proxy吗? 如果仅使用V2RAY代理GFWLIST,不配置V2RAY的路由,那么第一个outbound就应该是可用的代理出站

WordsWorthLess avatar Apr 04 '23 16:04 WordsWorthLess

Tue Apr  4 11:20:11 2023 daemon.info v2ray: Routing disabled: main_routing

关闭了V2RAY的路由功能,那么v2ray的配置文件第一个outbound是proxy吗? 如果仅使用V2RAY代理GFWLIST,不配置V2RAY的路由,那么第一个outbound就应该是可用的代理出站

我的经验是,如果使用透明代理的话,有了dnsmasq和ipset的合作,就没必要启用v2ray的DNS和路由两个模块。 这样的话,在全局设置那里,“启用的入站连接”,只选中一个就行,也就是dokodemo;“启用的出站连接”,也只选中一个,即当下的翻墙服务器。 (这样做有一个附加的好处,不再需要geosite和geoip两个大文件,路由器省不少空间。) v2ray的DNS太复杂,我是弄不懂,干脆不用,倒也省些开销。 在“透明代理”页上,转发DNS自然不用选中,TProxy可用可不用。下面的“代理列表DNS”也不用填写。 这样使用几年了,从来没有过问题。生成的配置文件如下:

{ "log": { "access": "/dev/null", "loglevel": "warning", "error": "/var/log/v2ray-error.log" }, "inbounds": [ { "listen": "0.0.0.0", "port": 1081, "protocol": "dokodemo-door", "settings": { "followRedirect": true, "network": "tcp" }, "streamSettings": { "sockopt": { "tproxy": "redirect" } }, "tag": "transparent", "sniffing": { "enabled": true, "destOverride": [ "http", "tls" ] } } ], "outbounds": [ { "protocol": "vmess", "settings": { "vnext": [ { "address": "xxxx", "port": xxx, "users": [ { "id": "xxxx-xxxx", "alterId": 0, "security": "none" } ] } ] }, "streamSettings": { "network": "ws", "security": "tls", "tlsSettings": { "allowInsecure": true, "allowInsecureCiphers": false, "disableSystemRoot": false, "certificates": [

				]
			},
			"wsSettings": {
				"path": "/xxx"
			},
			"sockopt": {
				"mark": 255,
			}
		},
		"tag": "proxy"
	}
]

}

dalton-chiou avatar Apr 04 '23 18:04 dalton-chiou

我觉得重点在dns和nft上面,v2本身就是一个配置而已。

Wed Apr  5 00:17:48 2023 daemon.info v2ray: Fake DNS enabled
Wed Apr  5 00:17:48 2023 daemon.info v2ray: Policy disabled: main_policy
Wed Apr  5 00:17:48 2023 daemon.info v2ray: Reverse disabled: main_reverse
Wed Apr  5 00:17:48 2023 daemon.info v2ray: Setting transparent proxy on port: 2000
Wed Apr  5 00:17:48 2023 daemon.info v2ray: Transparent proxy mode: gfwlist_proxy
Wed Apr  5 00:17:48 2023 daemon.info v2ray: Restarting dnsmasq...
Wed Apr  5 00:17:48 2023 daemon.info dnsmasq[1]: exiting on receipt of SIGTERM
Wed Apr  5 00:17:48 2023 daemon.info dnsmasq[1]: started, version 2.87 cachesize 150
Wed Apr  5 00:17:48 2023 daemon.info dnsmasq[1]: DNS service limited to local subnets
Wed Apr  5 00:17:48 2023 daemon.info dnsmasq[1]: compile time options: IPv6 GNU-getopt no-DBus UBus no-i18n no-IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset nftset auth cryptohash DNSSEC no-ID loop-detect inotify dumpfile
Wed Apr  5 00:17:48 2023 daemon.info dnsmasq[1]: UBus support enabled: connected to system bus
Wed Apr  5 00:17:48 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test
Wed Apr  5 00:17:48 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion
Wed Apr  5 00:17:48 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost
Wed Apr  5 00:17:48 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local
Wed Apr  5 00:17:48 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid
Wed Apr  5 00:17:48 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind
Wed Apr  5 00:17:48 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan
Wed Apr  5 00:17:48 2023 daemon.info dnsmasq[1]: reading /tmp/resolv.conf.d/resolv.conf.auto
Wed Apr  5 00:17:48 2023 daemon.info dnsmasq[1]: using nameserver 114.114.114.114#53
Wed Apr  5 00:17:48 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test
Wed Apr  5 00:17:48 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion
Wed Apr  5 00:17:48 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost
Wed Apr  5 00:17:48 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local
Wed Apr  5 00:17:48 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid
Wed Apr  5 00:17:48 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind
Wed Apr  5 00:17:48 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan
Wed Apr  5 00:17:48 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses
Wed Apr  5 00:17:48 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses
Wed Apr  5 00:17:48 2023 daemon.info dnsmasq[1]: read /tmp/hosts/odhcpd - 0 addresses
Wed Apr  5 00:17:48 2023 daemon.info v2ray[7515]: V2Ray 5.3.0 (OpenWrt) R1 (go1.19.5 linux/amd64)
Wed Apr  5 00:17:48 2023 daemon.info v2ray[7515]: A unified platform for anti-censorship.
Wed Apr  5 00:17:49 2023 daemon.info v2ray[7515]: 2023/04/05 00:17:49 [Info] features: You are using a deprecated feature: root fakedns settings. Please update your config file with latest configuration format, or update your client software.
Wed Apr  5 00:19:57 2023 daemon.info v2ray: Fake DNS enabled
Wed Apr  5 00:19:57 2023 daemon.info v2ray: Policy disabled: main_policy
Wed Apr  5 00:19:57 2023 daemon.info v2ray: Reverse disabled: main_reverse
Wed Apr  5 00:19:58 2023 daemon.info v2ray: Setting transparent proxy on port: 2000
Wed Apr  5 00:19:58 2023 daemon.info v2ray: Transparent proxy mode: gfwlist_proxy
Wed Apr  5 00:19:58 2023 daemon.info v2ray: Use TProxy to setup nftables
Wed Apr  5 00:19:58 2023 daemon.info v2ray: Restarting dnsmasq...
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: exiting on receipt of SIGTERM
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: started, version 2.87 cachesize 150
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: DNS service limited to local subnets
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: compile time options: IPv6 GNU-getopt no-DBus UBus no-i18n no-IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset nftset auth cryptohash DNSSEC no-ID loop-detect inotify dumpfile
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: UBus support enabled: connected to system bus
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.com
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.ad
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.ae
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.com.af
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.com.ag
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.com.ai
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.al
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.am
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.co.ao
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.com.ar
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.as
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.at
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.com.au
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.az
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.ba
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.com.bd
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.be
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.bf
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.bg
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.com.bh
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.bi
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.bj
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.com.bn
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.com.bo
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.com.br
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.bs
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.bt
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.co.bw
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.by
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.com.bz
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: more servers are defined but not logged
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: reading /tmp/resolv.conf.d/resolv.conf.auto
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.com
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.ad
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.ae
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.com.af
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.com.ag
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.com.ai
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.al
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.am
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.co.ao
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.com.ar
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.as
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.at
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.com.au
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.az
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.ba
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.com.bd
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.be
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.bf
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.bg
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.com.bh
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.bi
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.bj
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.com.bn
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.com.bo
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.com.br
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.bs
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.bt
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.co.bw
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.by
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using nameserver 8.8.8.8#53 for domain google.com.bz
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: more servers are defined but not logged
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: read /etc/hosts - 4 addresses
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses
Wed Apr  5 00:19:58 2023 daemon.info dnsmasq[1]: read /tmp/hosts/odhcpd - 0 addresses
Wed Apr  5 00:19:58 2023 daemon.info v2ray[8574]: V2Ray 5.3.0 (OpenWrt) R1 (go1.19.5 linux/amd64)
Wed Apr  5 00:19:58 2023 daemon.info v2ray[8574]: A unified platform for anti-censorship.
Wed Apr  5 00:19:59 2023 daemon.info v2ray[8574]: 2023/04/05 00:19:59 [Info] features: You are using a deprecated feature: root fakedns settings. Please update your config file with latest configuration format, or update your client software.
当前配置文件: /var/etc/v2ray/v2ray.main.json

{
	"log": {
		"access": "/var/log/v2ray-access.log",
		"loglevel": "warning",
		"error": "/var/log/v2ray-error.log"
	},
	"stats": {
		
	},
	"dns": {
		"tag": "xray_dns",
		"hosts": {
			"vps.reality": [
				"1.2.3.4"
			],
			"vps.trojan": [
				"2.3.4.5"
			],
			"vps.grpc": [
				"3.4.5.6"
			],
			"114.dns": [
				"114.114.114.114"
			],
			"my.router": [
				"192.168.1.1",
				"::1"
			],
			"google.cn": [
				"google.com"
			]
		},
		"servers": [
			"https+local://1.1.1.1/dns-query",
			{
				"address": "fakedns",
				"domains": [
					"geosite:tiktok"
				],
				"skipFallback": true
			},
			{
				"address": "8.8.8.8",
				"domains": [
					"geosite:geolocation-!cn"
				],
				"skipFallback": false
			},
			{
				"address": "114.114.114.114",
				"domains": [
					"geosite:cn"
				],
				"expectIPs": [
					"geoip:cn"
				]
			}
		],
		"queryStrategy": "UseIP",
		"disableCache": false,
		"disableFallback": false,
		"disableFallbackIfMatch": false
	},
	"fakedns": [
		{
			"ipPool": "198.18.0.0/15",
			"poolSize": 65535
		},
		{
			"ipPool": "fc00::/18",
			"poolSize": 65535
		}
	],
	"inbounds": [
		{
			"listen": "0.0.0.0",
			"port": 2000,
			"protocol": "dokodemo-door",
			"settings": {
				"followRedirect": true,
				"network": "tcp"
			},
			"streamSettings": {
				"network": "tcp",
				"tcpSettings": {
					
				},
				"sockopt": {
					"tproxy": "redirect"
				}
			},
			"tag": "transparent",
			"sniffing": {
				"enabled": true,
				"destOverride": [
					"fakedns",
					"http",
					"tls"
				],
				"metadataOnly": false,
				"routeOnly": false
			}
		}
	],
	"outbounds": [
		{
			"protocol": "vless",
			"settings": {
				"vnext": [
					{
						"address": "a.com",
						"port": 443,
						"users": [
							{
								"id": "myid",
								"encryption": "none"
							}
						]
					}
				]
			},
			"streamSettings": {
				"network": "ws",
				"security": "tls",
				"tlsSettings": {
					"allowInsecure": false,
					"allowInsecureCiphers": false,
					"disableSystemRoot": false,
					"certificates": [
						
					]
				},
				"wsSettings": {
					"path": "aaaaaaaa"
				},
				"sockopt": {
					"domainStrategy": "AsIs",
					"mark": 255
				}
			},
			"tag": "vless-aaaaaaaaaaaaa"
		}
	]
}

youland avatar Apr 05 '23 00:04 youland

把我现在用的v2ray v4.5的配置贴上来,openwrt 21.02.5,用的旧的,还是iptables的。 1 2 3 4 5 6 7 8 9

youland avatar Apr 05 '23 00:04 youland