openvpn server端 安裝設定

安裝:
直接用OS的套件管理安裝就好;設定檔應該會在/etc/openvpn/ 底下

憑證製作:
一般來說,openvpn裝好後預設client連接認證是使用ssl-key,所以必須先製作Server端及client的憑證
先建一個放置憑證的目錄:

mkdir /etc/openvpn/keys

然後:

cd /usr/share/openvpn/easy-rsa
(路徑會隨linux版本不同而有所變化,ubuntu是在 /usr/share/doc/openvpn/examples/easy-rsa/2.0)
vi vars
視需求進行以下部份的修改:
key的長度,2048安全性更高一些
export KEY_SIZE=2048
Server root CA有效期限(天數)
export CA_EXPIRE=730
client憑證有效期限 (天數)
export KEY_EXPIRE=365
#以下部份是憑證資料
export KEY_COUNTRY="TW"
export KEY_PROVINCE="Taiwan"
export KEY_CITY="Taipei"
export KEY_ORG="自行設定"
export KEY_EMAIL="自行設定"

接下來開始產生憑證:

source ./vars
./clean-all
./build-dh #會產生檔案:dh2048.pem
./build-ca #會產生檔案:ca.crt ca.key
./build-key-server server 會產生檔案:server.csr server.key
openvpn --genkey --secret tls.key #會產生檔案:tls.key


製作client認證用憑證:
方法一:

./build-key acman

方法二:
此方法和前面不同的是會讀入 vars的憑證資料,然後就直接把憑證製作出來,不會問你任何問題。

source ./vars
./pkitool acman
會產生:acman.crtacman.key
(紅字:acman部份請自行命名)

如果你要一次建立很多個憑證,利用pkitool可以這樣做:

for (( i=1; i<=9; i=i+1 ));do ./pkitool user$i;done

這樣就會直接建立 user1~user9 共十個client憑證

將openvpn Server需要用到的憑證存到前面建立的 /etc/openvpn/keys/底下

cd /usr/share/openvpn/easy-rsa/keys
cp dh2048.pem ca.crt server.crt server.key tls.key /etc/openvpn/keys/

Server 設定:
Server Config File:/etc/openvpn/openvpn.conf

dev tun
;; Listen port: 1194
port 1194
;; tcp mode
proto tcp
;; vpn 使用網段,勿和原有網段相衝突
server 192.168.0.0 255.255.255.0
;; 允許client間互相連接
;client-to-client
ifconfig-pool-persist ipp.txt
keepalive 10 120
tls-server
;; Key File 設定
dh /etc/openvpn/keys/dh2048.pem
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key

;; openvpn 啟動的身份;如果不是root,會影響後面的進階設定
user root
group root
;;----以下是進階部份設定,非必要----
;; 針對client端個別設定
client-config-dir "/etc/openvpn/users/"
;; client登入後要執行的script
learn-address "/etc/openvpn/learnscript/userlog"
;; 以下兩行為啟動 mysqld ,利用user/password認證
plugin /usr/lib/openvpn/openvpn-auth-pam.so openvpn
;; 將登入使用的username,當作憑證的CN name(寫入log需要)
username-as-common-name
;;----進階部份設定結束----
comp-lzo
persist-tun
persist-key
tls-auth /etc/openvpn/keys/tls.key 0
status /var/log/openvpn/openvpn-status.log
log         /var/log/openvpn/openvpn.log
verb 3

openvpn Server的設定到此,接下來就是設定openvpn允許連上來的client可以連到哪裡;這部份藉由iptables來達成,以下是幾個範例:
假設openvpn Server有兩個ip;分別是:
eth0:1.2.3.4(對外)
eth1:172.17.0.1(對內) netmask:255.255.0.0
opevpn使用的ip是192.168.0.0/255.255.255.0
首先,要打開Server的ip_forward:

echo 1 > /proc/sys/net/ipv4/ip_forward

如果你要讓 client連上來後,可以透過openvpn連到internet:

/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to-source 1.2.3.4

如果你要讓 client連上來後,可以透過openvpn連到Server端的內部網路:

/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j SNAT --to-source 172.17.0.1

如果你要讓client連上來後,只可以透過openvpn連到內部特定的某ip或特定的某一段ip

只能連到172.17.1.1
/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -p tcp -d 172.17.1.1 -j SNAT --to-source 172.17.0.1
只可以連到172.17.1.1~172.17.1.254
/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -p tcp -d 172.17.1.0/24 -j SNAT --to-source 172.17.0.1

啟動 openvpn

/etc/init.d/openvpn start

Server的部份到此結束,進階部份的作法之後再補

本篇發表於 VPN。將永久鏈結加入書籤。

openvpn server端 安裝設定 有 7 則回應

  1. 通告: openvpn client端 安裝設定 | 老農遊記

  2. PETER 說道:

    你好,

    小弟也在自己的NAS上面架設了一個VPN.
    剛好看到您的文章裡面有提到IPTABLES的部分
    可否麻煩您,教導一下如何安裝IPTABLES在QNAP上面呢?

  3. acman 說道:

    QNAP...你要在特定設備上安裝iptables
    先看看該設備本身有沒有吧!!
    如果沒有的話那就牽涉到"改機"的問題
    恐怕沒辦法三言兩語就說完

  4. Dawn Maguire 說道:

    My programmer is trying to persuade me to move to .net from PHP. I have always disliked the idea because of the expenses. But he's tryiong none the less. I've been using Movable-type on numerous websites for about a year and am worried about switching to another platform. I have heard fantastic things about blogengine.net. Is there a way I can import all my wordpress posts into it? Any kind of help would be greatly appreciated!

  5. Jessica Burgdorfer 說道:

    Hi there, This page is interesting. I intend I really could remain even longer in here yet somehow I'm going to get returning asap...

  6. 惠宇 說道:

    請問架設centos vpn 後,可以多個client同時使用嗎?

  7. acman 說道:

    多個 client當然可以

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

*