实例讲解搭建Linux系统的VPS的步骤
虚拟专用服务器(英语:Virtual private server,缩写为 VPS),是指通过虚拟化技术在独立服务器中运行的专用服务器。每个使用VPS技术的虚拟独立服务器拥有各自独立的公网IP地址、操作系统、硬盘空间、内存空间、CPU资源等,还可以进行安装程序、重启服务器等操作,与运行一台独立服务器完全相同。
VPS服务器是一项服务器虚拟化和自动化技术,它采用的是操作系统虚拟化技术。操作系统虚拟化的概念是基于共用操作系统内核,这样虚拟服务器就无需额外的虚拟化内核的过程,因而虚拟过程资源损耗就更低,从而可以在一台物理服务器上可以实现更多的虚拟化服务器。这些VPS服务器以最大化的效率共享硬件、软件许可证以及管理资源。每一个VPS服务器均可独立进行重启,并拥有自己的root访问权限、用户、IP地址、内存、过程、文件、应用程序、系统函数库以及配置文件。
前期准备
需要购买一台拥有 root 权限的 VPS ,我选择的是 搬瓦工 ,当时购买的是 512 M 内存 5 G SSD,500 G 流量/月, 9.99 刀每年,但是好像现在这种低价套餐已经结束了。有意的朋友可以看一下其他的套餐或者别的公司的 VPS。有的朋友说 DigitalOcean 的速度非常快,看YouTube直接 1440p,但是我还没测试过,目前搬瓦工的速度能满足我的需求,而且 DO 的价格比较昂贵。
下图是搭了 SS 和 IPsec VPN 服务的使用情况,仅供参考:

