1. 程式人生 > >linux下vpn伺服器配置和管理

linux下vpn伺服器配置和管理

LINUX  openvpn 配置


1.1 什麼是 VPN

IP 機制模擬出一個私有的廣域網 " 是通過私有的隧道技術在公共資料網路上模擬一條點到點的專線技術。所謂虛擬,是指使用者不再需要擁有實際的長途資料線路,而是使用 Internet 公眾資料網路的長途資料線路。 
1.2 OpenVPN 的功能 
可以將兩個不同的網段打通一條通道,可以互相訪問,對於運維人員來說主要是為了安全,因為 OpenVPNssl 加密機制,增加了密碼的安全度,運維人員可以自定義 ip 段進行管理伺服器,簡單點說,安全方便。

如果把 SSL  VPN 兩個概念分開,大家對他們的含義應該都非常清楚,但是作為一種新技術,它們之間是如何結合起來的大家也許還不是很瞭解。從學術和商業的角度來講,因為他們代表的含義有所不同,因而常常會被曲解。

 
     SSL (安全套接層)協議是一種在 Internet 上保證傳送資訊保安的通用協議。它處於應用層。 SSL 用公鑰加密通過 SSL 連線傳輸的資料來工作。 SSL 協議指定了在應用程式協議(如 HTTP  Telnet  FTP 等)和 TCP/IP 協議之間進行資料交換的安全機制,為 TCP/IP 連線提供資料加密、伺服器認證以及可選的客戶機認證。 SSL 協議包括握手協議、記錄協議以及警告協議三部分。握手協議負責確定用於客戶機和伺服器之間的會話加密引數。記錄協議用於交換應用資料。警告協議用於在發生錯誤時終止兩個主機之間的會話。 
     VPN (虛擬專用網)則主要應用於虛擬連線網路,它可以確保資料的機密性並且具有一定的訪問控制功能。
 VPN 是一項非常實用的技術,它可以擴充套件企業的內部網路,允許企業的員工、客戶以及合作伙伴利用 Internet 訪問企業網,而成本遠遠低於傳統的專線接入。過去, VPN 總是和 IPSec 聯絡在一起,因為它是 VPN 加密資訊實際用到的協議。 IPSec 運行於網路層, IPSec VPN 則多用於連線兩個網路或點到點之間的連線。

所謂的 SSL VPN ,其實是 VPN 裝置廠商為了與 IPsec VPN 區別所創造出來的名詞,指的是使用者利用瀏覽器內建的 SecureSocket Layer 封包處理功能,用瀏覽器連回公司內部 SSL VPN 伺服器,然後透過網路封包轉向的方式,讓使用者可以在遠端計算機執行應用程式,讀取公司內部伺服器資料。它採用標準的安全套接層(

 SSL )對傳輸中的資料包進行加密,從而在應用層保護了資料的安全性。高質量的 SSL VPN 解決方案可保證企業進行安全的全域性訪問。在不斷擴充套件的網際網路 Web 站點之間、遠端辦公室、傳統交易大廳和客戶端間, SSL VPN 克服了 IPSec VPN 的不足,使用者可以輕鬆實現安全易用、無需客戶端安裝且配置簡單的遠端訪問,從而降低使用者的總成本並增加遠端使用者的工作效率。而同樣在這些地方,設定傳統的 IPSec VPN 非常困難,甚至是不可能的,這是由於必須更改網路地址轉換( NAT )和防火牆設定。

1.4 驗證 LINUX 是否支援安裝 VPN

如果購買的 vps 是基於 OpenVZ 型別,無法配置標準的 VPN( 無測試過 ), 部分手機可能無法支援 ,  OpenVZ 支援 pptp  openVPN

在安裝之前請確認一下你購買的 vps 是否開啟了 tun/tap 的支援, burst vps 預設是不開啟 tun/tap 的,可以使用 cat /dev/net/tun 進行檢查

如果是沒有許可權的話可以發個 ticket 要求客服為你開啟 tun/tap

cat /dev/net/tun

cat /dev/net/tun:Permissiondenied( 未開啟 tun/tap)

