Linux上如何通過 OpenVPN 建立安全的遠程連接(下)
歡迎你們回來繼續(xù)看我們的 OpenVPN 系列的下篇。上次我們講到如何讓遠端計算機(如筆記本電腦)通過簡單的加密隧道登錄到家里的服務器。今天我們接著講進階部分:比如設置 OpenVPN 開機啟動,省得我們每次重啟服務器的時候都要手動開啟 OpenVPN 服務;比如使用 Network Manager 簡化訪問到遠程服務器的過程。
整合到 Network Manager
Network Manager 是一個不錯的 OpenVPN 客戶端;你只需要安裝 network-manager-openvpn 這個插件。我們繼續(xù)上篇使用的配置。打開 Network Manager 配置界面,進入“新建 VPN 連接”的窗口。這個界面布局在 KDE 和 GNOME 下面看起來有點不一樣,但是大體的信息是一樣的。開始的時候你需要選擇 OpenVPN 作為你的 VPN 連接類型,就像圖1所示;如果你沒看到 OpenVPN 的選項,說明你沒有安裝好插件。(圖1是一張 GNOME 下面的圖片。)
圖1:在 Network Manager 上新建 OpenVPN 客戶端
圖2顯示了配置主界面。從上到下分別為:
- 連接名,隨便取一個。
- 遠程服務器的網(wǎng)關。
- 下拉菜單選擇靜態(tài)密鑰(Static Key)。
- 然后通過文件瀏覽器找到靜態(tài)密鑰文件。
- 這個不是方向性的密鑰,所以 Key Direction 這里設為 None。
- 遠程 IP 和 本地 IP 是我們在上一部分已經(jīng)設置好的虛擬 OpenVPN 地址,可分別通過 /etc/openvpn/studio.conf 和 /etc/openvpn/shop.conf 文件獲得。
- 我們無需設置密碼,所以“Show passwords”復選框為空。
- 這個VPN連接是“所有人都可用”,還是只有你可用,隨你喜歡。
圖2:Network Manager 配置 OpenVPN 客戶端主界面
保存然后就可以使用 Network Manager 建立連接了。So easy,媽媽再也不用擔心我的學習了!看見圖3了么?你現(xiàn)在只需點擊一下高亮的按鈕就可以連接到你的家庭服務器,或從你的家庭服務器中斷開連接。
OpenVPN 開機啟動
手動開啟 OpenVPN 很簡單,但是你也許想要更簡單,讓它能夠在服務器重啟的時候跟著自動啟動。在 Debian/Ubuntu 以及絕大部分發(fā)行版中,當你安裝完 OpenVPN 的時候就被設置為開機啟動的。所以你需要重啟系統(tǒng),或者按下面的方法啟動后臺進程:
- $ sudo /etc/init.d/openvpn start $ sudo service openvpn start
第一個命令是比較老的啟動方法,第二個命令使用了“service”命令。“service”命令第一次出現(xiàn)在 Red Hat 發(fā)行版中,如果你的發(fā)行版中沒有安裝這個命令,你需要從你的軟件源里面去找到它。
Ubuntu 使用 Upstart 管理服務進程,Debain 使用的老的 SysV,而 Fedora 使用“systemd”。如果你在 /etc/openvpn 目錄下配置了多個 OpenVPN 的服務,你可以通過“systemd”的命令啟動你要的服務:
- # systemctl start openvpn@studio.service
這里的“studio.service”與我們在上篇講過的例子中的 /etc/openvpn/studio.conf 配置的服務相對應。用這些方法啟動的后臺進程,在系統(tǒng)重啟后會失效,所以這些方法都和上篇講的啟動方式一樣,僅能使 OpenVPN 運行一次。你可以將啟動 OpenVPN 進程的任務交給 chkconfig:
- # service openvpn start # chkconfig openvpn on
上面列出的是啟動 OpenVPN 后臺進程最常見的方式,這個命令啟動了一整個進程,而不是對 /etc/openvpn/下面的所有 .conf 配置文件都維護一個進程。systemd 支持chkconfig 以及 service 命令,所以上面兩條命令能夠正常工作。然而使用 systemd 的發(fā)行版非常多,如果你的工作環(huán)境和我們的不一樣,請通過發(fā)表評論的方式通知我們。
強化你的連接
OpenVPN 的健壯性足夠維持一條持久的連接,即使服務宕掉。而你可以令這個連接變得更加穩(wěn)定,只需要在服務器端和客戶端的 .conf 文件內(nèi)添加下面兩條屬性:
- persist-tun persist-key
這兩條屬性對于那些筆記本電腦用戶來說非常有用,他們的電腦會因為電源保護或需要移來移去而經(jīng)常斷開 OpenVPN 的連接。
現(xiàn)在,該做些什么?
你已經(jīng)完成了所有設置,并且你的服務工作正常,你接下來能用這個干點什么?如果你以前一直用 OpenSSH 來遠程你的服務器,你會有這樣的思維定勢:你可以利用 OpenVPN 登錄到遠程機器,然后跑上面的應用。你要是那樣做,就太浪費 OpenVPN 了。你可以將 OpenVPN 想像成是一條虛擬的以太網(wǎng)電纜接到你的服務器上或者是你的局域網(wǎng)內(nèi),這條電纜還包著厚厚的加密保護。你可以在它提供的隧道上跑任何加密的或不加密的服務,并且只需要在防火墻上開一個端口。
所以你可以利用 OpenVPN 隧道來建立 SSH 連接,然后遠程到服務器,然后在服務器上跑應用。你可以訪問到網(wǎng)絡資源,比如文件共享和 Web 應用。你可以強制讓你的電腦通過 VPN 隧道訪問到網(wǎng)絡,但我認為你會想要同時能夠使用本地網(wǎng)絡和 VPN 網(wǎng)絡的。
所以,在你的筆記本上你可以上網(wǎng)沖浪,使用 SSH,做你想做的任何事,上你想上的任何網(wǎng)絡。當你想利用 OpenVPN 隧道做一些事情時,你只需要打開它,然后輸入 IP 地址:
- $ ssh carla@10.0.0.1
對于一些 Web 服務,操作也簡單:讓你的 Web 瀏覽器訪問到 OpenVPN 的 IP 地址然后登錄進去。舉個例子,我在我家的服務器上跑了多個 Web 服務做測試,我可以通過http://10.0.0.1/drupal訪問 Drupal,可以通過http://10.0.0.1/owncloud訪問 OwnCloud。我電腦上有優(yōu)秀的圖形界面 FTP 客戶端 gFTP,所以只需要填入 IP 地址、用戶名、密碼就能訪問到 FTP 服務器,或者使用下面的命令:
- $ ftp 10.0.0.1 21
你可以遠程管理你的 MySQL 數(shù)據(jù)庫,輸入帳號密碼:
- $ mysql -h 10.0.0.1 -u admin -p
所以最重要的是你要知道怎么去配置一個你想要玩的功能。
很顯然,當我們使用名稱服務(name service)時,會比直接使用 IP 地址更方便。所以某一天我們可以學學如何在 OpenVPN 上布署一個名稱服務。現(xiàn)在,先享受一下 OpenVPN 帶給你的樂趣吧。