偶然上车,发现的一个 15 元/月的 C3-VPS,但是内存只有 128M,普通的 CentOS 在这个内存下运行很艰难,于是使用了 Debain 搭建
1 、 VPS 环境
很普通的 Debain 7.11 x64,128MB 内存,1 核 CPU
2 、搭建流程
2.1 、锐速部分
wget -N --no-check-certificate https://github.com/91yun/serverspeeder/raw/master/serverspeeder.sh && bash serverspeeder.sh
2.2 、加密部分
apt-get install build-essential -y
wget https://github.com/jedisct1/libsodium/releases/download/1.0.12/libsodium-1.0.12.tar.gz
tar xf libsodium-1.0.12.tar.gz && cd libsodium-1.0.12
./configure && make -j2 && make install
ldconfig
2.3 、 SSR 部分(参见WIKI)
apt-get install python-pip -y
apt-get install git -y
git clone -b manyuser https://github.com/shadowsocksr/shadowsocksr.git
cd shadowsocksr
bash initcfg.sh
vi userapiconfig.py
修改 sspanelv2
为 mudbjson
,这样可以避免使用 Mysql 减少资源占用,不过需要额外用命令 python mujson_mgr.py
去管理用户了,数据库文件则是 mudb.json
。
vi user-config.json
删除其中的 ipv6 的条目"server_ipv6": "::",
否则会监听在 IPV6 端口上
2.4 、配置最大文件打开上限
vi /etc/rc.local
在 exit 0 上面添加 ulimit -n 512000
一行内容并保存即可
2.5 、配置进程守护
apt-get install supervisor
安装 supervisor 进程守护
vi /etc/supervisor/conf.d/shadowsocksr.conf
配置 supervisor 进程守护条目,添加以下信息
[program:shadowsocksr] command = nohup /usr/bin/python /shadowsocksr/server.py m >> /var/log/shadowsocksrrun.log autostart = true autoresart = true startsecs= 30 redirect_stderr= true user = root stderr_logfile = /var/log/shadowsocksrerr.log stderr_logfile_maxbytes= 10MB stdout_logfile = /var/log/shadowsocksrout.log stdout_logfile_maxbytes= 10MB
supervisorctl reload
使用命令重加载配置文件
supervisorctl status
查看进程状态,RUNNING 状态为正常状态。
3 、防火墙整改
VPS 搭建完毕了,但是没有防火墙能叫安全么?由于 Debain8.6 系统的防火墙 iptables
不能使用 service
命令调动,而且初始状态是没有配置文件的。
但我们最好先将 iptables 防火墙清空配置
iptables -F
清空防火墙配置
iptables -L
查看防火墙配置
vim /etc/iptables.test.rules
创建防火墙自定义规则表,添加以下条目(没什么问题就用官方推荐的规则列表吧)
*filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 8888 -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7 -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
确认都 OK 后,使用命令 iptables -L
查看配置是否运行。
(注意 22 端口是 SSH 端口,需要开放,以及允许规则条目必须在 REJECT 之上才能生效)
(可以自行添加其他端口,可以使用 :
批量管理端口,比如 100:199 这样替换掉 8888 的位置即可)
iptables-restore < /etc/iptables.test.rules
命令解释:将防火墙规则从自定义规则表导入
现在,iptables 可以算配置好了,但是重启后会发现配置并没有加载。所以我们需要让配置每次重启时都再次加载
vim /etc/network/if-pre-up.d/iptables
命令解释:创建一个脚本自动加载防火墙配置
#!/bin/bash /sbin/iptables-restore < /etc/iptables.up.rules
最后,将这个脚本赋予执行权限即可。
chmod +x /etc/network/if-pre-up.d/iptables
4 、最后要注意的事
如果磁盘有空间,就多配些到 Swap,让系统运行更稳定些(可以的话给 1G)
wget 下载 github 文件的时候可能会提示证书不被信任,最快的方法就是本地上传文件再安装(才 2MB 也不费事)
虽然端口开了,防火墙允许了,但是最好修改 SSH 端口到别的端口,强化 VPS 的安全
128MB 内存虽然运行一个 SSR 比较充裕,但是跑 LNMP 就很困难了,而且平时会存在不稳定情况,时刻注意内存占用 (命令 free -m
)
不过还是可以利用一下,比如运行个 KMS 之类的程序