前幾天一直想着使用自己的CentOS7系統搭建一個VPN試一試,結果找了超級多的帖子試了超級多的代碼最後才發現都不可以,然後在網上搜索了大神的一鍵安裝腳本,運行之後發現可以使用,但是本人性格比較執拗,就偷偷的看了看大神的腳本然後自己又重新試了一個下午,終於自己成功的搭建好了一個VPN(◕ˇ∀ˇ◕)。害怕自己以後會忘記,所以記錄下來方便日後查找。
⚠️:本文所有代碼前面的#代表主機的輸入提示,在使用時不需要輸入。
0、一鍵安裝以及聲名
本人也是在拜讀了大神的一件安裝腳本之後才自己進行安裝,如果有想直接一鍵安裝的小夥伴就直接參照:這是鏈接
1、準備
首先我們先在主機中輸入下面命令,如果返回的是yes,證明你的主機支持pptp服務。
# modprobe ppp-compress-18 && echo yes
然後輸入下面的命令,如果返回的是cat: /dev/net/tun: File descriptor in bad state,證明開啓了TUN
# cat /dev/net/tun
2、安裝ppp libreswan xl2tpd firewalld(大部分CentOS7.2已經安裝了firewall)
使用如下命令一鍵安裝:
yum -y install ppp libreswan xl2tpd firewalld
安裝成功會顯示如下:
3、配置iPsec
在主機輸入
# vi /etc/ipsec.conf
進入vi編輯頁面,長按鍵盤上的d刪除文本中的所有文件,然後按鍵盤的i進行輸入,將下面文本粘貼進去:
將下面的XXX.XXX.XXX換成你想使用的本地IP地址的前幾個,將YYY.YYY.YYY.YYY換成你主機的公網IP 地址。例如我就是將XXX.XXX.XXX換成了192.168.3,將YYY.YYY.YYY.YYY換成了我的測試主機的IP地址。⚠️:最好記住你設置的XXX.XXX.XXX,在後面還會有用的到的地方哈。
version 2.0
config setup
protostack=netkey
nhelpers=0
uniqueids=no
interfaces=%defaultroute
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:!XXX.XXX.XXX.0/24
conn l2tp-psk
rightsubnet=vhost:%priv
also=l2tp-psk-nonat
conn l2tp-psk-nonat
authby=secret
pfs=no
auto=add
keyingtries=3
rekey=no
ikelifetime=8h
keylife=1h
type=transport
left=%defaultroute
leftid=YYY.YYY.YYY.YYY
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
dpddelay=40
dpdtimeout=130
dpdaction=clear
sha2-truncbug=yes
修改完成之後按下ESC按鍵,然後輸入:wq保存退出。
然後修改/etc/ipsec.secrets文件。在控制檯輸入:
# vi /etc/ipsec.secrets
然後仍舊長按d來刪除文件(vi編輯器中dd代表刪除一行)。然後將下面的文本粘貼進去:
⚠️:將下面的PASSWORD變成你自己想要設置的PSK密碼,最好複雜一點,但要確保自己能夠記住!(PSK密碼即預共享密鑰)
%any %any : PSK "PASSWORD"
然後保存退出。
4、配置xl2tp
下一步我們修改文件/etc/xl2tpd/xl2tpd.conf。在控制檯輸入:
# vi /etc/xl2tpd/xl2tpd.conf
同樣,我們長按d刪除所有的文本,然後粘貼下面的文本輸入進去:
⚠️:將上面記着的XXX.XXX.XXX帶入下面。例如我的就應該將XXX.XXX.XXX變成192.168.3
[global]
port = 1701
[lns default]
ip range = XXX.XXX.XXX.2-XXX.XXX.XXX.254
local ip = XXX.XXX.XXX.1
require chap = yes
refuse pap = yes
require authentication = yes
name = l2tpd
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
然後我們保存退出。
然後修改文件/etc/ppp/options.xl2tpd。在控制檯輸入:
# vi /etc/ppp/options.xl2tpd
仍舊是長按d刪除文本,然後將下面的文本粘貼進去:
ipcp-accept-local
ipcp-accept-remote
require-mschap-v2
ms-dns 8.8.8.8
ms-dns 8.8.4.4
noccp
auth
hide-password
idle 1800
mtu 1410
mru 1410
nodefaultroute
debug
proxyarp
connect-delay 5000
然後保存退出。
5、設置賬號密碼
在控制檯輸入如下命令:
# rm -f /etc/ppp/chap-secrets
# vi /etc/ppp/chap-secrets
然後我們在新文本中輸入下面內容:
⚠️:將下面的USER和USER_PASSWORD換成你的賬號和密碼就可以,可以複雜一點但是自己要記住!
# Secrets for authentication using CHAP
# client server secret IP addresses
USER l2tpd USER_PASSWORD *
6、修改內核數據
修改文件/etc/sysctl.conf,使用如下命令:
# vi /etc/sysctl.conf
⚠️:這個文本不要全部刪除,在文本的最後按下i然後粘貼如下文本:
# Added by L2TP VPN
net.ipv4.ip_forward=1
net.ipv4.tcp_syncookies=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_responses=1
然後我們自己創建一個腳本來想文本中輸入命令:
# vi 1.sh
在新的sh文件中輸入如下命令:
for each in `ls /proc/sys/net/ipv4/conf/`;
do
echo "net.ipv4.conf.${each}.accept_source_route=0" >> /etc/sysctl.conf
echo "net.ipv4.conf.${each}.accept_redirects=0" >> /etc/sysctl.conf
echo "net.ipv4.conf.${each}.send_redirects=0" >> /etc/sysctl.conf
echo "net.ipv4.conf.${each}.rp_filter=0" >> /etc/sysctl.conf
done
然後保存退出。
然後在控制檯輸入:
# chmod +x 1.sh && ./1.sh && rm -rf 1.sh
# sysctl -p
可以看見內核修改生效。
7、修改防火牆數據,開啓相應端口
然後我們在創建並修改文件:/etc/firewalld/services/xl2tpd.xml。在控制檯輸入如下命令:
# vi /etc/firewalld/services/xl2tpd.xml
在文本中粘貼如下代碼:
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>xl2tpd</short>
<description>L2TP IPSec</description>
<port protocol="udp" port="4500"/>
<port protocol="udp" port="1701"/>
</service>
然後我們保存退出,並賦予文件相應的權限,代碼如下:
chmod 640 /etc/firewalld/services/xl2tpd.xml
現在我們幾乎就已經大功告成了,最後我們只需要設置一下系統打開服務並且添加相應的防火牆規則就OK了。最後我們在控制檯輸入如下代碼:
# systemctl enable ipsec
# systemctl enable xl2tpd
# systemctl enable firewalld
# firewall-cmd --reload
# firewall-cmd --permanent --add-service=ipsec
# firewall-cmd --permanent --add-service=xl2tpd
# firewall-cmd --permanent --add-masquerade
# firewall-cmd --reload
# systemctl restart ipsec
# systemctl restart xl2tpd
8、大功告成,ENJOY IT!
「本文所有代碼我都重新測試過一遍,對於KVM架構的CentOS7實測可用,如果有什麼問題或者錯誤歡迎各位大神的不吝賜教,我的個人資料中有郵箱,歡迎各位的指教。」