广告时间

Skyfire✈
Apr 24, 2016 · 19 min read

在所有用过的 VPS服务商中,我一直信赖 Vultr,首先是日本线路质量比较可靠,其次价格平民,只要 5$/月(首次还送钱给你),最后就是最重要的,免费送你不限制的 Snapshot功能,让你克隆(备份)整机。

请一定使用!我的链接 来注册试用( 双方获利 💰):bao3的 Vultr 邀请📎,这将资助我一直提供匿名服务。

VPS 操作系统的选择

VPS有很多系统可选,通常都是用 Linux 的一些发行版,在这些发行版中,有一些虽然用的人多,可是安装软件后期分非常麻烦,例如 Debian 官方源里都是旧软件,这一点也不符合我们长期使用 VPS以及日后升级软件的需求,还有一些则要手动工作量多一点,比如 CentOS,还有活跃一点的 Ubuntu,但 Ubuntu多数是 deb分发,也不利于我们自定义。综合了很久,最后我将的 VPS操作系统从 FreeBSD 换到了 ArchLinux。这两个系统虽然分属于是 BSD-like Unix 和 Linux,不过理念非常像,有非常完备的官方手册,足以解决我们日常的问题。

所以下面的部分都是使用 ArchLinux 来进行,而这个系统是 Vultr 官方所以不支持的,所以此文的目的就教你如何在 Vultr 上使用 ArchLinux 。

你的收益: 一次付出,子嗣无忧

下载 iso安装盘

登录你的 Vultr ,请不要关键是去点下图中的 “Deploy New Instance”,我们要先准备光盘,所以请你点击 💿ISOs 输入 iso的地址,让 Vultr给你下载好。

downloadISO


ArchLinux 的光盘下载网址 https://www.archlinux.org/download/ ,找到你想要的节点,点进去,复制 ISO的 URL

Image for post

比如我使用的地址:
http://mirror.rackspace.com/archlinux/iso/2016.01.01/archlinux-2016.01.01-dual.iso

然后粘贴到上面 💿ISOs 这个里面,这样 Vultr 就开始帮你下载了。

创建系统

点击上图中 Deploy New Instance 一个新的。

选择系统时,使用你刚才下载的 iso ( Custom > My ISOs > archlinux-XXXX.iso ),在创建好之后系统根本不会自动安装好 Arch Linux,只不过是用光盘启动了而已。

vultrdeply

开始安装

我相信你应该是一个具有动手能力的人,因为接下来的安装需要使用很多命令行指令。请在 VPS控制台 上选使用 VNC Console的方式来使用新创建的 VPS。

硬盘分区

整个安装过程中最核心的地方就是硬盘分区。原因在于 Vultr是基于 KVM的虚拟机,而我们又是用的 SSD ,所以是基于 BIOS + GPT的系统。而在默认情况下咱们的引动器 Grub只能支持 BIOS+ MBR 或者 EFI + GPT 的方式。Vultr 恰是个混合模式,会导致 Grub不引导的。

1. 首先我们必须分出一个 bios安装分区,用于存放存放标准的 Grub 的引导文件。

2. 如果你要承载 Web类服务,例如网站或者私有云 ( owncloud),那么我们最好单独分一个 Swap 。

3. 默认情况下我们直接使用剩余的 SSD 作为整个系统磁盘,不单独分区了。

正面就开始咯:

gdisk /dev/vda
n
回车 (屏幕显示 1-28,Default 1 )
回车 (屏幕显示 default = 2048, or {+-}size )
+2M
EF02 (类型代码默认为 8300,要手动改)

截图如下:

VultrEF02

剩下的空间就是你自己自由支配,我的就仅供参考(与平时的分区没有区别),注意看图片中一定会有一个 BIOS 分区,另外图片中冒号后面是空白的都表示是直接按了 回车,这是成功的关键:

VultrSSD

当然最后还要写盘,这个我就不说按哪个键了。

开始安装

