蒼天家 本家
Strongswan vpn架設教學 2018-07-01
文章出處
https://atifans.net/articles/ipsec-ikev2-server-on-fedora-rhel-centos/

1. 首先把strongSwan裝起來
# dnf就是yum,只是新版的名字不同,語法都一樣
dnf install strongswan

2. 接著調整sysctl和防火牆的設定檔,我這邊的設定是讓使用者連上VPN之後直接往外網送,當作一個跳板使用
# 先將/etc/sysctl.conf裡加上這兩行
# net.ipv4.conf.all.forwarding = 1
# net.ipv6.conf.all.forwarding = 1
# 然後套用設定
sysctl -p

3. firewalld版本
firewall-cmd --permanent --add-service=ipsec
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -s 10.10.3.0/24 -m policy --dir in --pol ipsec -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -d 10.10.3.0/24 -m policy --dir out --pol ipsec -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -s 10.10.3.0/24 -o ens3 -j MASQUERADE
firewall-cmd --permanent --direct --add-rule ipv6 filter FORWARD 0 -s fd12:3456:789a:1::/64 -m policy --dir in --pol ipsec -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv6 filter FORWARD 0 -d fd12:3456:789a:1::/64 -m policy --dir out --pol ipsec -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv6 nat POSTROUTING 0 -s fd12:3456:789a:1::/64 -o ens3 -j MASQUERADE
firewall-cmd --reload

4. 然後就開始設定strongswan
# /etc/strongswan/ipsec.conf
config setup

conn %default
keyexchange=ikev2
ike=aes256-sha256-modp2048,aes256-sha1-modp2048,3des-sha1-modp2048! # 可自行更換加密套件,但要注意用戶端是否支援
esp=aes256-sha256,aes256-sha1,3des-sha1!
dpdaction=clear
dpddelay=300s
# win7 setting
rekey=no

conn vpn
left=%any
leftsubnet=0.0.0.0/0,::/0
leftauth=pubkey
leftcert=server.crt.pem
leftsendcert=always
[email protected] #連線的vpn url / ip, 必須完全符合.
right=%any
rightsourceip=10.10.3.0/24,fd12:3456:789a:1::/64
rightauth=eap-mschapv2
eap_identity=%any
auto=add

# /etc/strongswan/strongswan.conf
charon {
load_modular = yes
plugins {
attr {
# 在這邊加DNS
dns = 8.8.8.8, 8.8.4.4, 2001:4860:4860::8888, 2001:4860:4860::8844
}
include strongswan.d/charon/*.conf
}
}
include strongswan.d/*.conf

# /etc/strongswan/ipsec.secrets
# /etc/ipsec.secrets - strongSwan IPsec secrets file

# 這個跟ipsec.conf裏頭的server.crt.pem是成對的keypair
: RSA server.key.pem
# 這是用來登入的密碼
username : EAP "password"

5. 接著來產生憑證,
這邊會用strongswan內建的pki來處理,
這邊要注意的是產生server憑證時,
一定要有ikeIntermediate的EKU,
並且將主機的CN name加進SAN名單裏頭,這樣跨平台才不容易有問題

# 產生CA
strongswan pki --gen --type rsa --size 2048 --outform pem > vpnca.key.pem
strongswan pki --self --flag serverAuth --in vpnca.key.pem --type rsa --digest sha256 --dn "C=TW, O=Organization, CN=128.199.112.215" --ca > vpnca.crt.der

# 產生server憑證
strongswan pki --gen --type rsa --size 2048 --outform pem > do-basic.key.pem
strongswan pki --pub --in do-basic.key.pem --type rsa > do-basic.csr
strongswan pki --issue --cacert vpnca.crt.der --cakey vpnca.key.pem --digest sha256 --dn "C=TW, O=Organization, CN=128.199.112.215" --san "128.199.112.215" --flag serverAuth --flag ikeIntermediate --outform pem < do-basic.csr > do-basic.crt.pem

# 複製過去
cp vpnca.crt.der /etc/strongswan/ipsec.d/cacerts/
cp do-basic.crt.pem /etc/strongswan/ipsec.d/certs/server.crt.pem
cp do-basic.key.pem /etc/strongswan/ipsec.d/private/server.key.pem

# 保護private key
chmod 600 /etc/strongswan/ipsec.d/private/server.key.pem

6. 到這邊就完成了,可以先將服務打開
systemctl enable strongswan # 開機啟動
systemctl start strongswan # 現在啟動

#用戶端設定 - Windows
1.將CA憑證(vpnca.crt.der 改名為 vpnca.crt)下載到電腦裡
2.打開MMC,嵌入憑證管理,記得要選電腦帳戶(超重要)

3.依照指示將CA憑證匯入到「信任的根憑證」

4.建立VPN連線,主機記得要填與憑證符合的名字,並選擇「單純建立不要立即連線」
5.打開VPN連線的設定,把安全性改成下面的樣子

6.打開VPN連線的設定 > 網路功能 > TCP/IPv6 , TCP/IPv4(內容) > 進階 > 使用遠端網路的預設匝道(隱藏IP)
7.完成

#用戶端設定 - Android
1.將CA憑證下載到手機裡
2.安裝strongSwan VPN Client(google play)
3.打開設定->安全性->從儲存裝置安裝憑證。如果你的檔案選單全部都是灰色的.
4.打開strongSwan,點選Add VPN Profile,依照圖中設定

5.從strongSwan點選已設定好的VPN進行連線
6.完成
關於我

隨手用部落格

紀錄平時學習用到的東西

考慮想重改版

Github 自學倉庫

我的 Github 帳號

PHP開發

公司: 原生PHP

個人: Slim -> Flight