[爆卦]linux vpn server架設是什麼?優點缺點精華區懶人包

為什麼這篇linux vpn server架設鄉民發文收入到精華區:因為在linux vpn server架設這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者Akaz (Akaz)看板KanColle標題[攻略] 自己的VPN自己架:OpenVPN架設篇...


延續前文:[攻略] 自己的VPN自己架:基礎建設篇 #1LUM6Das

這次的圖會比較少,因為大部分都是照著指令就可以了。



四、OpenVPN簡介

OpenVPN是一個開放原始碼、跨平台的VPN實作。
雖然連線需要額外的客戶端軟體,但目前幾乎所有平台上都已經有OpenVPN的客戶端。

OpenVPN的優點

1.使用CA(數位憑證)做身分驗證,目前除了誘騙使用者自己開門外沒有破門方法。

2.使用OpenSSL加密,可以自行更換加密演算法。
預設使用BlowFish做為Cipher(這個有點難解釋 有興趣的朋友可以自己Google),
BlowFish至今沒有被攻破的紀錄(理論上不可行)。
在常用的VPN方案中擁有最高的安全性。

3.在走UDP的時候(預設)擁有常用VPN方案中僅次於PPTP的速度。

OpenVPN的缺點

1.需要客戶端軟體。

2.我想不到了,歡迎補充。


五、OpenVPN架設

首先安裝OpenVPN。
因為後面會有一些問題,所以這邊不用sudo,直接進root做。

xxx@xxx:~$ sudo su -
root@xxx:~# apt-get -y install openvpn

安裝好之後我們要先使用附帶安裝的easy-rsa生成OpenVPN所需要的數位憑證。

root@xxx:~# cd /etc/openvpn
root@xxx:/etc/openvpn# mkdir -p easy-rsa
root@xxx:/etc/openvpn# cp /usr/share/easy-rsa/* easy-rsa/
root@xxx:/etc/openvpn# cd easy-rsa

編輯easy-rsa裡面的vars這個檔案。

root@xxx:/etc/openvpn/easy-rsa# nano vars

裡面應該有一段長這樣:

http://i.imgur.com/3IrhxPL.png

其實不改也可以,總之這段不可以有任何一個為空。

http://i.imgur.com/Ic2wzjW.png

改完以後Ctrl+X、Y、Enter存檔。
然後把vars加到系統的參數中。

root@xxx:/etc/openvpn/easy-rsa# . ./vars ←注意前面有多一個點
root@xxx:/etc/openvpn/easy-rsa# ./clean-all

接下來產生憑證。

root@xxx:/etc/openvpn/easy-rsa# ./build-ca

會問你一些東西,因為剛才已經在vars裡面設定好了所以一直Enter就可以了。

root@xxx:/etc/openvpn/easy-rsa# ./build-key-server server

也是一直Enter,後面會出現一個幾個額外的東西,可以不用管它們,直接留空。
最後會有兩個問題,要打上y,不能直接Enter。

http://i.imgur.com/WFDxeQQ.png

然後產生DH(這個也有點難解釋)。

root@xxx:/etc/openvpn/easy-rsa# ./build-dh

會跑出很多'.'和'+',需要一段時間,請耐心等候。
以上是伺服器端的憑證,現在要製作客戶端的。
這邊有分歧路線:

1.生成有密碼的憑證:建議
這樣生成的憑證在每次連線的時候都會額外詢問密碼。

root@xxx:/etc/openvpn/easy-rsa# ./build-key-pass client
Enter PEM pass phrase: (打上你要的密碼)
Verifying - Enter PEM pass phrase: (再一次)

後面與build-key-server操作相同。

2.生成沒有密碼的憑證:不建議

root@xxx:/etc/openvpn/easy-rsa# ./build-key client

和build-key-server操作完全相同。

接著要編寫伺服器端的設定檔。首先回到/etc/openvpn。

root@xxx:/etc/openvpn/easy-rsa# cd ..

因為字太多了所以我還是放在codepad.org:http://codepad.org/xWE6zhtI
(已更正,原先的版本少了一行)
把這些設定值寫在server.conf裡面。