分区已经分好了,并且已经使用 ISO光盘启动了,接下来就是分区了,Arch Linux也有类似于 FreeBSD的交互式安装过程,不过在这里还是要用手动的过程,毕竟我也是第一次安装 Arch Linux 。 Vultr因为可以使用镜像来克隆,所以一次安装,永远安逸。

不过你需要注意的是,如果你的分区跟我不太一样,那接下来的步骤你需要有些调整,通常的调整就是 /dev/vda1 /dev/vda2 /dev/vda3这些编号有所不同。我只会依照我的来写。

mkswap /dev/vda2 -L SWAP
swapon /dev/vda2
mkfs.ext4 /dev/vda3 -L ArchOS
mount /dev/vda3 /mnt

好了,至此所有准备工作都已经完成了,我们开始安装系统核心了。


pacstrap /mnt base base-devel net-tools

这是要安装基本系统以及一些必要的套件,其中 net-tools是我额外加上的,因为这样可以在安装完使用诸如 ifconfig nslookup等等的小工具。经过等待(*通常为 2分钟 *左右),系统就已经完全OK了。

不过此时的系统还没有引导器 bootloader ,因此我们需要为系统安装一下:


arch-chroot /mnt
pacman -Sy grub
mkinitcpio -p linux
grub-install /dev/vda
grub-mkconfig -o /boot/grub/grub.cfg

配置网络连接

配置DHCP,这一步比较简单,在你的命令行下接着输入:
systemctl enable dhcpcd

或者是

systemctl enable dhcpcd@eth0

通常你会看到 ( Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpcd.service to /usr/lib/systemd/system/dhcpcd (或者@eth0).service.)

  • passwd

此时你修改的是 Root 用户的密码,但我们平时不应该使用此用户来登录,所以你需要创建一个普通用户以及设置用户密码,这个用户名及密码将会是你远程连接 VPS所使用的。使用用户 mylove 登录后,需要使用 sudo 来执行系统管理命令

useradd -m -G wheel -s /bin/bash mylove
passwd mylove


OK,启动你的机器试一下吧,并使用 mylove 登录一下吧!


远程连接

在机器重启的过程,你也不必闲着,准备一个工具,从现在开始,我们要用自己的电脑客户端来连接。如果你是 Linux / Unix / Mac ,就直接使用终端 ssh 命令 如果是 Windows 就使用 Putty 或者 Xshell ,两者都是免费的。

提醒,SSH 连接涉及你的服务器安全,请一定要去官方网站下载工具,不要去网上找什么汉化版、修改版,以免这些工具利用你的 ssh 连接获取你的服务器密码、植入木马、作为攻击跳板等

针对 Mac ,打开 终端,输入

ssh mylove@your.vps.ip.address

