作者归档:Jackson

EdgeRouter/VyOS配置DDNS动态域名

Cloudflare

市场上有很多动态域名提供商,其中最值得推荐的是Cloudflare。只要你把注册的域名转到Cloudflare下管理,动态域名本身并不收费,而且一个账户可以管理上千个子域名,没有额外费用,也不需要你实名注册,并且亲测中国境内可用。

EdgeOS/VyOS

EdgeRouter最新版本的固件本身直接支持Cloudflare APIv4,参考以下配置命令。

configure
edit service dns dynamic interface pppoe0 service custom-cloudflare
set host-name www.yoursite.com
set login your_cloudflare_email
set password your_cloudflare_global_API_key
set protocol cloudflare
set options "zone=yoursite.com"
commit;save;exit

USG

UBNT的另外一条产品线,USG系列,其装载的OS版本很老,因此无法直接支持Cloudflare DDNS。网上有很多帖子提到手动更新ddclient软件,但是一旦固件更新,就必须重新配置,非常麻烦。这里我们介绍使用shell script的方法,来定时更新域名。原始脚本参考自Tras2在Github上的帖子

首先在/config/scripts/目录下,创建一个新的script文件cloudflare-update.sh,填入以下内容,并根据你的Cloudflare账户更改文件起头的设置参数。

#!/bin/bash

# A bash script to update a Cloudflare DNS A record with the external IP of the source machine
# Used to provide DDNS service for my home
# Needs the DNS record pre-creating on Cloudflare

# Cloudflare zone is the zone which holds the record
zone="yourdomain.com"
# dnsrecord is the A record which will be updated
dnsrecord="www.yourdomain.com"
# Cloudflare authentication details, keep these private
cloudflare_auth_email="[email protected]"
cloudflare_auth_key="your_cloudflare_global_API_key"

log_file="/var/log/cloudflare.log"

# LOGGER
log() {
    if [ "$1" ]; then
        echo -e "[$(date)] - $1" >> $log_file
    fi
}