root@xxx:/etc/openvpn# nano server.conf

然後先建好用來分配ip的文件檔。

root@xxx:/etc/openvpn# touch ipp.txt

現在可以打開OpenVPN的伺服器端了。

root@xxx:/etc/openvpn# systemctl start [email protected]

如果沒有任何反應就是開成功了。
為了要讓它能夠每次開機都自動啟動,要啟用它:

root@xxx:/etc/openvpn# systemctl enable [email protected]

(先前疏忽了,忘了這部分,非常抱歉)
接著為了要讓連線能透過VPS往外走,要修改一部分的系統設定。
首先暫時關閉 fail2ban。

root@xxx:~# systemctl stop fail2ban.service

這邊可能會需要數十秒的時間。
關閉 fail2ban 後修改 iptables 的設定值。

root@xxx:~# iptables -t nat -A POSTROUTING -s 192.168.100.0/24
-o eth0 -j MASQUERADE
(縮成一行 -o前面要空格)

為了讓重新開機後 iptables 能夠自動載入,要把這行設定存下來:

root@xxx:~# iptables-save > /etc/iptables.save
root@xxx:~# nano /etc/network/if-up.d/iptables

編輯這個檔案如下:

#! /bin/sh
iptables-restore < /etc/iptables.save

存檔後讓它可以被執行

root@xxx:~# chmod 0700 /etc/network/if-up.d/iptables

然後修改 IP forwarding 規則。

root@xxx:~# nano /etc/sysctl.conf

在檔案的最後加上

