趁着国庆假期,终于有时间把SS搞好了。自从上次qiang变高以后,就萌生了自己建站的念头。没有选择 Linode 的主机,因为树大招风嘛。选择了同样来自日本的 Conoha.jp 。选择了 50G SSD 和 1G 内存的日本主机,搭配 CentOS 7 操作系统。 整个建立虚拟主机的过程都比较顺利,付出了一个月 900 日元的代价。具体过程就不再赘述了。 下面主要说说建立 SS 的过程。我用的是 SS 的 Python 版。
安装SS
分两步,先安装 python 和 包管理工具 pip,再直接安装 ss,至于 ss 是什么,你懂的 :)今后遇到 ss 的地方,请用你知道的单词代替(如果不明确指出,全用小写)。
首先连接到 conoha 的 VPS 服务器,使用 usr@ip 的方式
ssh root@VPS_IP
yum install python-setuptools && easy_install pip
pip install ss
安装到这一步的时候出现了 InsecurePlatformWarning 的警告,不知所措,google 了一下以后开始有病乱投医:
pip install pyopenssl ndg-httpsclient pyasn1
pip install libffi
pip install requests==2.5.3
pip install ss (这一步说 requirement already satisfied!)
建立 ss 配置文件
mkdir -p /etc/ss
vim /etc/ss/config.json
在 config.json 中输入以下内容:
{
"server":"Conoha 的 server ip",
"server_port":(端口,可以自己定义),
"local_address": "127.0.0.1",
"local_port":1080,
"password":"(你的连接密码)",
"timeout":300,
"method":"aes-256-cfb",
"fast_open": false,
"workers": 1
}
新建服务文件
vim /etc/systemd/system/ss-server.service
输入以下内容
[Unit]
Description=Ss Server
After=network.target
[Service]
Type=forking
PIDFile=/run/ss/server.pid
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p /run/ss
ExecStartPre=/bin/chown root:root /run/ss
ExecStart=/usr/bin/ssserver (这里不替换) --pid-file /var/run/ss/server.pid -c /etc/ss/config.json -d start
Restart=on-abort
User=root
Group=root
UMask=0027
[Install]
WantedBy=multi-user.target
运行 ss 服务,设为开机自启动
systemctl start ss-server.service
systemctl enable ss-server.service
防火墙开启你指定的端口
firewall-cmd --permanent --add-port=指定端口/tcp
firewall-cmd --reload
如果要配置多用户,参考了 QQ 群中的代码
类似这样:
{
"server":"0.0.0.0",
"local_address":"127.0.0.1",
"local_port":1080,
"port_password":{
"8989":"password0",
"9001":"password1",
"9002":"password2",
"9003":"password3",
"9004":"password4"
},
"timeout":300,
"method":"chacha20",
"fast_open": false
}
常见维护操作
升级 ss
pip install -U shadowsocks
卸载 ss
pip uninstall shadowsocks
停止 ss 服务
systemctl stop shadowsocks-server.service
让 Mail.app 复活
我用了 Proximac,但是,鉴于苹果在升级到 10.11 El Capitan 之后,不允许哪怕 root 用户修改 /usr,所以 homebrew 没办法用了。必须要先修改权限。官方的解释请看这里。
sudo chown $(whoami):admin /usr/local && sudo chown -R $(whoami):admin /usr/local
注意,要使 /usr/local/sbin 也在你的路径变量里面。因为我是用的 fish, 其环境变量是在 .config/fish/config.fish 里面设置。于是,添加这个路径可以这样写:
set PATH /usr/local/sbin $PATH
可以用 echo “$PATH” 来检查路径好了没。然后,我们来试试 homebrew 好了没。 [未完,待续…] 【更新】下面就是安装 proximac 了!我已经 fork 了这个项目。根据作者的指导,第一步要安装 libuv 这个库。
brew install libuv
然后下载安装文件
curl -fsSL https://raw.githubusercontent.com/proximac-org/proximac-install/master/install.py |python
其实这一步就是从网上把写好的 zip 包下载下来,解压,改权限,放到 /usr/local/proximac 目录下面。最重要的就是 kext 内核扩展文件。运行 /usr/local/bin/proximac 的时候主要调用的是这个。但是,从 Mac OSX El Capitan 以后,系统引进了所谓 rootless 的特性,就是不再允许哪怕是 root 用户修改特定的系统文件(苹果这么做的原因可以参考WWDC15的视频)
因此,如果想继续使用 proximac 只有一种办法,那就是禁用掉这个新特性,public beta 版本中的修改内核参数的方法在正式版中会失效,唯一的办法就是在启动的时候用 csrutil 这个工具:
- 启动时按住 command+R 直到进入保护模式
- 在保护模式中打开终端,输入如下指令 csrutil disable (注意:csrutil enable –without debug 这种写法将来恐怕也会失效,所以最好还是用 disable 这个选项)
- 正常重启动 用了这招,proximac 就可以正常启动了!
![](~/屏幕快照 2015-10-05 上午12.25.28.png)
参考
- IFshow(主要参考)
- IFshow 优化
- 史上最详细教程
- 破.前路的 CentOS7 libev 配置
- aa65535 的 gist
- vfasky 的在 CentOS6 上部署(要用 iptables)
- teddysun 的一键安装脚本 libev 版
- teddysun 的 python 版(含加密方式讨论)
- CentOS 7 中使用的防火墙 firewalld 的使用说明
- Stackoverflow 中关于 InsecurePlatformWarning
- 关于安装中的 InsecurePlatformWarning
- WWDC15
- v2ex 上面的讨论
- Quora 上面的讨论
- Macworld 上面关于如何修改的讨论
- Apple 官方论坛上的讨论