使用你的 IP 地址替换后半部分,连接时会询问你是不是要添加 ( yes/no ),你就选 yes 。然后会让你登入普通用户 mylove 的密码,登入成功后,可能 再接着输入 su — 从成变身成管理员( 需要你输入管理员密码 )。

  • 安装后有还有些额外调整,但不是必需的例如 hostname, locale, timezone,你完全可以不设置重启后再慢慢调整
  • 以下命令是用于设置时区及改 VPS 主机名称,另外优选最快的软件安装源,井号 ( # )的部分不会影响命令执行,你可以直接复制粘贴的。
  • rm /etc/localtime ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #设置时区 hostnamectl set-hostname vps-jp #设置主机名称叫 vps-jp

安装 yaourt

这部分是额外的设定,ArchLinux 使用 pacman来管理包,但是有时候这些包更新慢,我们可以使用___yaourt___ 来代替,可称为神器。我们需要修改 /etc/pacman.conf,使用 nano /etc/pacman.conf (你也可以使用 vi ) ,在文件最后加入以下代码:

[archlinuxfr]
SigLevel = Optional TrustAll
Server = http://repo.archlinux.fr/$arch

Control + X 保存( 选择 “yes “ ) ,并退出

然后使用 pacman -Syu yaourt 安装。此后,你就可以使用普通用户 mylove 登录然后直接 yaourt -Sy 软件包名称来帮你安装所需的软件, Enjoy~ it !

完结

额外的软件

这一部分主要是用来介绍如何安装一些常用软件,本身并没有想作为本文的主要内容,不过我想我就作为自己备忘来记录,如果你看不懂,甚至调试有问题, sorry 憋人不提供解答 💋。

shandowsocks Strongswan Ocserv

安装过程非常简单,切换到普通用户 mylove 下,输入 yaourt -S shadowsocks-libev strongswan ocserv 然后就开始问你一些问题,然后就开始编译了,你根本不必担心什么,因为这是绝大多数用户都验证过的配置。只是你要看清楚问你的问题是“编辑 PKGUID”( 选 n)还是问你“是否继续构建” (选 yes),然后就会问你是否要安装。

备份你的 VPS

尽管你已经安装好了这些必备软件,但是请不要急着从网上找资料来配置它们,你首先要做的就是备份。记住,数据是无价的,而如果因为配置错了浪费太多重建时间更是无价的。
Vultr 默认开放一个非常好用的主机克隆服务,叫“快照” Snapshot ,目前是免费向 SSD硬盘用户开放,所以你打开网页,先备份一下吧
登录你的 VPS,点击 Snapshots

Image for post
Image for post

你需要等待好久。。。。。所以请起身看看你的娃或者喝杯🍻。

配置你的防火墙

要想使用 VPS必须要开防火墙,而且防火墙还有另一个用处,就是 VPN功能一定要依赖防火墙。为了避免太麻烦,我直接发我的配置。你可以自己导入

# Generated by iptables-save v1.4.21 on Mon Jan  4 16:27:39 2016
*filter
:INPUT DROP [267469:59409891]
:FORWARD ACCEPT [1527284:116084980]
:OUTPUT ACCEPT [551995:57041906]
:sshguard - [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -m comment --comment "Allow Localhost Access" -j ACCEPT
-A INPUT -p tcp -m multiport --dports 20,21,22,43,53,80,443,500,3306,4500,4698,4430,8080 -m comment --comment "SSH/ HTTP/ Shadowsock/ IPSec/ Ocserv " -j ACCEPT
-A INPUT -p udp -m multiport --dports 20,21,22,43,53,80,443,500,3306,4500,4698,4430,8080 -m comment --comment "SSH/ HTTP/ Shadowsock/ IPSec/ Ocserv " -j ACCEPT
-A INPUT -p tcp -m multiport --dports 22000,60223,21025,33925,33452 -m comment --comment "Syncthing TCP port" -j ACCEPT
-A INPUT -p udp -m multiport --dports 22000,60223,21025,33925,33452 -m comment --comment "Syncthing UDP port" -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -i eth0 -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -m limit --limit 5/min --limit-burst 7 -j LOG --log-prefix "Drop Sync"
-A INPUT -i eth0 -f -m limit --limit 5/min --limit-burst 7 -j LOG --log-prefix "Fragments Packets"
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 22 -m recent --update --seconds 15 --name DEFAULT --mask 255.255.255.255 --rsource -j DROP
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 22 -m recent --set --name DEFAULT --mask 255.255.255.255 --rsource -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p udp -m multiport --dports 60000:61000 -m comment --comment "Mosh server" -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 1701 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 1723 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j sshguard
-A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT
-A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i tun0 -o eth0 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -m comment --comment "Allow Localhost output" -j ACCEPT
-A OUTPUT -p udp -m multiport --dports 20,21,22,43,53,80,443,500,3306,4500,4698,4430,8080 -j ACCEPT
-A OUTPUT -p tcp -m multiport --dports 20,21,22,43,53,80,443,500,3306,4500,4698,4430,8080 -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p icmp -m icmp --icmp-type 0 -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Mon Jan 4 16:27:39 2016
# Generated by iptables-save v1.4.21 on Mon Jan 4 16:27:39 2016
*mangle
:PREROUTING ACCEPT [649046914:490030784988]
:INPUT ACCEPT [458980340:332669236268]
:FORWARD ACCEPT [190065337:157361240288]
:OUTPUT ACCEPT [367048723:407521818509]
:POSTROUTING ACCEPT [557343262:564902311503]
-A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
COMMIT
# Completed on Mon Jan 4 16:27:39 2016
# Generated by iptables-save v1.4.21 on Mon Jan 4 16:27:39 2016
*nat
:PREROUTING ACCEPT [2700413:236807688]
:INPUT ACCEPT [1160470:78636937]
:OUTPUT ACCEPT [1142833:89039918]
:POSTROUTING ACCEPT [224659:13609002]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Mon Jan 4 16:27:39 2016

将这段代码在你的 VPS 里新建一个文件 nano ~/firwall.txt ,然后粘贴进去。然后使用 iptables-restore < ~/firwall.txt
以上的这个规则默认拒绝所有连接到你的 VPS的请求,只保留常用的端口,由于我的 shadowsocks使用 4689端口,因此我开放了这个特别端口,你可以改成自己的;同时,系统自动建立 nat,你可以自由地在你的 strongswan (前面刚安装的)里配置任意的 IP地址段,也可以在 ocserv里配置了。

配置Shadowsocks-libev

我特意安装了这个版本,你不必担心,这货只是 Shadowsocks众多分支里我觉得非常不错的一个,而配置文件则是完全相同的。
nano /etc/shadowsocks/config.json ,然后粘贴上代码:

{
"server":"0.0.0.0",
"server_port":4698,
"local_port":1080,
"password":"YourPasswd",
"timeout":60,
"method":"aes-256-cfb"
}

注意, 4698 要改成你自己的,并且要与防火墙里的配置相对应,至于 local port:1080 这个不起任何作用,仅当你用作客户端时才有用,但是保留它的好处是,你可以直接把这个配置文件复制到你电脑的客户端使用。
接下来就是设置 Shadosocks的开机自动启动。ArchLinux的牛逼之处就是全程使用 systemd管理,非常省心。代码就是:

systemctl enable shadowsocks-libev@config #开机启动
systemctl start shadowsocks-libev@config #立刻启动

systemctl restart shadowsocks-libev@config #重启(用于改过配置)
netstat -npl | grep 4698 #查看配置有没有成功
ss | grep 4698 #查看有没有客户端成功连接

以上代码直接复制执行就可以了,截图如下:

Image for post

剩下的工作就是你自己配置你的客户端,当客户端连接时,就在上面的图里就能看到了(图片的最后三行)

Strongswan 配置

接下来的这部分我就不多说了,非常麻烦,所以我只贴我的配置咯,入门级的教程你可能需要问别人啦~

这是一个麻烦,因为涉及太多了,而且每个人配置还不一样,比如我始终只使用证书认证,最后被迫开放了密码认证。所以这里可能不见得每个人都一样,你一定不要惊讶。主要涉及到了的配置文件就是 strongswan.conf, ipsec.conf,ipsec.secrets 。
首先编辑 strongswan.conf 加入 i_dont_care_about_security_and_use_aggressive_mode_psk = yes和
duplicheck.enable = no 这两项一个是让你可以使用 ipsec + 密码来上网,一个是为了允许同一个用户名(或者证书)在多个终端登录。

算了,想了想,还是不写配置了,好累。

改天补齊

Skyfire✈

Written by

5$/月的 SSD 日本VPS 速度 ping 约 70 ~120ms 注册邀请 http://www.vultr.com/?ref=6813064 (双方 因此受益,用以继续匿名提供服务,谢谢)搭建教程 http://bao3.org/14518870323173.html

Skyfire✈

Written by

5$/月的 SSD 日本VPS 速度 ping 约 70 ~120ms 注册邀请 http://www.vultr.com/?ref=6813064 (双方 因此受益,用以继续匿名提供服务,谢谢)搭建教程 http://bao3.org/14518870323173.html

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store