net.ipv4.ip_forward=1
(前面不要加#)

存檔後重新載入剛剛修改的設定檔。

root@xxx:~# sysctl -p

最後重新打開 fail2ban。

root@xxx:~# systemctl start fail2ban.service


六、連線至OpenVPN

在這邊建議先下載OpenVPN和任意FTP軟體(將以FileZilla示範)。
OpenVPN:https://openvpn.net/index.php/open-source/downloads.html
  FileZilla:https://filezilla-project.org/download.php?type=client

首先先把連線需要的憑證下載下來。

root@xxx:/etc/openvpn# apt-get -y install zip
root@xxx:/etc/openvpn# mkdir -p client
root@xxx:/etc/openvpn# cp easy-rsa/keys/ca.crt client/
root@xxx:/etc/openvpn# cp easy-rsa/keys/client.crt client/
root@xxx:/etc/openvpn# cp easy-rsa/keys/client.key client/
root@xxx:/etc/openvpn# zip -r client.zip client/
root@xxx:/etc/openvpn# cp client.zip ~xxx ←xxx請代換成之前建立的使用者
root@xxx:/etc/openvpn# chown xxx:xxx ~xxx/client.zip ←同上

接著打開FileZilla,點擊左上角的「站台管理員」,然後點「新增站台」。

http://i.imgur.com/1tkLqDL.png
http://i.imgur.com/ZcxNvl5.png

在右半邊,主機填上你的VPS的IP,協定選擇SFTP,
登入型式選擇詢問密碼並打上VPS的使用者名稱。

http://i.imgur.com/6EZteYJ.png

然後按連線。打上密碼後會有個類似PieTTY第一次連線時的東西,點選確認。

http://i.imgur.com/lR8EHhM.png

在左邊找到OpenVPN的安裝目錄。(應該會在C:\Program Files\OpenVPN)
進到其中的config資料夾並把client.zip拉到左邊。
下載完就可以關掉FileZilla了。

到C:\Program Files\OpenVPN\config裡面,首先解壓縮client.zip,
並把client資料夾裡的三個檔案拉到config裡面。
在config裡面新增一個文件名為client.ovpn,
內容還是字很多所以一樣貼在codepad.org:http://codepad.org/AmiYEbhd
<ip>請換成你的VPS的IP,如果你的OpenVPN安裝位置不同也請自行依格式修改。

另外有關 routing 的部分:

1.設定DNS:建議但非必須,改成中華DNS亦可

dhcp-option DNS 8.8.8.8
dhcp-option DNS 8.8.4.4

2.所有流量都通過VPN

redirect-gateway def1

3.只讓dmm流量過VPN:不可和2並用

route 203.209.0.0 255.255.0.0
route 203.104.0.0 255.255.0.0

4.讓ptt流量不過VPN(懶人法,直接讓112流量不過VPN):要和2並用

route 140.112.0.0 255.255.0.0 net_gateway

其中 2 或 3 至少要存在一個才能順利連上 DMM。


接著打開OpenVPN GUI,預設安裝的話你應該能在桌面上找到捷徑。

http://i.imgur.com/7O7bNu7.png

打開後應該能在螢幕右下角找到OpenVPN GUI。設定正確的話點兩下就會開始連線。

http://i.imgur.com/r0w2UYB.png

產生客戶端憑證時如果有設定密碼它就會詢問你密碼。

http://i.imgur.com/kZiEmcN.png

打上密碼後,稍微等一下,連線成功的話視窗就會自己消失到右下角。
想要中斷連線的話再把視窗點出來按斷線即可。

然後就可以上去戳艦娘啦!

http://i.imgur.com/En1alnj.png

啊,只是隻...什麼你說馬克撈到了?


七、雜談/廢話

發了基礎建設篇後有些板友提醒安全性的部分,非常感謝。
其實我一直很難拿捏的是想要盡量簡單但同時也要有足夠的安全性,
於是就變成這樣不上不下,但普遍的安全性來說已經OK了。

也有板友覺得有專業知識再做較好。
我個人的觀點是,有的話很好,沒有的話照著做也可以完成;
當然在管理上可能有些不易,但我認為是可以克服的。Linux很有趣的,真的
小弟高中是文組,大學讀資工,也是從照著做開始慢慢學起來的。


回歸到VPN,起初我自己也是使用PPTP VPN,因為它架設非常之簡單,
但因為某大網路長城過於強大,有時候會導致連線極度不穩定,
後來還是改用穿透性較強且安全性較高的OpenVPN。
目前在強大的網路長城(應該沒有對岸那個強就是了)下沒有任何使用上的問題。

也因為PPTP的穿透性較弱,經板友來信告知與我個人測試後,
確定ConoHa阻擋掉GRE協定,導致PPTP在ConoHa無法架設(OpenVPN沒問題),
要租用ConoHa的板友請再三考慮

再次提醒,設置密碼時,
請使用大小寫字母、數字、底線、問號等符號混雜的密碼,且避開既有單詞
一切的加密都防止不了密碼被暴力破解。




本次VPN架設教學至此,感謝收看;有問題歡迎發表推文或來信。

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.217.55
※ 文章網址: https://www.ptt.cc/bbs/KanColle/M.1434186790.A.FC9.html
angel84326: 樓下老馬克 06/13 17:13
yukicon: 提問,所以這樣可以多人共用一個VPS? 06/13 17:21
VPS當然可以,猜測你想說的是VPN?

VPN的話我在伺服器端的設定檔寫了一行「duplicate-cn」,可以讓同組key同時多人連線
Davinais: Linux很有趣的,導致我家裡電腦一半以上都是linux... 06/13 17:24
yukicon: 我的意思是,設一個OPEN VPN,多個帳號? 唉,不知道該 06/13 17:54
yukicon: 正確的表達,就是甲乙丙三人分別用不同的ID通過VPS 06/13 17:55
yukicon: 使用VPN 06/13 17:55
如果要帳號密碼會嚴重降低安全性

如果希望有多組key發配給不同的人
可以在產生的地方 ./build-key-pass <任何名稱>
假設取叫 test 好了 ./build-key-pass test
然後後面就自行把client代換成test (test.crt test.key test.ovpn)
可以用一樣的方法製作多組key分別給甲乙丙
Hevak: 推有提到route的部份,一直常有人問 06/13 18:14
※ 編輯: Akaz (140.112.217.55), 06/14/2015 05:08:19
qooLD: 感謝原po 雖然一知半解但是還是架完了www 06/14 12:16
※ 編輯: Akaz (140.112.217.55), 06/20/2015 13:59:29

你可能也想看看

搜尋相關網站