分享免费福利活动资讯,绿色软件,视频教程,源自灵魂的分享 — 4分贝

Ubuntu 20.04搭建IPSec IKEv2 VPN服务器与客户端连接完整攻略(一)

2020-12-26 19:47:41 投稿人:KK.Yip 围观13487 1 评论 收藏本文

Ubuntu 20.04搭建IPSec IKEv2 VPN服务器与客户端连接完整攻略(一)

  境内早已禁VPN多年,别说能用的,就是收费的都不多还不稳定。无论是工作或是游戏娱乐需求,那么自建一台是最划算的。随着全球云服务器平台技术的成熟,境外服务器或VPS价格也相对差不太多,我们考虑的是速度,推荐Vultr或Linode的新加坡节点。

对于Linux系统我本身也是初哥,网上的资料又很有限(被删帖被禁访),尝试了N种软件,在研究了9个小时后,

Strongswan成功实现Ubuntu 20.04搭建IPSec IKEv2 VPN服务器,IOS、电脑连接都没问题。

因为IOS10起不支持pptp,现在进入正题吧,一共4步完成搭建。

我用的Ubuntu 20.04,系统基础命令都不太熟,所以其他系统命令的差异,您自行对比吧。
 

第一步、编译安装Strongswan

1.我曾尝试了N次用命令下载,无法成功,原因不再赘述,所以从别处下载了strongswan5.9.0版,上传到目标服务器(文件也提供给大家,网盘密码woqg)。
上传后,执行下面的解压命令与进入其目录下。
tar xzf strongswan.tar.gz
cd strongswan-5.9.0

2.编译Strongswan(Xen、KVM使用以下指令)
./configure --enable-eap-identity --enable-eap-md5 \ --enable-eap-mschapv2 --enable-eap-tls --enable-eap-ttls --enable-eap-peap \ --enable-eap-tnc --enable-eap-dynamic --enable-eap-radius --enable-xauth-eap \ --enable-xauth-pam --enable-dhcp --enable-openssl --enable-addrblock --enable-unity \ --enable-certexpire --enable-radattr --enable-tools --enable-openssl --disable-gmp
OpenVZ较上则需再增加一个“ --enable-kernel-libipsec”。(Xen、KVM、OpenVZ知识自行百度,这个简单有资料)

4.安装Strongswan
make; make install
编译完成后如果没有报错,使用ipsec version指令能出现版本信息,则表示安装成功。

Ubuntu 20.04搭建IPSec IKEv2 VPN服务器与客户端连接完整攻略(一)
 

二、配置证书(需按顺序执行,私钥与证书有依赖关系存在)

1.生成CA证书的私钥
ipsec pki --gen --outform pem > ca.pem
如果ipsec pki 出现类似 unknown IPsec command `pki' (`ipsec --help' for list) 错误,说明系统自带的/sbin/ipsec不支持pki选项,用下面的指令安装下pki,再重新生成CA证书的私钥。
apt-get install strongswan-pki

2.使用私钥,签名CA证书
ipsec pki --self --in ca.pem --dn "C=com, O=myvpn, CN=VPN CA" --ca --outform pem >ca.cert.pem
PS:多个vps使用同个CA根证书方法:
如需要多个vps共用一个CA根证书,则以上两步只执行一次,将这个2个文件copy去其他vps执行后面步骤的私钥与证书生成。
最后把多台vps解析到同一域名的不同二级域名下,这样客户端连接各个服务器时,只需安装一次根证书ca.cert.pem即可。

3.生成服务器证书所需的私钥
ipsec pki --gen --outform pem > server.pem

4.用CA证书签发服务器证书
请先确认你的服务器公网IP地址或域名,以后客户端连接时只能使用证书中的地址连接(多服务器使用相同根证书CA的,请先做好服务器的域名解析),然后将下面命令中的120.120.120.120替换为自己服务器的IP地址或域名,一共需要替换两处。
ipsec pki --pub --in server.pem | ipsec pki --issue --cacert ca.cert.pem \ --cakey ca.pem --dn "C=com, O=myvpn, CN=120.120.120.120" \ --san="120.120.120.120" --flag serverAuth --flag ikeIntermediate \ --outform pem > server.cert.pem
注意以上命令中的”C=”和”O=”的值要与第2步CA证书中的C、O的值保持一致。

5.生成客户端证书所需的私钥
ipsec pki --gen --outform pem > client.pem

6.用CA签名客户端证书(C、O的值要与上面第2步CA证书的值一致,CN的值随意)
ipsec pki --pub --in client.pem | ipsec pki --issue --cacert ca.cert.pem --cakey ca.pem --dn "C=com, O=myvpn, CN=VPN Client" --outform pem > client.cert.pem

7.生成pkcs12证书(安卓与电脑连接VPN要安装这个证书)
openssl pkcs12 -export -inkey client.pem -in client.cert.pem -name "client" -certfile ca.cert.pem -caname "VPN CA" -out client.cert.p12
注意以上命令中的“-caname”后面的引号里的值必须要与第2步CA证书中的”CN=”的值保持一致。

8.安装证书(即复制证书到服务目录下)
cp -r ca.cert.pem /usr/local/etc/ipsec.d/cacerts/
cp -r server.cert.pem /usr/local/etc/ipsec.d/certs/
cp -r server.pem /usr/local/etc/ipsec.d/private/
cp -r client.cert.pem /usr/local/etc/ipsec.d/certs/
cp -r client.pem /usr/local/etc/ipsec.d/private/
 

三、配置Strongswan

开始前先科普几个指令
vim #编辑某文件
vi #查看某文件,按键盘上的insert键进入编辑模式,按Esc键退出编辑模式,再用:q就可以完全退出了
:q #退出
:q! #强制退出
:wq #保存并退出

