2017年4月25日 星期二

S小魚仔S Centos 6 搭建 L2TP/IPsec VPN

因為「工作」業務需求,需要搭建「L2TP/IPsec VPN」。
使用「strongswan」和「xl2tpd」兩組套件,透過「yum」進行「Install」,原本要使用「Centos 7」搭建,始終沒有成功...網路上「文章」太多「坑坑洞洞」學習不完全..汗。

==修改「電腦」名稱====

vi /etc/sysconfig/network 

NETWORKING=yes 
HOSTNAME=vpn

==關閉「selinux 」====

vi /etc/sysconfig/selinux

SELINUX=disabled 

==重新「啟動」設定值才會生效======

reboot 

===安裝「epel-release」資源庫===

yum install epel-release -y

==安裝「strongswan、xl2tpd」套件=

yum install strongswan xl2tpd -y

===設定「封包轉送」====

vi /etc/sysctl.conf 

net.ipv4.ip_forward = 1

#寫入「設定值
sysctl -p

===設定 「IPsec 連線」====

vi /etc/strongswan/ipsec.conf



#放到「最後面
config setup
  
conn %default
        ikelifetime=60m
        keylife=20m
        rekeymargin=3m
        keyingtries=1
  
conn l2tp
        keyexchange=ikev1 
        left=192.168.8.20  # 外網「IP」 或 內網「IP
        leftsubnet=0.0.0.0/0
        leftprotoport=17/1701
        authby=secret
        leftfirewall=no
        right=%any
        rightprotoport=17/%any
        type=transport
        auto=add

===設定「PSK 驗證」====

vi /etc/strongswan/ipsec.secrets



# PSK 共享密碼 為「vpn
: PSK "vpn"

===設定「L2TP Tunnel」通道====

#編輯「xl2tpd.conf」設定檔
vi /etc/xl2tpd/xl2tpd.conf



[global] 

listen-addr = 192.168.8.20 # 外網「IP」 或 內網「IP」

[lns default]
#設定「VPN」-「Tunnel
ip range = 172.30.10.1-172.30.10.200
local ip = 172.30.10.254
require chap = yes
unix authentication = yes      #使用pam驗證
name = LinuxVPNserver      #後面會用到
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes


#重新啟動「xl2tpd」服務,寫入「設定值
service xl2tpd restart

#檢查「xl2tpd」狀態
service xl2tpd status


===設定「pma 驗證」====

vi /etc/pam.d/ppp




     auth      required        pam_nologin.so
auth      required        pam_unix.so
account required        pam_unix.so
session required        pam_unix.so


===設定「PPP」獲取「DNS」====

vi /etc/ppp/options.xl2tpd



ipcp-accept-local
ipcp-accept-remote
ms-dns  8.8.8.8
ms-dns 168.95.1.1
noccp
auth
crtscts
idle 1800
mtu 1410
mru 1410
nodefaultroute
debug
lock
proxyarp
connect-delay 5000
login   #透過PAP使用系統密碼驗證

===設定「CHAP」連線「帳號、密碼」====

vi /etc/ppp/chap-secrets




#帳號「vpn」、密碼「vpn」,允許「任何」位置
# client  server      secret  IP addresses
     vpn        LinuxVPNserver    "vpn"            *


===設定「PAP」連線「帳號、密碼」====

vi /etc/ppp/pap-secrets




# client server         secret                IP     addresses
       *                   LinuxVPNserver     ""         *

===設定「Server」相關啟動服務====

#啟動「strongswan」服務
service strongswan start

#啟動「xl2tpd」服務
service xl2tpd start



PS 
若經常會遇到「xl2tpd」服務啟動失敗,請檢查「/etc/xl2tpd/xl2tpd.conf」配置檔。

#開機啟動「strongswan」服務
chkconfig strongswan on

#開機啟動「xl2tpd」服務
chkconfig xl2tpd on


#檢查「strongswan」服務
service strongswan status

#啟動「xl2tpd」服務
service xl2tpd status

===設定「Server」防火牆規則====

#開啟「防火牆」規則

iptables -A INPUT -p esp -j ACCEPT # ESP

iptables -A INPUT -p ah -j ACCEPT # AH

iptables -A INPUT -p udp --dport 500 -j ACCEPT # IKE

iptables -A INPUT -p udp --dport 4500 -j ACCEPT # NAT-T

iptables -A INPUT -p udp -m policy --dir in --pol ipsec -m udp --dport 1701 -j ACCEPT # 強制 l2tp 透過 ipsec 存取。

iptables -t nat -A POSTROUTING -s 172.30.10.0/24 -o eth1 -j MASQUERADE # 轉送「VPN」流量,送往「Interface」。

/etc/init.d/iptables save


#移除「防火牆」阻擋

iptables -D INPUT -j REJECT --reject-with icmp-host-prohibited

/etc/init.d/iptables save

iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited

/etc/init.d/iptables save

==設定「Windows 10」撥號「L2TP/IPsec VPN」===

設定「網路設定

點選「VPN」=>「新增 VPN 連線

1. 選擇「Windows (內建)」
2. 輸入「L2TP-VPN
3. 輸入「192.168.8.20」IP 或 網域名稱
4. 選擇「L2TP /IPsec (使用預先共用金鑰)
5. 輸入「VPN
6. 選擇「使用者名稱與密碼」...以此類推

設定完以後,在「VPN」網卡介面,選擇「安全性
允許這些通訊協定 勾選「(CHAP)」、「(MS-CHAP V2)」。

撥號進行測試「OK!

參考資料
TU的雜七雜八筆記本」-「CentOS 架 L2TP/IPsec VPN