出于弄个完全在掌控之中的梯子的想法,我在一月时抢到了搬瓦工中国大陆直连优化套餐,512M内存、10G SSD、1T流量/月、超高带宽、$19.99(¥120左右)/年,走过路过不要错过。在此感谢知乎@冯硕的回答有哪些便宜稳定,速度也不错的Linux VPS 推荐?搬瓦工价格亲民,支付方便(可以支付宝),还不快去买?
直连优化套餐相比通用套餐据说是对大陆三网有优化,而且相比来说月流量翻了一倍,不过唯一的缺点是只有一个机房给你使用,也就是说出了事的话你的IP是换不了的,换句话说这个VPS你就砸手上了(购买30天内可退款,这样至少损失不大),所以且用且珍惜。电信CN2特别版贵了10美金,除了电信用户速度提升之外,硬盘也给砍了5G。个人觉得不是那么值,毕竟走来回一趟洛杉矶100ms延迟是跑不了的。
对了,购买的时候尽量买KVM架构的,完全虚拟,可以玩的黑科技比OpenVZ架构的不知道多到哪里去了。
搬瓦工6% off优惠码 BWH1ZBPVK弄个域名
弄个个性域名方便自己造福他人。首先从域名服务商买个域名,推荐godaddy,那里甚至可以支付宝。要是心疼钱的话,上freenom弄个一年免费的.tk域名,到期还可以免费续。免费域名的缺点是首先tk域名搜索引擎不会主动收录,其次如果你的域名价值升高的话服务商会悄悄地收回。最后,千万千万不要买cn域名。
弄到域名之后,上DNSPod添加自己的域名解析记录,同时在域名提供商那里把自己域名的NS(nameserver)改成DNSPod的NS。这一部分的图文教程可以参考少数派——免费域名申请及使用。DNSPod记录添加后最迟72小时后生效,生效之后的记录修改生效就飞快了。
ssh密钥登录
搬瓦工在这方面做得好,默认ssh端口和默认root密码都是随机的。不过我们要在此基础上更进一步,使用密钥登录ssh并禁止密码登录。首先生成我们的ssh密钥,在本地或者服务器端都可以:
1 | ssh-keygen -t rsa |
截至2018/02/27,Windows 10的OpenSSH Beta版客户端依然不支持RSA格式密钥,只支持ED25519格式[1],所以使用密钥登录的话在Windows上还是得用PuTTY。
完成之后应该会生成两个文件,id_rsa
(私钥)和id_rsa.pub
(公钥)。把公钥文件弄进服务器端的~/.ssh/authorized_keys
文件里面就差不多了。在服务器端生成的就直接mv
,记得把私钥弄下来;本地生成的就使用
1 | cat ~/.ssh/id_rsa.pub | ssh <username>@<address> "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys" |
将密钥送上去。
接下来配置本地和服务器端的ssh:
在服务器端,修改/etc/ssh/sshd_config
(注意是有d
的那个):
1 | # 使用安全的二代协议 |
之后systemctl reload sshd
,服务器端就配置完了。接下来是本地,修改~/.ssh/config
:
1 | Host bwg |
完成之后,你就能直接ssh bwg
连接你的服务器了。
使用zsh
zsh配置好的话,在各种方面都比bash强不少。我个人是喜欢用zsh的,加上grml-zsh-config体验简直上天。
首先安装zsh:apt install zsh
;然后切换默认shell为zsh:chsh -s $(which zsh)
然后下载grml-zshrc:
1 | wget -O ~/.zshrc https://git.grml.org/f/grml-etc-core/etc/zsh/zshrc |
systemd everything!
有鉴于在使用Fedora时的糟糕体验,我果断把系统从CentOS换到了Debian 9才不是嫌弃CentOS软件太老呢。同时作为一名Archlinux老教徒,我觉得把系统全面systemd化挺好的。但是Debian里面有不少的sysvinit残留,因此只能做最大努力去办了。
下面这两条是参照文档/usr/share/doc/systemd/README.Debian.gz
提取出来的。
用journald替换rsyslog
首先开启journald的persistent logging:
1 | mkdir -p /var/log/journal |
然后卸载rsyslog:
1 | apt purge rsyslog |
用networkd接管网络配置
在/etc/systemd/network/
创建文件default.network
(文件名其实无所谓,重要的是扩展名network
),内容如下:
1 | [Match] |
之后stop
, disable
掉networking.service
, 然后systemctl enable systemd-networkd
, systemctl start systemd-networkd
二连,顺便卸载掉ifupdown
,rm -r
掉/etc/network
。
此外,文档中还建议networkd配合resolved使用:
1 | systemctl enable systemd-resolved |
开启BBR算法
BBR是Google开发的TCP拥塞控制算法,目的是要尽量跑满带宽, 并且尽量不要有排队的情况, 效果并不比锐速差。开启主要是为了配合SS,给它提速用。BBR算法已经合并进了kernel 4.9,所以尊贵的Debian 9用户不需要自己编译内核,改配置就行了。OpenVZ玩家没法修改内核配置,所以……洗洗睡吧。
在/etc/sysctl.d/
下新建一个10-bbr.conf
文件,内容如下:
1 | net.core.default_qdisc = fq |
然后sysctl -p /etc/sysctl.d/10-bbr.conf
使更改生效。可以利用lsmod | grep bbr
来检测BBR是否已启用,如果出现tcp_bbr
则表示成功。
利用TunnelBroker使用IPv6
搬瓦工的KVM与OpenVZ主机相比,除了没有原生IPv6地址以外没有任何区别。但是作为一个校园网用户,走IPv6是完全免费的——我有一个大胆的想法。
以防万一,打开你内核的IPv6支持:修改/etc/sysctl.conf
或者在/etc/sysctl.d/
新建文件,完事后sysctl -p
之。
1 | net.ipv6.conf.all.disable_ipv6 = 0 |
由于KVM是完全的虚拟,所以可以方便地借助tunnel的力量来使用IPv6。首先上tunnelbroker注册个帐号(申请和服务是完全免费的),并创建一个Regular Tunnel。输入你的VPS的IP,再选择一个距离VPS最近的Tunnel Server(一般填好IP之后它会自动选择)。创建完成之后,在tunnel详细信息页面会给出四个重要的IP地址:Server IPv4 Address
, Server IPv6 Address
, Client IPv4 Address
, Client IPv6 Address
. 假设我们看到的信息是这样的:
1 | Server IPv4 Address 1.1.1.1 |
如果你不像我一样使用systemd-networkd
管理网络的话,去tunnel页面的Example Configurations
页面选择你的网络管理类型,会自动为你生成tunnel的网络配置。我这里写的配置,是针对systemd-networkd
的。OpenVZ玩家得去使用点奇技淫巧,用这里写的网络配置是没用的。
在/etc/systemd/network/
创建he-ipv6.netdev
内容如下:
1 | [Match] |
以及he-ipv6.network
内容如下:
1 | [Match] |
并对default.network
做如下修改:
1 | [Network] |
刷新systemd-networkd
,使用ping6 ipv6.google.com
试试,如果成功那么说明配置成功,你也可以用IPv6来访问VPS了。用于VPS的公网IPv6地址是提供给你的Client IPv6 Address
,不要用错了。你可以通过VPS代理让全部流量走IPv6,这样一来校园网是完全的白嫖,想想还有点小激动呢。
如果你确定你的配置没有问题,但是就是使用不了IPv6,有可能是防火墙的问题,检查一下你的ip6tables
配置吧。我tm因为ip6tables没开导致IPv6包全部被屏蔽,被这个坑了好久
iptables
为了防止VPS被破坏,为了保卫网络和平,本人建议使用iptables
来限制端口。使用前一定小心,别把ssh连接给屏蔽了。
使用下面的命令来清空iptables
配置:
1 | iptables -F |
接下来就是一通骚操作了:
1 | # 允许本地回环接口(即允许本机访问本机),一定要有 |
iptables
规则如果没保存的话,重启即失效。可以使用iptables-save
来保存,iptables-restore
来读取,可以做成systemd service unit来自动执行。可以安装这个包,里面是打好了systemd service unit配置:systemd-iptables1.1-0.deb
安装包之后,enable
, start
二连,规则存储到/etc/iptables/iptables.rules
即可。
apt相关
backports源
偶尔也会有想要新鲜软件的时候,怎么办?快去打开backports。把下面这行添加到/etc/apt/sources.list
:
1 | deb http://deb.debian.org/debian stretch-backports main contrib non-free |
内有新版的ss-libev哦。
禁止自动安装推荐包
在硬盘吃紧的VPS上这个选项可以说是很重要了。在/etc/apt/apt.conf.d
里新建个文件,并添加如下内容:
1 | APT::Install-Recommends "0"; APT-Install-Suggests "0"; |
免得更新个内核都要装十几个没什么卵用的包。