1.编辑ipsec.conf文件
vim /usr/local/etc/ipsec.conf
修改为以下内容:
config setup
    uniqueids=never 

conn iOS_cert
    keyexchange=ikev2
    # strongswan version >= 5.0.2, compatible with iOS 6.0,6.0.1
    fragmentation=yes
    left=%defaultroute
    leftauth=pubkey
    leftsubnet=0.0.0.0/0
    leftcert=server.cert.pem
    leftid=你的服务器IP
    right=%any
    rightauth=pubkey
    rightauth2=xauth
    rightsourceip=10.31.2.0/24
    rightcert=client.cert.pem
    auto=add

conn android_xauth_psk
    keyexchange=ikev1
    left=%defaultroute
    leftauth=psk
    leftsubnet=0.0.0.0/0
    right=%any
    rightauth=psk
    rightauth2=xauth
    rightsourceip=10.31.2.0/24
    auto=add

conn networkmanager-strongswan
    keyexchange=ikev2
    left=%defaultroute
    leftauth=pubkey
    leftsubnet=0.0.0.0/0
    leftcert=server.cert.pem
    right=%any
    rightauth=pubkey
    rightsourceip=10.31.2.0/24
    rightcert=client.cert.pem
    auto=add

conn windows7
    keyexchange=ikev2
    ike=aes256-sha1-modp1024!
    rekey=no
    left=%defaultroute
    leftauth=pubkey
    leftsubnet=0.0.0.0/0
    leftcert=server.cert.pem
    right=%any
    rightauth=eap-mschapv2
    rightsourceip=10.31.2.0/24
    rightsendcert=never
    eap_identity=%any
    auto=add

2.编辑strongswan.conf文件
vim /usr/local/etc/strongswan.conf
修改为以下内容:
charon {
        load_modular = yes
        send_vendor_id = yes
        plugins {
                include strongswan.d/charon/*.conf
                attr {
                        dns = 8.8.8.8, 8.8.4.4
                }
        }
}
include strongswan.d/*.conf

3.编辑ipsec.secrets文件
vim /usr/local/etc/ipsec.secrets
配置VPN帐号、密码、密钥
: RSA server.pem
: PSK "myPSKkey"
: XAUTH "myXAUTHPass"
kk : EAP "123"
将上面的myPSKkey单词更改为你需要的PSK认证方式的密钥;
将上面的myXAUTHPass单词更改为你需要的XAUTH认证方式的密码,该认证方式的用户名是随意的;
上面例子中kk为vpn连接的用户名,123为密码(本行自行修改),可以添加多行,格式如此行,一行一个用户与密码,这即是使用IKEv2的用户名+密码认证方式的登录凭据。
PS:写%any %any : EAP "密码",这样的格式是可以使用任意用户名+密码登录的。
 

四、配置防火墙(需要打开udp的500、1701、4500端口)

1.如果是云服务器,先去平台管理面板配置安全规则,入站规则,开放以上协议端口。

2.开放服务器防火墙端口
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.31.0.0/24  -j ACCEPT
iptables -A FORWARD -s 10.31.1.0/24  -j ACCEPT
iptables -A FORWARD -s 10.31.2.0/24  -j ACCEPT
iptables -A INPUT -i eth0 -p esp -j ACCEPT
iptables -A INPUT -i eth0 -p udp --dport 500 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 500 -j ACCEPT
iptables -A INPUT -i eth0 -p udp --dport 4500 -j ACCEPT
iptables -A INPUT -i eth0 -p udp --dport 1701 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 1723 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.31.0.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.31.1.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.31.2.0/24 -o eth0 -j MASQUERADE

PS:如果VPS有static IP,可将上述防火墙规则的最后3条NAT规则替换为以下3条来提升处理效率,并且将下面需3条规则的ELASTIC_IP替换为vps的静态ip。
iptables -t nat -A POSTROUTING -s 10.31.0.0/24 -o eth0 -j SNAT --to-source ELASTIC_IP
iptables -t nat -A POSTROUTING -s 10.31.1.0/24 -o eth0 -j SNAT --to-source ELASTIC_IP
iptables -t nat -A POSTROUTING -s 10.31.2.0/24 -o eth0 -j SNAT --to-source ELASTIC_IP
PS:OpenVZ指令是将以上的eth0替换为venet0

3.开机自动载入iptables(执行以下指令)
iptables-save > /etc/iptables.rules
cat > /etc/network/if-up.d/iptables<<EOF
#!/bin/sh
iptables-restore < /etc/iptables.rules
EOF
chmod +x /etc/network/if-up.d/iptables

4.编辑sysctl.conf文件
vim /etc/sysctl.conf
找到net.ipv4.ip_forward=1这行,将前面的#号去掉,保存退出(否则Ikev2 vpn连接上后将无法访问外网)。

OK!至此,IPSec/IKEv2 VPN便搭建好了!现在启用服务就可以啦。
ipsec start
开始去配客户端连接吧!

ipsec常用指令:
ipsec start   #启动服务
ipsec stop    #关闭服务
ipsec restart  #重启服务
ipsec reload  #重新读取
ipsec status  #查看状态
ipsec --help  #查看帮助

相关文章:Ubuntu 20.04搭建IPSec IKEv2 VPN服务器与客户端连接完整攻略(二)

标签:Ubuntu   vpn

免责声明:
本站提供的一切内容信息、软件、教程、影音仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!


  • 直接填图片链接地址 或 到免费图床网站上传后,复制粘贴图片链接到这里。
    真皮大沙发待抢...
    被围观0次,0条评论
    正在载入评论列表...