节选自:搭建自己的 VPS 服务器 这里没有ss服务的搭建

环境:搬运工,CentOS7

如果你只是需要在 Android, PC 上使用 VPN,那可以直接忽略此章内容, Shadowsocks 已经可以非常完美的帮助以上设备实现翻墙。 但是由于 iOS 上无法使用 Shadowsocks 所以需要使用 Strongswon 建立 IPsecVPN。

安装 firewalld

$ yum install firewalld firewall-config
$ systemctl start firewalld

P.S. 我在安装完 firewalld 之后然后启动服务的时候一直显示失败,然后重启了一遍服务器就可以正常的启动 firewalld 服务了,
有类似情况的朋友可以重启一下服务器
修改 SSH 端口

$ vi /usr/lib/firewalld/services/ssh.xml

会出现一下的内容

<?xml version="1.0" encoding="utf-8"?><service>
   <short>SSH</short>
   <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
   <port protocol="tcp" port="22"/>
</service>

将 port=”22”,修改成搬瓦工提供给你的端口号,然后 reload firewalld 就 OK

vi 的命令: 按 “i” 是编辑模式,编辑后按 “esc” 退出编辑模式,然后按 Shift 输入 “:wq” 保存退出vi.

$ firewall-cmd --permanent --add-service=ssh
$ firewall-cmd --reload

OK,现在准备工作都已就绪,安装了源,安装配置了防火墙,下一步开始搭建服务了。

下载并编译 Strongswan

首先我们来编译 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/cef8d8bafe6168388b105f780c442412e6f8ede7/server_key.sh
$ sh server_key.sh SERVER

生成客户端证书

同样是他的脚本,这个脚本还会生成一个 .p12 证书,这个证书需要导入到 iOS 里,USER 换成你自己的用户名 EMAIL 换成你自己的 email。

$ wget https://gist.githubusercontent.com/songchenwen/14c1c663ea65d5d4a28b/raw/54843ae2e5e6d1159134cd9a90a08c31ff5a253d/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

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>IPsec</short>
  <description>Internet Protocol Security (IPsec) incorporates security for network transmissions directly into the Internet Protocol (IP). IPsec provides methods for both encrypting data and authentication for the host or network it sends to. If you plan to use a vpnc server or FreeS/WAN, do not disable this option.</description>
  <port protocol="ah" port=""/>
  <port protocol="esp" port=""/>
  <port protocol="udp" port="500"/>
  <port protocol="udp" port="4500"/>
</service>

然后输入一下命令后,至此整个搭建过程就结束了。

$ firewall-cmd --permanent --add-service=ipsec
$ firewall-cmd --permanent --add-masquerade
$ firewall-cmd --reload

把下载的两个证书用 email 发送到你的 iOS 上,安装后建立个 VPN 连接,选 IPsec,使用证书,选择你的用户名的证书即可,登录下试试吧。

标签:VPN

你的评论