出現 File descriptor in bad state 說明 tun/tap 已經開啟,可以開始進行 openVPN 的安裝配置

cat /dev/net/tun

cat:/dev/net/tun:Filedescriptor in bad state

現在開始在 vps 上安裝和配置 openVPN ,需要的有下列的軟體 
gcc g++ [gcc g++ 為系統需要的編譯工具 ] 
lzo  [Lzo 庫的功能是對虛擬鏈路進行壓縮 ] 
openssl [ 囊括了主要的密碼演算法、常用的金鑰和證書封裝管理功能以及 SSL 協議 ] 
openvpn

2.1 檢查並安裝編譯工具 gcc g++

# yum install gccgcc-c++ -y

2.2 安裝 lzo 

# cd/home/download/

# wgethttp://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz

# tar -xvzflzo-2.03.tar.gz

# cd lzo-2.03

# ./configure-prefix=/usr/local/lzo && make && make install

# vi/etc/ld.so.conf

include/etc/ld.so.conf.d/*.conf

/lib

/lib64

/usr/lib

/usr/lib64

/usr/local/lib

/usr/local/lib64

編輯完 ld.so.conf, 執行

# ldconfig

使動態庫生效

2.3 安裝 openssl

# cd/home/download/

# wgethttp://www.openssl.org/source/openssl-1.0.1c.tar.gz

# tar -xvzf openssl-1.0.1c.tar.gz

# ./config&& make && make install

2.4 安裝 openvpn

# cd/home/download/

# wgethttp://swupdate.openvpn.org/community/releases/openvpn-2.2.1.tar.gz

# tar -xvzf openvpn-2.2.1.tar.gz

# cd openvpn-2.2.1

./configure--prefix=/usr/local/openvpn --with-lzo-lib=/usr/local/lzo/lib/--with-ssl-lib=/usr/local/ssl/lib/ --with-lzo-headers=/usr/local/lzo/include/--with-ssl-headers=/usr/local/ssl/include/

make &&make install

3.1 建立配置環境

# mkdir/etc/openvpn

# cp -R/home/download/openvpn-2.2.1/easy-rsa/ /etc/openvpn

# cd/etc/openvpn/easy-rsa/2.0/

# ls

total 112

-rwxr-xr-x 1 rootroot 121 Oct 26 03:14 build-ca

-rwxr-xr-x 1 rootroot 354 Oct 26 03:14 build-dh

-rwxr-xr-x 1 rootroot 190 Oct 26 03:14 build-inter

-rwxr-xr-x 1 rootroot 165 Oct 26 03:14 build-key

-rwxr-xr-x 1 rootroot 159 Oct 26 03:14 build-key-pass

-rwxr-xr-x 1 rootroot 251 Oct 26 03:14 build-key-pkcs12

-rwxr-xr-x 1 rootroot 270 Oct 26 03:14 build-key-server

-rwxr-xr-x 1 rootroot 215 Oct 26 03:14 build-req

-rwxr-xr-x 1 rootroot 160 Oct 26 03:14 build-req-pass

-rwxr-xr-x 1 rootroot 430 Oct 26 03:14 clean-all

-rwxr-xr-x 1 rootroot 1459 Oct 26 03:14 inherit-inter

-rwxr-xr-x 1 rootroot 297 Oct 26 03:14 list-crl

-rw-r--r-- 1 rootroot 422 Oct 26 03:14 Makefile

-rwxr-xr-x 1 rootroot 7768 Oct 26 03:14 openssl-0.9.6.cnf

-rwxr-xr-x 1 rootroot 8230 Oct 26 03:14 openssl.cnf

-rwxr-xr-x 1 rootroot 12068 Oct 26 03:14 pkitool

-rw-r--r-- 1 rootroot 8864 Oct 26 03:14 README

-rwxr-xr-x 1 rootroot 894 Oct 26 03:14 revoke-full

-rwxr-xr-x 1 rootroot 180 Oct 26 03:14 sign-req

-rwxr-xr-x 1 rootroot 1602 Oct 26 03:14 vars

-rwxr-xr-x 1 rootroot 190 Oct 26 03:14 whichopensslcnf

結果是程式以及指令碼,這個簡要的說明一下

vars 指令碼,是用來建立環境變數,設定所需要的變數的指令碼 
clean-all 指令碼,是建立生成 CA 證書及金鑰 檔案所需要的檔案和目錄 
build-ca 指令碼,生成 CA 證書 ( 互動 ) 
build-dh 指令碼,生成 Diffie-Hellman 檔案 ( 互動 ) 
build-key-server 指令碼,生成伺服器端金鑰 ( 互動 ) 
build-key 指令碼,生成客戶端金鑰 ( 互動 ) 
pkitool 指令碼,直接使用 vars 的環境變數設定直接生成證書 ( 非互動 )

3.2 生成 CA 證書及金鑰

mv openssl-1.0.0.cnfopenssl.cnf

mkdir/etc/openvpn/easy-rsa/2.0/keys

# cd/etc/openvpn/easy-rsa/2.0/

source ./vars (初始化)

# ./vars( 不使用 )

NOTE: If you run./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/2.0/keys

 : 如果你執行了 ./clean-all, 系統將刪除 /etc/openvpn/easy-rsa/2.0/keys 下的檔案

修改 vars 檔案

定義你所在的國家, 2 個字元 
export KEY_COUNTRY=CN 
你所在的省份 
export KEY_PROVINCE=”JS” 
你所在的城市 
export KEY_CITY=”SUZHOU” 
你所在的組織 
export KEY_ORG="bcgogo.com" 
你的單位 
export KEY_OU="bcgogo.com" 
你的郵件地址 
export KEY_EMAIL="[email protected]"

#. ./vars ( 注意有兩個點,兩個點之間有空格 )

初始化 keys 檔案

# ./clean-all #[  : 刪除 /etc/openvpn/easy-rsa/2.0/keys 下的檔案 ]

# ./build-ca #[  : 生成一個 a 1024 bit RSA 的金鑰 ,writing new private key to 'ca.key']

一路按回車就可以

# cd keys

# ls

ca.crt ca.keyindex.txt serial 可以看到生成的 ca.crtca.key 檔案

可以看到生成的 ca.crt ca.key 檔案

3.3 生成 Diffie-Hellman 檔案

# cd ..

# ./build-dh #[  :Generating DH parameters, 1024 bitlong safe prime]

# ls keys

ca.crt ca.keydh1024.pem index.txt serial

 : 可以看到生成了 1024 為的 Diffie-Hellman 檔案

3.4 生成伺服器使用的 VPN server ca 證書

#./build-key-server chenyz #[  : 其中 chenyz  CA 證書的一個名字 ]

一路回車 ,Sign the certificate? [y/n]:y 選擇 y

然後把剛才生成的 CA 證書和金鑰 copy  /etc/openvpn/ 

# cd keys 
# cp ca.crt ca.key chenyz.crt chenyz.key dh1024.pem /etc/openvpn/

3.5 生成客戶端 CA 證書及金鑰

#./build-key client-chenyz 
一路回車 ,Sign thecertificate? [y/n]:y 選擇 y

 keys 目錄下生成了 client-chenyz.crtclient-chenyz.csr client-chenyz.key 三個客戶端證書 
並且將 ca.crtca.key client-chenyz.crt client-chenyz.csr client-chenyz.key 五個檔案打包 , 以便客戶端 vpn

tar -zcvfbcgogovpn.tar.gzca.crt ca.keyclient-chenyz.crt client-chenyz.csr client-chenyz.key

3.6 修改 openvpn 配置檔案

# cp/home/download/openvpn-2.0.9/sample-config-files/server.conf /etc/openvpn/server.conf 
 vpenvpn 的原始樣例檔案複製到 /etc/openvpn  , 並改名為 openvpn.conf, 我們將在樣例檔案上進行修改

使用的埠,預設 1194

使用的協議,預設使用 UDP ,如果使用 HTTPproxy ,必須使用 TCP 協議

ca: 使用 build-ca 生成的,用於驗證客戶是證書是否合法 
cert: 使用 build-key-server,Server 使用的證書對應的 key, 注意安全 , 防止被盜

dh: 生成的加密檔案

通過 VPN Server  Client push 路由, client 通過 pull 指令獲得 Server push 的所有選項並應用 ( 建議把內網路由加上那樣 VPN 連上後就可直接對區域網操作了 )

可以讓客戶端之間相互訪問直接通過 openvpn 程式轉發

如果 Client 使用的 CA  Common Name 有重複了,或者說客戶都使用相同的 CA #  keys 連線 VPN ,一定要開啟這個選項,否則只允許一個人連線 VPN

對資料進行壓縮

定義使用者

openvpn 狀態 log

每次重新啟動 openvpn 後保留原有的 log 資訊,新資訊追加到檔案最後

3.7 啟動 OpenVPN

修改完畢後 , 即可以啟動 vpn,--daemon 為後臺守護程序模型啟動 
/usr/local/openvpn/sbin/openvpn --daemon --config /etc/openvpn/server.conf

使用 netstat -ln 檢視 1194openvpn 的埠是否已經起來

3.8 把程式載入到開機啟動項中

echo "/usr/local/openvpn/sbin/openvpn--daemon --config /etc/openvpn/server.conf " >> /etc/rc.local

4.1 win 客戶端的安裝和配置

下載 openvpn 客戶端 http://www.openvpn.net/release/openvpn-2.0.9-install.exe 安裝完畢 
把剛剛打包的 userkey.tar.gz 下載解壓到 C:\ProgramFiles\OpenVPN\config 目錄下 
 /home/download/openvpn-2.0.9/sample-config-files/client.conf 也下載到 C:\Program Files\OpenVPN\config 目錄下

接著是配置這個 client.conf 客戶端配置檔案

主要修改有以下幾個地方

dev tun 
proto tcp 
remote 你的 vpn 地址 1194 
user nobody 
group nobody 
ca ca.crt 
cert client-chenyz.crt 
key client-chenyz.key ##  : 檔名和路徑必須對應 
comp-lzo 
#redirect-gateway def1

確保與服務端的配置對應 , 然後將 client.conf 修改檔名為 client.ovpn, 右鍵點選 client.ovpn, 選擇 "Start OpenVPN on this configfile"

可以看到連線已經成功 , 並且建立了 [ 本地連線 6] 一條新的鏈路

相關推薦

linuxvpn伺服器配置管理

LINUX 下 openvpn 配置 1.1 什麼是 VPN IP 機制模擬出一個私有的廣域網 " 是通過私有的隧道技術在公共資料網路上模擬一條點到點的專線技術。所謂虛擬,是指使用者不再需要擁有實際的長途資料線路,而是使用 Internet 公眾資料網路的長途資料

Linuxvsftpd的配置使用

vsftpd設置通過ftp向linux主機傳輸文件十分方便,但是在使用之前也需要對主機進行相關設置。首先是對vsftpd進行配置,詳細的信息可以見這個博客:https://www.huzs.net/?p=1213#server_vsftpd.conf 但是當配置好vsftpd後,仍然無法用ftp鏈接到linu

Linux代理伺服器配置

1.安裝squid [[email protected] ~]# yum install squid -y 安裝: squid.x86_64 7:3.5.20-12.el7.x86_64.rpm

LinuxLinux檢視伺服器配置的命令

目錄 一、伺服器型號 二、作業系統 三、CPU 四、記憶體 五、硬碟 六、其他 一、伺服器型號 dmidecode|grep "System Information" -A9|egrep "Manufacturer|Product" 二

linux ifcfg-ethx配置解析

網路介面配置檔案[[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0# Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)TYPE=Et

linuxssh/sftp配置許可權設定

基於 ssh 的 sftp 服務相比 ftp 有更好的安全性(非明文帳號密碼傳輸)和方便的許可權管理(限制使用者的活動目錄)。 1、開通 sftp 帳號,使使用者只能 sftp 操作檔案, 而不能 ssh 到伺服器 2、限定使用者的活動目錄,使使用者只能在指定的目錄下活動,使用 sftp 的 Chroot

LinuxSamba伺服器配置

    之前一直在用Virtualbox和vagrant來在本地搭建虛擬機器,但是各種意外情況,煩的能搞死你,莫名其妙的崩潰,出錯(也有可能是我的問題),所以決定用之前熟悉的VMware來搭建開發環境。在本地(win)開發時需要能夠和虛擬機器共享資料夾,VMware自帶的

linuxApache伺服器配置虛擬域名

1. 修改httpd.conf 可以直接在Apache配置檔案的結尾新增如下程式碼,給Apache新增虛擬域名: NameVirtualHost *:80 <VirtualHost *:80> ServerName www.nine.com DocumentRoot

LinuxMycat安裝配置使用

                        mysql安裝

LinuxSamba伺服器配置,已成功

    之前一直在用Virtualbox和vagrant來在本地搭建虛擬機器,但是各種意外情況,煩的能搞死你,莫名其妙的崩潰,出錯(也有可能是我的問題),所以決定用之前熟悉的VMware來搭建開發環境

LinuxDHCP伺服器配置 (二)

A、簡介   A.1、DHCP   DHCP:動態主機設定協議(Dynamic Host Configuration Protocol)是一個區域網的網路協議,使用UDP協議工作,主要有兩個用途:給內部網路或網路服務供應商自動分配IP地址給使用者給內部網路管理員作為對所有計算機作中央管理的手段。   A.2、

linux軟體的安裝管理

軟體包1、bin檔案.bin (適合所有Linux發行版)2、rpm包 ,yum(redhat系列)3、原始碼壓縮包 (適合所有的Linux發行版)1.rpm 軟體包的查詢 rpm 命令注意:不能由使用者指定安裝目錄的。安裝目錄預先定義好的。-q 對已安裝的包進行簡單查詢rp

LinuxPostfix的配置使用

開發十年,就只剩下這套架構體系了! >>>   

linuxjdk的安裝配置

rac -s watermark img 使用 etc 文件拷貝 安裝 com 一、首先依據自己的系統位數在網上下載對應的jdk安裝包 下載地址例如以下:http://www.oracle.com/technetwork/java/javase/downloads/jd

linux基本命令操作-目錄與文件的配置管理

linux 達內 計算機 Linux命令 用戶輸入的指令----->解釋器----->內核------->硬件-用來實現某一功能的指令或程序 -輸入命令然後執行相應的程序來實現功能,不是簡單的命令字符實現的 程序在bin下:#ls /bin/xxx-命令的執行依

linux網絡配置管理

linux網絡配置 網絡很重要!網絡是一切網絡服務的基礎,沒有網絡,就不會有今天的BTA。現在的服務器主要是linux,所以linux的網絡配置和管理很重要。 一,網絡通信的簡介通信的三要素是:ip地址,掩碼,路由。ip和netmask是必須有的,有了這兩個條件,可以實現本地網絡通信。如果有ip,net

Linux yum 的配置,加速插件更改默認yum源

.repo aliyun com sts yum 安裝 最快 -o hosts mirror yum 安裝完成後生成的配置文件及目錄: 主配置文件:/etc/yum.conf 資源庫配置目錄:/etc/yum.repos.d 重要文件: /etc/yum.repos.d

Linux nginx+tomcat配置https的總結遇到的坑

master gcc apache ddr code style remote protocol lis 證書的獲取略 服務器的端口443確保外界網絡能夠進行訪問。 是否配置https: nginx:是 tomcat:否 1.首先查看nginx是否支持SSL。 參考鏈接:

linuxnginx、phpmysql安裝配置

一、安裝nginx 安裝nginx yum install -y epel-release yum install nginx -y 檢視nginx軟體包包括了哪些檔案 rpm -ql nginx 啟動nginx systemctl start nginx 檢視ng

系統日誌管理,時間同步服務,linux的網路配置

####系統的日誌管理#### #2.rsyslog的管理# /var/log/messages ##服務資訊登陸 /var/log/secure ##系統登陸日誌 /var/log/cron ##定時任務日誌 /var/log/maillog ##郵件日誌 /var/log/boot.lo