找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
广告投放联系QQ68610888广告投放联系QQ68610888
查看: 2206|回复: 6

virtual**客户端无法访问谷歌网址的其中一个原因

[复制链接]
发表于 2020-12-10 16:50 | 显示全部楼层 |阅读模式
本帖最后由 ShareBit 于 2020-12-18 13:09 编辑

在同一局域网内部,不管是无线还是有线方式,在搭建了shadow socks R+系列插件和v..p...n的openwrt路由器下,都能正常访问谷歌等网址,但是如果外部通过v..p...n连接到openwrt上之后,无法访问谷歌等网址,我发现了其中有一种情况会这样。问题出在 /var/etc/shad..dow...socksr.include 内容有一行代码不对。
能正确使用的配置文件如下:

root@OpenWrt:~# cat /var/etc/shad..dow...socksr.include
#!/bin/sh
iptables-save -c | grep -v "SS_SPEC" | iptables-restore -c
iptables-restore -n <<-EOT
*nat
:SS_SPEC_WAN_AC - [0:0]
:SS_SPEC_WAN_FW - [0:0]
-I PREROUTING 1 -p tcp -m comment --comment _SS_SPEC_RULE_ -j SS_SPEC_WAN_AC
-I OUTPUT 1 -p tcp -m comment --comment _SS_SPEC_RULE_ -j SS_SPEC_WAN_AC
-A SS_SPEC_WAN_AC -m set --match-set whitelist dst -j RETURN
-A SS_SPEC_WAN_AC -m set --match-set blacklist dst -j SS_SPEC_WAN_FW
-A SS_SPEC_WAN_AC -m set --match-set fplan src -j SS_SPEC_WAN_FW
-A SS_SPEC_WAN_AC -d xx.xx.xx.xx/32 -j RETURN
-A SS_SPEC_WAN_AC -m set --match-set gfwlist dst -j SS_SPEC_WAN_FW
-A SS_SPEC_WAN_AC -m set --match-set gmlan src -m set ! --match-set china dst -j SS_SPEC_WAN_FW
-A SS_SPEC_WAN_AC -m set --match-set china dst -j RETURN
-A SS_SPEC_WAN_FW -d 0.0.0.0/8 -j RETURN
-A SS_SPEC_WAN_FW -d 10.0.0.0/8 -j RETURN
-A SS_SPEC_WAN_FW -d 127.0.0.0/8 -j RETURN
-A SS_SPEC_WAN_FW -d 169.254.0.0/16 -j RETURN
-A SS_SPEC_WAN_FW -d 172.16.0.0/12 -j RETURN
-A SS_SPEC_WAN_FW -d 192.168.0.0/16 -j RETURN
-A SS_SPEC_WAN_FW -d 224.0.0.0/4 -j RETURN
-A SS_SPEC_WAN_FW -d 240.0.0.0/4 -j RETURN
-A SS_SPEC_WAN_FW -p tcp -m multiport --dports 22,53,587,465,995,993,143,80,443 -j REDIRECT --to-ports 1234
COMMIT
*mangle
COMMIT
EOT

不正确的配置文件如下:
[root@PandoraBox:/root]#cat /var/etc/shad..dow...socksr.include
#!/bin/sh
iptables-save -c | grep -v "SS_SPEC" | iptables-restore -c
iptables-restore -n <<-EOT
*nat
:SS_SPEC_WAN_AC - [0:0]
:SS_SPEC_WAN_FW - [0:0]
-I PREROUTING 1 -i br-lan -p tcp -m comment --comment _SS_SPEC_RULE_ -j SS_SPEC_WAN_AC
-I OUTPUT 1 -p tcp -m comment --comment _SS_SPEC_RULE_ -j SS_SPEC_WAN_AC
-A SS_SPEC_WAN_AC -m set --match-set whitelist dst -j RETURN
-A SS_SPEC_WAN_AC -m set --match-set blacklist dst -j SS_SPEC_WAN_FW
-A SS_SPEC_WAN_AC -m set --match-set bplan src -j RETURN
-A SS_SPEC_WAN_AC -m set --match-set fplan src -j SS_SPEC_WAN_FW
-A SS_SPEC_WAN_AC -d xx.xx.xx.xx/32 -p tcp -m tcp ! --dport 53 -j RETURN
-A SS_SPEC_WAN_AC -m set --match-set gfwlist dst -j SS_SPEC_WAN_FW
-A SS_SPEC_WAN_AC -m set --match-set gmlan src -m set ! --match-set china dst -j SS_SPEC_WAN_FW
-A SS_SPEC_WAN_AC -m set --match-set china dst -j RETURN
-A SS_SPEC_WAN_FW -d 0.0.0.0/8 -j RETURN
-A SS_SPEC_WAN_FW -d 10.0.0.0/8 -j RETURN
-A SS_SPEC_WAN_FW -d 127.0.0.0/8 -j RETURN
-A SS_SPEC_WAN_FW -d 169.254.0.0/16 -j RETURN
-A SS_SPEC_WAN_FW -d 172.16.0.0/12 -j RETURN
-A SS_SPEC_WAN_FW -d 192.168.0.0/16 -j RETURN
-A SS_SPEC_WAN_FW -d 224.0.0.0/4 -j RETURN
-A SS_SPEC_WAN_FW -d 240.0.0.0/4 -j RETURN
-A SS_SPEC_WAN_FW -p tcp -m multiport --dports 22,53,587,465,995,993,143,80,443 -j REDIRECT --to-ports 1234
COMMIT
*mangle
COMMIT
EOT