# Get the current external IP address
ip=$(curl -s -X GET https://checkip.amazonaws.com)

echo "Current IP is $ip"

if host $dnsrecord 8.8.8.8 | grep "has address" | grep "$ip"; then
  echo "$dnsrecord is currently set to $ip; no changes needed"
  exit
fi

# if here, the dns record needs updating

# get the zone id for the requested zone
zoneid=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=$zone&status=active" \
  -H "X-Auth-Email: $cloudflare_auth_email" \
  -H "X-Auth-Key: $cloudflare_auth_key" \
  -H "Content-Type: application/json" | jq -r '{"result"}[] | .[0] | .id')

echo "Zoneid for $zone is $zoneid"

# get the dns record id
dnsrecordid=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$zoneid/dns_records?type=A&name=$dnsrecord" \
  -H "X-Auth-Email: $cloudflare_auth_email" \
  -H "X-Auth-Key: $cloudflare_auth_key" \
  -H "Content-Type: application/json" | jq -r '{"result"}[] | .[0] | .id')

echo "DNSrecordid for $dnsrecord is $dnsrecordid"

# update the record
update=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$zoneid/dns_records/$dnsrecordid" \
  -H "X-Auth-Email: $cloudflare_auth_email" \
  -H "X-Auth-Key: $cloudflare_auth_key" \
  -H "Content-Type: application/json" \
  --data "{\"type\":\"A\",\"name\":\"$dnsrecord\",\"content\":\"$ip\",\"ttl\":1,\"proxied\":false}")

if [[ $update == *"\"success\":false"* ]]; then
    message="API UPDATE FAILED. DUMPING RESULTS:\n$update"
    log "$message"
    echo -e "$message"
    exit 1 
else
    message="IP changed to: $ip"
    log "$message"
    echo "$message"
fi

以上脚本通过查询特定网站(https://checkip.amazonaws.com)以获取外网IP。如果使用多个WAN口,这个方法就不适用了,可以通过调用EdgeOS运行命令接口来获取端口IP地址:

ip=$(/opt/vyatta/bin/vyatta-op-cmd-wrapper show interfaces | grep pppoe0 | awk '{print $2}')

记住要将新创建的文件改成可执行模式,然后进行测试:

sudo chmod +x /config/scripts/cloudflare-update.sh
sudo /config/scripts/cloudflare-update.sh

测试成功后,我们需要通过网关配置文件来设置定时任务。具体网关配置文件的设置方法请参见UBNT的官网链接。参考的配置文件如下:

{
    "system": {
        "task-scheduler": {
            "task": {
                "update-cloudflar-dns": {
                    "executable": {
                        "arguments": "",
                        "path": "/config/scripts/cloudflare-update.sh"
                    },
                    "interval": "1m"
                }
            }
        }
    }
}

这种方法可以保证设置不会受到固件升级的影响,并且每次USG从云端更新配置时,会自动将更新任务下发到USG。

NoIP

NoIP也是网友常用的DDNS供应商,相对Cloudflare,其最大的好处是使用官方域名,完全免费。EdgeOS和USG也都内置对NoIP的支持,可以使用WebUI或者Unifi控制器直接配置。参考命令行配置如下:

configure
edit service dns dynamic interface pppoe0 
set service noip host-name yourhost.ddns.net
set service noip login yourloginID
set service noip password yourloginpasswd
set service noip server dynupdate.no-ip.com
set web checkip.dyndns.com
commit;save;exit

NoIP的免费DDNS域名服务,供应商会要求域名必须每30天至少更新一次。而EdgeOS的设计在WAN口IP不变化的情况下,不主动更新DDNS记录。因此有必要配置一个定时任务来实现每天更新一次域名。这里我们调用EdgeOS内置的运行命令接口/opt/vyatta/bin/vyatta-op-cmd-wrapper,有兴趣的朋友可以参见官网介绍

configure
edit system task-scheduler task update_noip_pppoe0 
set executable arguments 'update dns dynamic interface pppoe0'
set executable path /opt/vyatta/bin/vyatta-op-cmd-wrapper
set interval 1d
commit;save;exit

公云PubYun

公云是国内老牌DDNS提供商,这里就不赘述了,直接上干货。

configure
set service dns dynamic interface pppoe0 service custom-pubyun host-name yourdomain.f3322.net
set service dns dynamic interface pppoe0 service custom-pubyun login yourlogin
set service dns dynamic interface pppoe0 service custom-pubyun options ssl=no
set service dns dynamic interface pppoe0 service custom-pubyun password yourpasswd
set service dns dynamic interface pppoe0 service custom-pubyun protocol dyndns2
set service dns dynamic interface pppoe0 service custom-pubyun server www.pubyun.com
commit;save;exit

阿里云DDNS

阿里云的DDNS服务最近很流行。EdgeOS和VyOS都没有内置支持,我们参考网上其他的网友Jarvis脚本,做了一个参考实现。

先下载脚本文件updatealiddns.sh,然后用编辑器修改脚本开头的三个参数:

  • aliddns_ak,你的阿里云DDNS账户Access Key ID
  • aliddns_sk,你的阿里云DDNS账户Access Key Secrets
  • aliddns_domain,阿里云域名后缀

上传修改后的脚本文件到/config/scripts目录下,并使用以下命令更改文件属性为可执行。

sudo chmod +x /config/scripts/update-aliddns.sh

接下来,我们配置一个系统任务,每分钟执行一次这个脚本。

configure
set system task-scheduler task update-aliyun-ddns executable arguments 'myhostname'
set system task-scheduler task update-aliyun-ddns executable path '/config/scripts/update-aliddns.sh'
set system task-scheduler task update-aliyun-ddns interval '1m'
commit;save;exit

上述配置中,myhostname是你的二级域名。请根据实际情况修改。

搭建一个Linux文件服务器

简介

日常工作中,我们常常遇到客户需要搭建一个文件服务器,来提供各种类型的文件保存之用。本篇是介绍如何在CentOS上搭建文件服务器系列文章的第一篇,主要是介绍搭建一个基于Samba协议的文件共享服务器,以及Linux桌面如何连接这些文件共享。

安装Samba

我们按照最小配置安装CentOS7,接着安装必须的软件。

sudo yum -y install epel-release
sudo yum install -y nano samba samba-client

然后我们启用Samba。

sudo systemctl enable smb
sudo systemctl enable nmb
sudo systemctl start smb
sudo systemctl start nmb

开启防火墙,samba使用TCP端口139和445,NetBIOS(nmb)使用UDP端口137,CentOS预定义了samba服务,包括这两项配置。

sudo firewall-cmd --permanent --zone=public --add-service=samba
sudo firewall-cmd --reload

开放共享文件夹

开放共享文件夹,允许任何用户,无需账户和密码,就可以访问此只读资源。

我们首先创建一个用户群sharegroup,后续的文件夹权限和共享用户都要用到。

sudo groupadd smbuser

接下来在根目录创建一个开放共享文件夹, /shared/public,并且把group owner设置为刚才我们新增的smbuser,并且设置相应的群组继承属性,以后在shared目录下新建的文件和文件夹,都会自动继承smbuser为group owner。

sudo mkdir -p /shared/public
sudo chgrp -R smbuser /shared
sudo chmod -R 2775 /shared

CentOS缺省启用了SELinux,因此需要设置相应的SELinux策略。但是SELinux的context非常复杂繁琐,因此我们呢直接关闭了SELinux.

sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sudo setenforce 0

如果你不想禁用SELinux,可以按照以下方法配置SELinux策略。不过需要先要装一个应用semanage。

sudo yum install policycoreutils-python
sudo semanage fcontext -a -t samba_share_t "/shared/public(/.*)?"
sudo restorecon -R -v /shared/public/

为了方便管理,我们专门创建了一个不能登录shell的账户sadmin, 专门用于上传文件之用。

sudo useradd -M -s /usr/sbin/nologin -G smbuser sadmin
sudo smbpasswd -a sadmin
sudo smbpasswd -e sadmin

现在我们可以设置samba配置文件。照惯例,我们先备份它,然后直接用你熟悉的编辑器修改其内容。

sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.original
sudo nano /etc/samba/smb.conf

在配置文件中,增加以下内容:

[global]
        workgroup = WORKGROUP
        netbios name = filer
        map to guest = Bad User
        log file = /var/log/samba/%m
        log level = 1
        security = user
        passdb backend = tdbsam
        
[public]
        # This share allows anonymous (guest) access
        # without authentication!
        comment = Public folder
        path = /shared/public
        read only = yes
        guest ok = yes
        browseable = yes
        write list = sadmin
说明:
  1. netbios name,是你网络上看到的服务器名称
  2. map to guest = Bad User: 匹配任何不存在的用户为访客。这里我们设置共享文件为只读。
  3. write list = smbadmin: 仅限特定用户或者特定用户群组(@起头),用逗号间隔开

在重启smb服务前,可以用testparm检查配置是否合法。然后重启服务让新的配置生效。

sudo testparm
sudo systemctl restart smb

最后, 在使用客户端做第一次连接之前,我们可以使用smbclient程序在本机进行测试。下面两个命令供参考,第二个“-U”选项是用于指定登录账户,拿掉后可以匿名访问。

smbclient -L localhost
smbclient \\\\localhost\\public -U sadmin

Home文件夹共享

如果需要允许用户访问自己在Linux服务器上的Home文件夹,可以在smb.conf配置文件中增加一个share,如下所示。”valid users”限制了只有本人才能访问相应的Home文件夹。

#
[homes]
       	comment = Home Directories
        valid users = %S, %D%w%S
        browseable = No
        read only = No
        inherit acls = Yes

启用SELinux的客户,还需要以下额外配置。

setsebool -P use_samba_home_dirs 1

Linux客户端挂载共享文件夹

Windows和MAC下挂载共享文件夹非常方便,网上也有很多资源,我们就不赘述了。这里只单独介绍一下如何在Linux下加载共享文件夹。

首先,安装相应的软件包。

sudo yum install samba-client cifs-utils -y

测试一下文件夹访问是否正常。

smbclient \\\\samba_hostname_or_server_ip\\sharename -U username

创建一个加载位置。

sudo mkdir /mnt/smbmount

挂载到上面创建的文件夹。

sudo mount -t cifs -o user=username,password=password, \
//samba_hostname_or_server_ip/sharename /mnt/smbmount

如果想要每次重启自动挂载,编辑/etc/fstab文件,在文件尾添加以下行。 

//SERVER/sharename /mnt/smbmount cifs _netdev,user=username,password=password, 0 0

如何快速在CentOS7上部署VPN服务器

简介

IKEv2,是一款全新的IPSec VPN协议,相较之前的版本,支持终端在不同的网络之间切换,连接也更加稳定可靠。目前主流操作系统,包括Windows 7及以后的版本,MAC OS, iOS等,都已经预装的官方的VPN客户端。

本文介绍如何在CentOS 7服务器上安装配置Strongswan VPN服务器软件。

安装StrongSwan

Strongswan是一款开源的IPSec软件,我们用它来配置我们的VPN服务器。在终端里执行以下命令,安装Strongswan套件。

sudo yum -y install epel-release
sudo yum install -y strongswan

自签发证书

拨入VPN服务器需要使用证书来认证。我们可以使用Strongswan自带的PKI工具来生成CA证书,服务器证书及密钥。所有这些证书文件都保存在 /etc/strongswan/ipsec.d/目录下。

第一步是生成CA密钥。

sudo strongswan pki --gen --type rsa --size 4096 --outform pem > \
         /etc/strongswan/ipsec.d/private/ca-key.pem

接下来使用CA密钥生成CA证书,下面命令行中“VPN root CA”是签发机构名称,可以替换成任何字符串。

sudo strongswan pki --ca --lifetime 3650 \
        --in /etc/strongswan/ipsec.d/private/ca-key.pem \
        --type rsa --dn "CN=VPN root CA" --outform pem > \
        /etc/strongswan/ipsec.d/cacerts/ca-cert.cer

同样的方式,我们再生成服务器密钥。

sudo strongswan pki --gen --type rsa --size 4096 --outform pem > \
         /etc/strongswan/ipsec.d/private/server-key.pem

 然后用刚才生成的服务器密钥,CA密钥和证书,签发服务器证书。你需要替换下面段落中服务器的域名。

sudo strongswan pki --pub --type rsa \
        --in /etc/strongswan/ipsec.d/private/server-key.pem  \
    | sudo strongswan pki --issue --lifetime 3600 \
        --cacert /etc/strongswan/ipsec.d/cacerts/ca-cert.cer \
        --cakey /etc/strongswan/ipsec.d/private/ca-key.pem \
        --dn "CN=vpn.mydomain.com" --san vpn.mydomain.com \
        --flag serverAuth --flag ikeIntermediate --outform pem \
    >  /etc/strongswan/ipsec.d/certs/server-cert.cer

配置VPN服务器

Strongswan有两个文件,一个是配置文件/etc/strongswan/ipsec.conf, 另一个是密钥文件 /etc/strongswan/ipsec.secrets。使用你熟悉的编辑器对这些文件直接修改。

/etc/strongswan/ipsec.conf
# ipsec.conf - strongSwan IPsec configuration file

# basic configuration

config setup
    charondebug="ike 1, knl 1, cfg 1"
    uniqueids=no

conn %default
    left=%any
    # Windows requires aes256-sha1-modp1024 to be placed in the 1st position
    # these lines end without '!' to append default crypto suites automatically
    ike=aes256-sha1-modp1024
    esp=aes256-sha1
    compress=no
    type=tunnel
    fragmentation=yes
    forceencaps=yes
    dpddelay=300s
    dpdtimeout=30s
    dpdaction=restart
    forceencaps=yes
    ikelifetime=4h
    lifetime=2h

conn ras-winlinux
    eap_identity=%identity
    auto=add
    rekey=no
    dpdaction=clear
    leftid=%any
    leftcert=server-cert.cer
    leftsendcert=always
    leftsubnet=0.0.0.0/0
    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightsourceip=10.255.255.1/24
    rightdns=8.8.8.8,8.8.4.4
    rightsendcert=never

conn ras-apple
    also=ras-winlinux
    [email protected]
参数说明
  1. ike, esp: 这两个参数是设置密码算法的,由于Windows的bug原因,必须把上述范例里的这两个算法放在最前面。
  2. leftsubnet: IKEv2支持split tunnel,也就是本地流量走本地,远端流量走服务器。如果要让所有互联网流量走服务器,就要配置为0.0.0.0/0,否则配置为远端目标网段,例如192.168.100.0/24。
  3. rightsourceip,VPN客户端动态分配的地址池。
  4. rightdns,VPN客户端使用的DNS服务器地址,只在leftsubnet为0.0.0.0/0才有意义。
  5. leftid,对应苹果客户端要求设置的remote id,一般都配置为服务器的域名,也可以是任何字符串。
/etc/strongswan/ipsec.secrets
# ipsec.secrets - strongSwan IPsec secrets file

# roadwarrior user accounts 

 : RSA server-key.pem

user1  : EAP "userpassword1"

配置防火墙

我们需要配置防火墙策略实现以下目的:

  1. 允许IPSec相关流量进入;
  2. 允许转发客户端流量,并对客户端IP进行地址转换;
  3. 对TCP包设置最大包大小,避免大包碎片化造成性能下降;

首先修改/etc/sysctl.conf,允许转发。

sudo echo "# VPN forwarding setup
net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.conf
sudo sysctl -p

接下来设置防火墙策略,允许IPSec流量进入。

sudo firewall-cmd --zone=public --add-service=ipsec
sudo firewall-cmd --zone=public --add-port=4500/udp

设置出口地址转换,让远端客户端可以使用服务器IP访问相关资源。

sudo firewall-cmd --zone=public --add-masquerade

增加一条防火墙策略,允许转发客户端流量,注意下面的网段需要和ipsec.conf里的设置一致。

sudo firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -s 10.255.255.0/24 -j ACCEPT

设置TCP MSS(最大报文段长度),避免过多的碎片包影响性能。一般我们可以设置TCP大小在360字节左右,如果再考虑某些使用GRE隧道的情况,建议设置在1300字节更保险。

sudo firewall-cmd --direct --add-passthrough ipv4 -t mangle \
            -I FORWARD -p tcp --syn -j TCPMSS --set-mss 1300

最后,将新配置的策略永久保存,下次重启时firewalld会自动装载。

sudo firewall-cmd --runtime-to-permanent

测试

接下来我们开始测试,先启用StrongSwan服务。

sudo systemctl enable strongswan
sudo systemctl start strongswan

查看证书是否正确装载。

sudo strongswan listcerts

显示所有连接状态。

sudo strongswan statusall

  如果无法正常建立连接,日志是一个非常有用的工具。

sudo tail -f -n 200 /var/log/messages

如何设置IPSec VPN客户端

简介


使用VPN,可以让你随时随地,通过加密的隧道,安全访问公司内网资源。

我们使用基于IPSec最新的协议IKEv2来实现VPN。这个协议提供了更可靠快速的认证,以及漫游不同网络的能力。更方便的是,很多常用操作系统,如Window 7以上,macOS,iOS都内置了官方的客户端,使用起来也非常顺畅便捷。

本文介绍了如何在Windows, macOS, Ubuntu, iOS和安卓上设置VPN客户端的方法。

预先准备

  • 下载CA证书
  • 从你的网管那里获取连接参数
    • VPN服务器的域名,类似‘vpn.creekside.network’形式;
    • 你的VPN账户名和密码;
  • 使用安卓手机的客户请下载客户端

Windows10


安装证书

Windows10安装证书的手续略为复杂,请参考以下胶片(点击左右侧箭头可翻页)。

win10-install-certs-1

1. 搜索应用程序mmc.exe并以管理员身份运行

win10-install-certs-2

2. 从文件菜单,选择添加/删除管理单元

win10-install-certs-3

3. 从左侧选择“证书”,然后点击中间的“添加”按钮

win10-install-certs-4

4. 选择计算机账户,然后点击下一步

win10-install-certs-5

5. 选择本地计算机,然后点击完成

win10-install-certs-6

6. 返回证书管理页面

win10-install-certs-7

7. 浏览到受信任的根证书颁发机构,鼠标右键,在所有任务菜单下,选择导入

win10-install-certs-8

8. 进入证书导入向导

win10-install-certs-9

9. 在文件名输入框右侧,点击浏览

win10-install-certs-10

10. 找到你之前下载的证书文件,点击打开

win10-install-certs-11

11. 浏览择证书保存选择选项,并选择受信任的根证书

win10-install-certs-12

12. 恭喜你,完成了证书导入流程

previous arrowprevious arrow
next arrownext arrow
 

设置连接

Windows已经内置了IKEv2 VPN客户端。你需要在第4步里填写你收到的VPN服务器设置信息:

  • VPN服务商:选”Windows内置”
  • 连接名称:你可以自定义便于记忆的名称
  • 服务器名称或地址:填写服务器域名
  • VPN类型:选择“IKEv2”
  • 登录类型:账户名和密码
  • 账户名:你的账户名
win10-ikev2-conn-1

1. 从任务条右下角,点击网络连接图标。

win10-ikev2-conn-2

2. 点击左侧的VPN选项。

win10-ikev2-conn-3

3. 右边VPN页面下,选择添加VPN

win10-ikev2-conn-4

4. 根据前面说明,填写相应的内容。不要使用图片中的信息

win10-ikev2-conn-5

5. 你已完成设置,使用连接启动VPN。

previous arrow
next arrow
 

通过VPN访问互联网

IKEv2自动支持split tunnel功能,也就是只有远程网络才走VPN隧道,互联网流量还是走本地网关。在某些应用场景下,如果你希望使用公司的网络来访问互联网,就可以根据以下步骤完成进一步的配置。

win10-use-remote-gateway-1

1. 在 VPN 页面下, 点击相关设置下的 更改适配器选项

win10-use-remote-gateway-2

2. 鼠标右键点击VPN连接, 然后从下拉菜单中选择 属性

win10-use-remote-gateway-3

3.在对话框中,选择网络分页,然后选择TCP/IPv4一行,点击属性

win10-use-remote-gateway-4

4. 点击右下方的 高级...

win10-use-remote-gateway-5

5. 勾选在远程网络上使用默认网关,取消勾选自动跃点,并在下方的输入框内填入数字1

previous arrow
next arrow
 

Android


Android没有原生客户端,需要下载,并按以下步骤安装。

Static overlay

在应用商店里搜索 “Strongswan VPN Client” 并安装。你也可以从这里下载APK文件并手动安装。

1. 下载Strongswan VPN客户端
Static overlay

通过邮件,或者点击这个链接,下载证书文件到手机,并点击打开。

2. 保存证书文件到手机
Static overlay

选择右侧的证书安装工具,安装证书。

3. 安装证书
Static overlay

你可以用任何字符串命名你的证书,在证书用途上选择VPN应用。然后点击“OK”完成证书安装。

4. 配置证书
Static overlay

打开“Strongswan”应用程序。因为是第一次使用,页面会显示“无活跃VPN”。点击右上角的“添加VPN配置”。

5. 添加VPN配置
Static overlay

输入合适的配置参数(图例只是参考)
- 服务器地址: 输入发送给你的域名.
- VPN 类型: “IKEv2 EAP(用户名/密码)”
- 用户名: 你收到的用户名
- 密码: 你收到的密码
- CA证书: 确认“自动选择”已勾选.(缺省)

完成后保存。

6. 配置VPN连接
Static overlay

回到主页面,点击相应 的VPN配置,即可连接到VPN服务器。

7. 连接到VPN服务器
previous arrow
next arrow

macOS


首先按以下步骤安装证书:

  • 双击下载的证书文件。钥匙串访问应用会自动弹出一个对话框,并提示“钥匙串访问正在尝试修改系统钥匙串。输入密码以允许此次操作“
  • 输入你的计算机密码,然后点击修改钥匙串
  • 双击刚才新引入的VPN证书Creekside Networks Authority。一个参数设置窗口会弹出来,点击信任左侧的箭头,然后在IP安全 (IPSec)一栏中,把缺省的用不信任改成始终信任
  • 系统会再次要求你输入密码确认。确认完成后,刚才的改变会自动被保存下来。证书导入完毕。

接下来我们设置VPN连接。

  • 打开系统偏好设置,选择网络
  • 点击左侧网络列表框下面的“+“号;
  • 在弹出的对话框里
    • 选择接口为VPN
    • VPN类型缺省是IKEv2,这个不要改;
    • 服务名称项目里,你可以输入任何你喜欢的名字;
    • 完成后点击创建;
  • 在新的连接页面里,
    • 服务器地址:输入管理员发给你的域名;
    • 远程ID:和上述服务器地址一样的域名;
    • 本地ID:保持空白;
    • 点击认证设置…,在对话框里输入:
      • 用户名:你的VPN用户名;
      • 密码:你的VPN密码;
      • 完成后,点击“
    • 回到连接页面后,点击应用以保存刚才的设置;
    • 点击连接,你就会连接到VPN服务器了。

iOS


按照以下步骤配置VPN:

  • 使用隔空投送把证书文件发送到你的手机;
  • 一个对话框会自动弹出来,如果你有Apple Watch, 会首先提示你选择选择要安装的设备,选择iPhone,系统会提示描述文件已下载。
  • 打开设置应用,找到通用并打开
    • 向下滑动到描述文件一行出现,点击打开;
    • 在已下载的配置描述文件下方的列表里,点击Creekside Networks Authority一项;
    • 在随后出现的安装描述文件页面中,点击右上角的安装按钮;
    • 输入你的锁屏密码
    • 再次点击安装,证书安装就完成了。
  • 回到通用页面,我们开始配置VPN连接:
    • 向下滑动到VPN一行,点击打开;
    • 在页面的最后一行,点击添加VPN配置…,进入添加配置页面
      • 类型:使用缺省的IKEv2
      • 描述:VPN连接的名称,填写你公司的名称或者任意名字;
      • 服务器地址:输入管理员发给你的域名
      • 远程ID:和上述服务器地址一样的域名
      • 本地ID:保持空白
      • 用户鉴定:保持用户名不变
      • 用户名:你的VPN用户名;
      • 密码:你的VPN密码;
      • 最后点击左上角的完成
    • 回到VPN页面
      • 点选刚才设置的VPN连接;
      • 状态一栏,点击未连接右侧的开关;
      • 你就会连接到VPN服务器了。

Ubuntu


Ubuntu 16.04

首先,我们要下载Strongswan源码,编译并安装:

cd ~
sudo apt-get install -y libssl-dev libglib2.0-dev libnm-dev
wget http://download.strongswan.org/strongswan-5.6.3.tar.bz2
tar xjf strongswan-5.6.3.tar.bz2
cd ~/strongswan-5.6.3
./configure --sysconfdir=/etc --prefix=/usr --libexecdir=/usr/lib \
   --disable-aes --disable-des --disable-md5 --disable-sha1 
   --disable-sha2 --disable-fips-prf --disable-gmp --enable-openssl \
   --enable-nm --enable-agent --enable-eap-gtc --enable-eap-md5 \
   --enable-eap-mschapv2 --enable-eap-identity
make
sudo make install

然后是NetworkManager的Strongswan插件。

cd ~
sudo apt-get install -y intltool libgtk-3-dev libsecret-1-dev \
  libnma-dev network-manager-dev libnm-util-dev libnm-glib-dev \
  libnm-glib-vpn-dev libnm-gtk-dev

wget http://download.strongswan.org/NetworkManager/NetworkManager-strongswan-1.4.4.tar.bz2

tar xjf NetworkManager-strongswan-1.4.4.tar.bz2
cd ~/NetworkManager-strongswan-1.4.4
./configure --sysconfdir=/etc --prefix=/usr --libexecdir=/usr/lib

make
sudo make install

Ubuntu 18.04

我们先下载官方的Strongswan以及相应的NeworkManager插件。

sudo apt install -y strongswan libcharon-extra-plugins network-manager-strongswan

Setup VPN connections

VPN客户端安装好了,接下来是配置VPN连接。

  • Open System Settings, then select Network;
    • Ubuntu 16.04:
      • Click the + sign at the left-bottom corner, choice Interface type to VPN, then click Create;
    • Ubuntu 18.04
      • Click the + sign at the right side of VPN list.
  • A VPN connection type dialog box will pop out, choose IPSec/IKEv2 (Strongswan), click Create;
    • Now a configuration dialog box will pop out. fill in information as directed below;
      • Name: Any text you like to name the VPN connection
      • Gateway
        • Address: The VPN server’s domain name IT sent to you.
        • Certificate: Browse to choose the certificate file you received. 
      • Client
        • Authentication: Select “EAP
        • Username: Use the userid that is given to you.
        • Password:
          • Click the icon at the end of input box.
          • Select the 2nd option: Store the password for all users.
          • Input your password
      • Options:
        • Make sure you check the “Request an inner IP address”.
        • Optionally you may also check Enforce UDP encapsulation
        • Leave use IP compression unchecked.
      • Cipher Proposals
        • Leave this section blank.
    • Finally click the “Add” button to save the configuration.