服务器购买后,安装 CentOS7,因为以下教程都是基于 CentOS7 的,安装新的 OS 后,搬瓦工会告诉你 SSH 的端口和 root 的密码,这些是自己无法自定义的,要记住了如果实在忘了也可以重置 root 密码,或者直接使用搬瓦工提供的在线SSH登录来操作也可,就是反应比较慢,所以我们以后还是常用 ssh 登录来配置 VPS ,Mac 下直接使用终端就好,win 下自行寻找一个 ssh 工具就好。
登录 ssh 的命令:
代码如下:
$ ssh -p vps 端口号 root@vpsIP 地址
登录上以后就相当于在本地操作一样了,你可以使用各种 Linux 命令来操作了。
配置防火墙
如果 SSH 无法登录,那说明防火墙关闭了 SSH 端口,需要通过在线 SSH 登录进去关闭防火墙重新配置。
清除防火墙配置
代码如下:
$ iptables -F
清除 iptabels 所有表项,同时 nat 设置也没了,但是我们后续的脚本里会配置的,不用担心。如果 SSH 登录正常就不用管防火墙。
安装 firewalld
代码如下:
$ yum install firewalld firewall-config
$ systemctl start firewalld
P.S. 我在安装完 firewalld 之后然后启动服务的时候一直显示失败,然后重启了一遍服务器就可以正常的启动 firewalld 服务了,有类似情况的朋友可以重启一下服务器。
修改 SSH 端口
代码如下:
$ vi /usr/lib/firewalld/services/ssh.xml
会出现以下的内容:
代码如下:
将 port=22,修改成搬瓦工提供给你的端口号,然后重载 firewalld 就 OK。
vi 的命令: 按 i 是编辑模式,编辑后按 esc 退出编辑模式,然后按 Shift 输入: 和 wq 保存退出 vi。
代码如下:
$ firewall-cmd --permanent --add-service=ssh
$ firewall-cmd --reload
OK,现在准备工作都已就绪,安装了源,安装配置了防火墙,下一步开始搭建服务了。
搭建 Shadowsocks 服务
这个服务是最简单也是最常用的。
安装组件
代码如下:
$ yum install m2crypto python-setuptools
$ easy_install pip
$ pip install shadowsocks
安装时部分组件需要输入 Y 确认。小内存 VPS 可以分别安装组件。
安装完成后配置服务器参数
代码如下:
$ vi /etc/shadowsocks.json
写入如下配置:
代码如下:
{
"server":"0.0.0.0",
"server_port":8388,
"local_address": "127.0.0.1",
"local_port":1080,
"password":"mypassword",
"timeout":300,
"method":"aes-256-cfb",
"fast_open": false,
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/fuwuqi/)"workers": 1
}
将上面的 mypassword 替换成你的密码, server_port 也是可以修改的,例如 443 是 Shadowsocks 客户端默认的端口号。
如果需要修改端口,需要在防火墙里打开响应的端口,用 firewalld 操作就比较简单了:
代码如下:
$ vi /usr/lib/firewalld/services/ss.xml
下面代码粘贴到里面:
代码如下:
保存退出,然后重启 firewalld 服务:
代码如下:
$ firewall-cmd --permanent --add-service=ss
$ firewall-cmd --reload
运行命令,启动 Shadowsocks 服务
运行下面的命令:
代码如下:
$ ssserver -c /etc/shadowsocks.json
至此 shadowsocks 搭建完成,shadowsocks 已经可以使用,如果你没有过高的要求,下面的步骤可以省略,下面是后台运行 Shadowsocks 的步骤。
安装 supervisor 实现后台运行
运行以下命令下载 supervisor:
代码如下:
$ yum install python-setuptools
$ easy_install supervisor
然后创建配置文件:
代码如下:
$ echo_supervisord_conf /etc/supervisord.conf
修改配置文件:
代码如下:
$ vi /etc/supervisord.conf
在文件末尾添加:
代码如下:
[program:ssserver]command = ssserver -c /etc/shadowsocks.json
autostart=true
autorestart=true
startsecs=3
设置 supervisord 开机启动,编辑启动文件:
代码如下:
$ vi /etc/rc.local
在末尾另起一行添加:
代码如下:
$ supervisord
保存退出(和上文类似)。另 centOS7 还需要为 rc.local 添加执行权限:
代码如下:
$ chmod +x /etc/rc.local
至此运用 supervisord 控制 Shadowsocks 开机自启和后台运行设置完成。重启服务器即可。
搭建 Strongswan 实现在 iOS 上连接 VPN
如果你只是需要在 Android, PC 上使用 VPN,那可以直接忽略此章内容, Shadowsocks 已经可以非常完美的帮助以上设备实现。 但是由于 iOS 上无法使用 Shadowsocks 所以需要使用 Strongswon 建立 IPsecVPN。
下载并编译 Strongswan
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/fuwuqi/)首先我们来编译 Strongswan, 因为直接用 yum install 的不能用,原因不明,所以直接下载源码和依赖包进行编译。
下载 Strongswan 的源码:
代码如下:
$ wget http://download.strongswan.org/strongswan.tar.gz && tar zxvf strongswan*
$ cd strongswan*
下载编译源码所需要的依赖包(小内存请分批下载):
代码如下:
$ yum install -y make gcc gmp-devel openssl openssl-devel
因搬瓦工是 OpenVZ 的所以用下面的命令来进行配置:
代码如下:
$ ./configure --sysconfdir=/etc --disable-sql --disable-mysql --disable-ldap --enable-dhcp --enable-eap-identity --enable-eap-mschapv2 --enable-md4 --enable-xauth-eap --enable-eap-peap --enable-eap-md5 --enable-openssl --enable-shared --enable-unity --enable-eap-tls --enable-eap-ttls --enable-eap-tnc --enable-eap-dynamic --enable-addrblock --enable-radattr --enable-nat-transport --enable-kernel-netlink --enable-kernel-libipsec
非 OpenVZ 的请用下面的命令来进行配置:
代码如下:
./configure --sysconfdir=/etc --disable-sql --disable-mysql --disable-ldap --enable-dhcp --enable-eap-identity --enable-eap-mschapv2 --enable-md4 --enable-xauth-eap --enable-eap-peap --enable-eap-md5 --enable-openssl --enable-shared --enable-unity --enable-eap-tls --enable-eap-ttls --enable-eap-tnc --enable-eap-dynamic --enable-addrblock --enable-radattr --enable-nat-transport --enable-kernel-netlink
开始编译源代码:
代码如下:
$ make && sudo make install
没有错误出现后,可进行下一步。
生成证书
建立个临时目录来生成证书:
代码如下:
$ mkdir ~/ipsec_cert && cd ~/ipsec_cert
生成服务器证书
用的是 iOS8 不越狱方案中创建的脚本。SERVER 换成自己的域名或IP 都行。
代码如下:
$ wget https://gist.githubusercontent.com/songchenwen/14c1c663ea65d5d4a28b/raw/cef8d8bafe6168388b105f780c442
412e6f8ede7/
server_key.sh
$ sh server_key.sh SERVER
生成客户端证书
同样是他的脚本,这个脚本还会生成一个 .p12 证书,这个证书需要导入到 iOS 里,USER 换成你自己的用户名 EMAIL 换成你自己的 email。
代码如下:
$ wget https://gist.githubusercontent.com/songchenwen/14c1c663ea65d5d4a28b/raw/54843ae2e5e6d1159134cd9a90a08
c31ff5a253d
/client_key.sh
$ sh client_key.sh USER EMAIL
复制证书到 /etc/ipsec.d/
Strongswan 需要的是 cacerts/strongswanCert.pem 、certs/vpnHostCert.pem 、private/vpnHostKey.pem 这三个文件。
代码如下:
$ sudo cp cacerts/strongswanCert.pem /etc/ipsec.d/cacerts/strongswanCert.pem
$ sudo cp certs/vpnHostCert.pem /etc/ipsec.d/certs/vpnHostCert.pem
$ sudo cp private/vpnHostKey.pem /etc/ipsec.d/private/vpnHostKey.pem
同步客户端证书到本地
客户端需要的是 .p12 证书和 cacerts/strongswanCert.pem 将这两个证书同步到本地,然后通过邮件发送到 iOS 设备中并安装
代码如下:
$ scp -P ssh端口 root@服务器ip:~/ipsec_cert/****.p12 ~/
$ scp -P ssh端口 root@服务器ip:~/ipsec_cert/cacerts strongswanCert.pem ~/
配置 Strongswan
编辑 /etc/ipsec.conf:
代码如下:
$ vi /etc/ipsec.conf
将下面的代码覆盖原有内容:
代码如下:
config setup
### strictcrlpolicy=yes
### uniqueids = replace
### charondebug="cfg 2, dmn 2, ike 2, net 0" ### 要看Log时,取消注释本行
conn %default
keyexchange=ikev1
dpdaction=hold
dpddelay=600s
dpdtimeout=5s
lifetime=24h
ikelifetime=240h
rekey=no
left=emptyzone.github.io ### 这里换成你登录 VPN 用的域名或 IP,与生成证书时相同
leftsubnet=0.0.0.0/0
leftcert=vpnHostCert.pem
leftsendcert=always
right=%any
rightdns=8.8.8.8
rightsourceip=10.0.0.0/8
conn CiscoIPSec
rightauth=pubkey
rightauth2=xauth
auto=add
编辑 /etc/ipsec.secrets, 创建用户名及密码:
代码如下:
vi /etc/ipsec.secrets
将以下内容添加进去:
代码如下:
### 验证用户所需的信息
### 用户名 : EAP "密码"
: RSA vpnHostKey.pem
你的用户名 : EAP "你的密码"
使用 firewalld 配置防火墙
用 firewalld 开放 4500、500 端口和 esp 协议。
代码如下:
$ vi /usr/lib/firewalld/services/ipsec.xml
内容如下:
代码如下:
然后输入以下命令后,至此整个搭建过程就结束了。
代码如下:
$ firewall-cmd --permanent --add-service=ipsec
$ firewall-cmd --permanent --add-masquerade
$ firewall-cmd --reload
把下载的两个证书用 email 发送到你的 iOS 上,安装后建立个 VPN 连接,选 IPsec,使用证书,选择你的用户名的证书即可,登录下试试吧。




