一般命令不赘述

我在AWS EC2上安装,遇到了这个错误。

搜索了下,有好些帖子在讲。

2017-03-27 18:35:15 INFO     starting server at *.*.*.*:PORT
Traceback (most recent call last):
  File “/usr/local/bin/ssserver”, line 9, in <module>
    load_entry_point(‘shadowsocks==2.8.2’, ‘console_scripts’, ‘ssserver’)()
  File “/usr/local/lib/python2.7/dist-packages/shadowsocks/server.py”, line 68, in main
    tcp_servers.append(tcprelay.TCPRelay(a_config, dns_resolver, False))
  File “/usr/local/lib/python2.7/dist-packages/shadowsocks/tcprelay.py”, line 582, in __init__
    server_socket.bind(sa)
  File “/usr/lib/python2.7/socket.py”, line 224, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 99] Cannot assign requested address

 

github上有人提了issue,socket.error problem: [Errno 99] Cannot assign requested address

回答中提到了3点:

1、【正确】server,应该是0.0.0.0

2、【无关】提到了method,提问者用的是rc4

3、【误导】just NOTICE:if you want to connect AWS EC2, you should use sudo sslocal -c /etc/shadowsocks.json -d start instead of sudo ssserver…….

 

实际第一点是正确的。

第二点是无关的。

第三点,本身这句话没错,一大堆人点赞,连接时候是需要用sslocal,但是提问者已经说了是deplyed in AWS EC2,所以实际还是需要ssserver的。

 

最后我的问题还没有解决,反而在第三点上浪费了大量时间去尝试。

 

看日志,/var/log/shadowsocks.log这个日志,仍然什么也没有。

反而客户端全是报错,超时。

最后找了很多帖子,终于发现可能是AWS EC2本身安全组的设置。

telnet了下端口,不通。

 

然后在AWS EC2 Management Console里面找到服务器设置的对应的安全组。

在安全组的入站规则设置里,新增了一项:

类型,协议,端口范围,来源

自定义TCP规则,TCP,我设置的那个端口,默认(0.0.0.0/0)

 

然后重试了下,服务器端报错

2017-03-27 19:36:30 WARNING  unsupported addrtype 254, maybe wrong password or encryption method
2017-03-27 19:36:30 ERROR    can not parse header when handling connection from *.*.*.*:60861

好吧,终于通了,但是密码不对…

 

重新复制了密码,终于OK了。

 

贴下完整流程:

服务器端

~$ apt-get install python-pip

~$ pip install shadowsocks

编辑/etc/shadowsocks.json

{
    “server”:”0.0.0.0″,
    “server_port”:9999,
    “local_address”: “127.0.0.1”,
    “local_port”:1080,
    “password”:”mypassword”,
    “timeout”:300,
    “method”:”aes-256-cfb”,
    “fast_open”: false
}

~$ sudo ssserver -c /usr/shadowsocks/ss.json –user nobody -d start

EC2配置

EC2 Management Console,在站点的安全组里,新增入站规则,TCP,端口9999。

客户端配置

服务器IP(实际IP),端口(与服务器端配置一致),密码(与服务器端配置一致),加密aes-256-cfb

 

ALL DONE.