对比之后,我们发现了原因:
正确设置应该是 -I PREROUTING 1 -p tcp -m comment --comment _SS_SPEC_RULE_ -j SS_SPEC_WAN_AC

找到原因之后,解决方法就比较多了,比如
mkdir /sssfix
在/sssfix目录下建立文件 shad..dow...socksr.fix.sh, 内容如下:

cat /sssfix/shad..dow...socksr.fix.sh
#!/bin/sh
sleep 60

while :
do
    sleep 15
    if [ ! -f /var/etc/shad.ows.ocksr.include ]; then
      continue
    fi
   
    grep -Fq "br-lan" /var/etc/shad.owso.cksr.include
    if [ $? -ne 0 ]; then
        continue
    fi
   
    if [ -f /tmp/shad.ows.ocksr.include ]; then
        rm /tmp/shad.ows.ocksr.include
    fi

    sed -i 's/ -i br-lan//' /var/etc/shad.owso.cksr.include
    cp /var/etc/shad.ows.ocksr.include /tmp/shad.ows.ocksr.include
    chmod 755 /tmp/shad.ows.ocksr.include
    /tmp/shad.ows.ocksr.include
done

然后对文件/sssfix/shad..dow...socksr.fix.sh 设置可执行权限

chmod 755 /sssfix/shad..dow...socksr.fix.sh

再修改一下 /etc/rc.local文件,如下:
[root@PandoraBox:/]#cat /etc/rc.local
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.

/sssfix/shad..dow...socksr.fix.sh &
exit 0

请看着图片理解上面打印的文字:



这样就可以在路由器启动起来之后,这个脚本经过60秒等待,就修正了这个错误。如果中途发生了变化,会在15秒检测中再次自动修正。上面的.....等请忽略,我是因为要防止屏蔽才打上这些点的。

评分

参与人数 1恩山币 +1 收起 理由
cixiclq + 1 感谢分享,恩山有你更精彩

查看全部评分

只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
发表于 2020-12-10 17:09 | 显示全部楼层
感谢楼主的分享
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2020-12-18 08:16 | 显示全部楼层
唉,恼人的屏蔽
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2020-12-18 08:54 | 显示全部楼层
由于连接的不可描述的IP地址是动态的,所以能否是这样
运行不可描述功能后自动拷贝原本错误的文件,然后修改那条错误的代码后再去自动执行?
这样的设想是鉴于以下两个原因

1,单单路由器重启或开机但没有打开运行不可描述功能,以上文件是空白的
2,动态IP地址在运行插件后是会记录到shad..dow...socksr.include文件中的

点评

可以的,我已经修改了帖子内容,现在脚本已经做成自适应的了。  详情 回复 发表于 2020-12-18 13:10
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

 楼主| 发表于 2020-12-18 13:10 | 显示全部楼层
cixiclq 发表于 2020-12-18 08:54
由于连接的不可描述的IP地址是动态的,所以能否是这样
运行不可描述功能后自动拷贝原本错误的文件,然后修改 ...

可以的,我已经修改了帖子内容,现在脚本已经做成自适应的了。

点评

嗯,能成功连接了  详情 回复 发表于 2020-12-18 14:22
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2020-12-18 14:22 | 显示全部楼层
ShareBit 发表于 2020-12-18 13:10
可以的,我已经修改了帖子内容,现在脚本已经做成自适应的了。

嗯,能成功连接了
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2020-12-31 12:17 来自手机 | 显示全部楼层
大佬厉害了吧。
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /2 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2026-8-23 23:34

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 电话:13506125623

快速回复 返回顶部 返回列表