让Shadowsocks服务器同时监听IPv4和IPv6端口

中国电信的天翼校园宽带客户端简直令人发指,现在封锁越发厉害了,已经无法使用系统自带的PPPoE拨号了(所以刚买几天用来作服务器的ODROID-U3暂时下岗了……)。还好,学校有免费的IPv6网络,速度虽然不快,但是至少免费不限流量。正好我的VPS有IPv6地址,于是寻思着怎么利用VPS每月500G的流量来供我上网……一开始看了L2TP、OpenVPN等VPN的办法,发现让它们支持IPv6很麻烦。转念一想,不是还有Shadowsocks嘛!!!Shadowsocks支持IPv4/IPv6协议,但是一开始发现连上去显示套接字连接失败。

Google一圈发现Shadowsocks服务器也会读取config.json的server字段,所以如果填写的是IPv4地址的话,ss-server就只会在IPv4地址上监听,通过IPv6连接肯定就会不成功。修改一下config.json,其中server字段为:

"server": "::",

然后再重新启动一下Shadowsocks的服务端:

ss-server -c config.json -f /var/run/shadowsocks.pid

通过-f指定pid文件的方式使ss-server运行在后台,在CentOS里ss-server的输出将重定向到/var/log/messages,启动后可以通过netstat -nlp查看监听的端口,如果有:::SERVER_PORT(SERVER_PORT是ss-server监听的端口)就说明成功了。

此时ss-server是同时在IPv4和IPv6地址上监听的,无论客户端通过IPv4还是IPv6协议访问都能成功连接!重新配置一下代理服务器规则,利用IPv6和Shadowsocks免费畅游互联网吧!

P.S. 配合本地DNS服务器,或ipv6 hosts文件体验更佳!

Update: 本方法对于新的shadowsocks-libev失效,需要同时指定IPv4和IPv6地址(见评论)。

Author: librehat

自由軟體萬歲!

36 thoughts on “让Shadowsocks服务器同时监听IPv4和IPv6端口”

  1. 请问。~有v4和v6地址的vps,可以实现v4网络下访问v6网站么?
    用ss怎么实现啊~

  2. 单独设置都能用
    但是改成这种监听两个的就不能连接
    日志显示积极拒绝

    1. 其实可以用,楼上有人说的是对的,我一直没来回复

      “server”:[“[::0]”, “0.0.0.0”]

      服务器这么写就行

      1. “server”:[“[::0]”, “0.0.0.0”] 却应如此,但是我试验了一周 还是打不通ipv6 后来才发现 原来Ramnode的ipv6防火墙默认打开 ,需要取消其防火墙,或者允许ipv6端口通过。此时,ramnode的ipv6终于可以在教育网下使用了。经验!!!

        1. 请问怎么关闭ipv6防火墙啊,我买的是Ramnode的vps 然后系统是debian 32位,用shadowsocks 做代理服务器,现在只能用ipv4连,服务器ip用ipv6地址就完全没用。

    1. 注意json格式的逗号 “server”:[“[::0]”, “0.0.0.0”],

  3. libev版从1.6.4以后的2x版本 不管是用 “server”:”::0″,或者 “server”:”::”, V4都无法连接,V6未测试

    1. 确实,我试了好多次,不行,给开发者发邮件也不理。

      真不知道怎么办了,v4必须得写ip地址很烦人,万一ip被墙了,得一个一个

      改。

  4. 又重开了一台linode的服务器,装的ubuntu14.04,然后直接装shadowsocks,还是出现了那个问题,::用ipv4无法连接,直接用v4的ip可以v4连接,用v4连接的时候,服务器直接拒绝连接。
    之前一台linode的服务器除了shadowsocks之外,还装了不少别的东西
    不知道是不是有哪个配置没搞好,服务器肯定都支持v6.

    真搞不懂。头疼。

    1. 貌似新版改成用”server”:[“[::0]”,”0.0.0.0″],v4,v6就都可以连接了

      1. 你说的那个好象是针对Python版的shadowsocks的,libev版我记得还是::,而且因为自己写了Qt版的shadowsocks,我自己还是倾向于::绑定全部地址的(简单明了)。

  5. 博主你好,我购买了ramnode的vps,可是貌似ipv6无法使用,ping6任何网站都不通,请问这一般是怎么回事啊

    1. 自己去他们网站看清楚吧,现在IPv6是分配整个网段,你需要到VPS Control Panel去添加那个网段下的几个IPv6地址

    2. ramnode确实比较怪异啊,有v6的ip但是server没法用::监控,如果用::的话,v4根本连不上,没v6环境,不清楚。linode就没这个问题,如果server用::的话,v4,v6都可以。

        1. 一般是使用域名作为解析。当你写IP地址时,填v4的时候v4的流量,填v6的时候v6流量。当时填写域名时,则看DNS返回的地址是v4还是v6的,如果域名有v6且你可以解析,则用v6.

  6. 请问用VPS搭建shadowsocks实现了IPv6代理之后 要怎么通过ipv6网络访问ipv4站点呢
    PS:学校ipv6很快可ipv4很慢且收费

    1. 客户端里服务器地址填服务器的IPv6地址就好了啊。这样Shadowsocks就只会用IPv6连接服务器了。然后你全局代理全部走Shadowsocks代理就可以了。

  7. 你好,设置监听ipv6地址时,具体应该怎样设置呢?我试了一下不得行,我的格式 “server”:”::2400:6180:0:d0::XXXX:XXXX”

    1. 要么就用”server”:”::”要么就”server”:”2400:6180:0:d0:xxxx:xxxx”

      用”::”表示全部IP地址(包括转译的IPv4的地址),这样才能同时监听IPv4和IPv6。后者就只能监听在那一个IPv6地址上。

      1. 最后用了 libev 版的,似乎不支持同时 v4 和 v6?
        设了 `::` 之后只看到 v6 的监听没看到 v4 的。

          1. 我用的libev版本,设了::,v4根本没法连接,服务器直接拒绝连接端口,不知道是服务商的问题,还是shaowsocks版本的问题。

    1. 我的Shadowsocks是自用的,不共享。
      你可以自己买一个便宜的VPS(一年不到100块的都行),比如Ramnode家的。很多都有IPv6地址的,然后在上面用libev版的Shadowsocks作个server就可以了。

Comments are closed.