zw963 / asuswrt-merlin-transparent-proxy

transparent proxy base on ss, v2ray, xray, ipset, iptables, chinadns on asuswrt merlin or side router.
MIT License
380 stars 80 forks source link

AC5300 Merlin 380.65_4 dnsmasq.conf 无法执行 ipset #13

Closed hexid26 closed 7 years ago

hexid26 commented 7 years ago

首先感谢作者提供了如此通俗易懂的指导文章,以及自动化脚本。

不过我的路由器是 AC5300,自动化脚本貌似并不适用。在显示以下内容后就结束了(宿主机 Mac)

echo '***********************************************************'
echo Remote deploy scripts is started !!
echo '***********************************************************'

Merlin 原版固件 380.65_4 Dnsmasq 和 ipset 版本信息如下:

Dnsmasq version 2.76  Copyright (c) 2000-2016 Simon Kelley
Compile time options: IPv6 GNU-getopt no-RTC no-DBus no-i18n no-IDN DHCP DHCPv6 no-Lua TFTP no-conntrack ipset no-auth DNSSEC loop-detect no-inotify

ipset v6.29: No command specified: unknown argument verion

问题一

我是手动配置 ss+dnsmasq 方案 SS 的搭建已经完成。单独在路由器上测试过,没有问题。 主要是路由表的问题。 就是在 /etc/dnsmasq.conf 下面添加 ipset=/domain.com/FREEWEB 之后,重启 dnsmasq service 之后,ipset list FREEWEB 显示没有添加任何信息,members 为空。 目前唯一能够正确添加 ipset 的指令就是 ipset add FREEWEB [domain.com] 指令 dnsmasq --ipset=/[domain.com]/FREEWEB 也没有办法使用。(insmod 都已经加载了) 不知道是不是 dnsmasqipset 不互相兼容。

问题二

我在 EntWare 中安装的 shadowsocks-libev 正确配置了 /opt/etc/init.d/ 下面的相关配置文件,但是 server 并没有自动启动。你没有在其它地方添加 SS 的启动脚本么?

方法都看懂了,所有 FREEWEB 中的域名走原始通道,非 FREEWEB 中的走 SS 通道。问题是,我这个 FREEWEB,依靠 dnsmasq 完全无法自动添加。。。 求救!!

zw963 commented 7 years ago

如果你的 ipset 版本是 v6 的话, 那貌似应该是支持的. 请打印下在路由器下 ipset -v 的输出.

ipset list FREEWEB 显示没有添加任何信息,members 为空

本来就是这样的, 只有你访问一个国内的域名后, 才会自动加入 FREEWEB, 这个添加的过程应该由 dnsmasq 来完成, 否则就没有意义了.

我在 EntWare 中安装的 shadowsocks-libev 正确配置了 /opt/etc/init.d/ 下面的相关配置文件,但是 server 并没有自动启动

ss-server 不是在路由器启动, 只有一个 ss 客户端, 有没有启动, 你 ps 下就知道. ps |grep -e 'ss-' 应该输出

  594 admin     5788 S    ss-redir -c /opt/etc/shadowsocks.json
  611 admin     4304 S    ss-tunnel -c /opt/etc/shadowsocks.json -b 127.0.0.1 -l 1082 -L 8.8.4.4:53 -u

请确认, 如果使用自动模式, 是否完整配置成功? 我手头没有这么高端的路由器测试啊, 请告知.

hexid26 commented 7 years ago

问题一:ipset 的版本问题

admin@RT-AC5300-USB:/tmp/home/root# ipset -v
ipset v6.29, protocol version: 6

问题二:用的 IPv6 的地址,导致无法启动

shadowsocks.json 中修改成为 IPv4 的地址之后,可以正常启动。

问题三:自动模式,没有完整配置成功

运行之后的提示如下:

HAIXIANGs-Mini:asuswrt-merlin-transparent-proxy haixiang$ ./ss+dnsmasq admin@192.168.199.1
Please install wget! e.g. sudo apt-get install wget
foreign_domains.conf                                                    100%   34     2.6KB/s   00:00    
S22ss-tunnel                                                            100%  261   179.6KB/s   00:00    
iptables.sh                                                             100% 1916     1.3MB/s   00:00    
patch_dnsmasq                                                           100%  451   391.1KB/s   00:00    
restart_dnsmasq                                                         100%   83    76.7KB/s   00:00    
shadowsocks.json                                                        100%  223    14.2KB/s   00:00    
Package bash (4.3.42-1a) installed in root is up to date.
***********************************************************
Remote deploy scripts is started !!
***********************************************************
HAIXIANGs-Mini:asuswrt-merlin-transparent-proxy haixiang$ 

也就是说你的自动化脚本在调用了 deploy_start 了脚本之后,就结束了。。。 剩下的我是手动完成的。 我没有具体去测试你的代码是在哪里停下来的,但是就是在加载你 deploy start.sh 脚本中的函数时候停止的。

PS

今天中午又手动配置了一遍,没有问题了。很奇怪。 目前的问题

  1. 又些要翻墙的站点,第一次打不开,需要再刷新一次就好了。可能是和 DNS 的解析有关系。
  2. AC5300 确实无法执行自动配置脚本,可能和固件有关系吧。

最后

感谢作者的辛勤劳动!!反正我就上上 Google 家的站点,够用了。

zw963 commented 7 years ago

Please install wget! e.g. sudo apt-get install wget

自动运行时, 有这样的错误提示, 因为你的宿主机竟然没有装 wget, 难道是 windows? 还真没考虑这点啊. 没有 wget, 也就没有从 dnsmasq-china-list 下载最新的国内域名白名单, 你需要自己手动更新下,

这个问题已经修复, 你可以拉一下代码, 如果没有 wget, 应该不会继续执行 Remote deploy 了.

hexid26 commented 7 years ago

不好意思,犯二了。。。当时是演示用的,所以换了个 mac。真实部署的机器都是 MAC,都有 wget。。。都是代码狗。。。brew 必装的。。。wget 也是如此。。。。 输出都是到这一步:

***********************************************************
Remote deploy scripts is started !!
***********************************************************

然后就回到了命令行。。。我也觉得很奇怪。。。感觉你在deploy start.sh中的函数定义脚本都没有执行。。。

zw963 commented 7 years ago

奇怪, 稍后找个 mac 试下了, mac 下面, 如果不安装 GNU 的 coreutils, 很多命令的参数都和我主机不一致的, 搞不好那个命令参数崩掉了. 你可以使用 brew 装. brew install coreutils, 然后加 PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH" 让这些 GNU 版本的工具替换系统自带的.

不过我抽时间用 Mac 试一下, 尝试修复一下吧.

hexid26 commented 7 years ago

Linux下的bash脚本我写的少。有空的时候我把你的脚本改改,弄个mac版的好了。反正手动配置我也弄好了。

估计是你定义的那几个function初始化出问题了

zw963 commented 7 years ago

已经修复了部分兼容性问题, 但 OSX 仍旧不可用. 见 #17