Linux, 工作, 生活, 家人

Gentoo, Linux, Network, Software

OpenVPN 小記

因為看到有人說 OpenVPN 非常好用, 所以就用 OpenVPN 2.0.7 架了一個站, 在一個晚上試誤之下,

Client Config File

client
dev tun
dev-node MyTap
proto tcp
remote 111.222.333.444 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
comp-lzo
verb 3

Server Config File

#
dev tun
port 1194
# use tcp, could pass by proxy server
proto tcp

server 192.168.10.0 255.255.255.0
push "redirect-gateway"
push "dhcp-option DNS 168.95.192.2"
# Let client connect to another client
;client-to-client
ifconfig-pool-persist ipp.txt
keepalive 10 120

tls-server
dh /usr/share/openvpn/easy-rsa/keys/dh2048.pem
ca /usr/share/openvpn/easy-rsa/keys/ca.crt
cert /usr/share/openvpn/easy-rsa/keys/server.crt
key /usr/share/openvpn/easy-rsa/keys/server.key
; user nobody
; group nobody

comp-lzo
; ping 15
; ping-restart 45
; ping-timer-rem
persist-tun
persist-key
status openvpn-status.log
verb 3

產生 Key 的部份

  1. cd /usr/share/openvpn/easy-rsa
  2. vim vars
  3. 將 Key 長度改 2048
  4. 其他的 Information 也要相對修改
  5. source ./vars
  6. ./clean-all
  7. ./build-dh
  8. ./build-ca
  9. ./build-key-server server
  10. 修改 /etc/opensvn/opensvn.conf
    1. 將 ca.crt, server.crt, server.key 指到 /usr/share/openvpn/easy-rsa/keys 下
  11. ./build-key client1
    1. 將 client1.crt , celient1.key, ca.crt copy 到 Windows 端

[編輯]

其他需注意的部份

  • 使用 OpenVPN GUI 可以即時設定 Proxy
  • 如果要設定 Proxy, 連線的 Protocol 要使用 TCP.
  • 如果 syslog 有 “Note: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)”, 請下以下指令
mkdir /dev/net; mknod -m0600 /dev/net/tun c 10 200

如果有任何問題, 可以在我的 Comment 留言, wiki 不開放修改.

2017/01/18 Update
時隔 10 年發現 Key 過期了, 所以跑回來修一下文章 (只有 Key 部份)

安裝 easy-rsa 套件

 
$ emerge --ask app-crypt/easy-rsa

copy easy-rsa 套件到 openvpn 下

$ cd /etc/openvpn
$ cp -a /usr/share/easy-rsa .
$ cd easy-rsa
$ mv vars.example vars

修改 vars 內, 我比較傳統, 走舊式的方式

set_var EASYRSA_DN      "org"
set_var EASYRSA_REQ_COUNTRY     "TW"
set_var EASYRSA_REQ_PROVINCE    "Taiwan"
set_var EASYRSA_REQ_CITY        "New Taipei"
set_var EASYRSA_REQ_ORG         "domain.com"
set_var EASYRSA_REQ_EMAIL       "email@domain.com"
set_var EASYRSA_REQ_OU          "Organizational Unit"

編輯完之後 清除所有的 PKI 設定

$ ./easyrsa init-pki

建立 ca 資訊, ca 要輸入密碼, 請記好. dh 是產生 Diffie-Hellman .pem file

$ ./easyrsa build-ca
$ ./easyrsa gen-dh

建立 Server 和 Client Key 資訊

$ ./easyrsa build-server-full server1 nopass
$ ./easyrsa build-client-full client1 nopass

中間有問密碼就是 ca 的密碼

最後, 編輯 /etc/openvpn/openvpn.conf
加上

dh /etc/openvpn/easy-rsa/pki/dh.pem
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server1.crt
key /etc/openvpn/easy-rsa/pki/private/server1.key

這樣應該就可以了, 下次更新不知道會不會是十年後的事情了呢?

ref.
Create a Public Key Infrastructure Using the easy-rsa Scripts : 其實是我改的, 原來文件過期太久了… -_-!
其實原來是參考 Arch 的文件, 不過太麻煩了
https://wiki.archlinux.org/index.php/Easy-RSA

3 留言

  1. JLS

    這兩天上班沒事玩了一下,設定是比之前用過的人性化不少,補充一下我的心得。

    由於我是想要在校外能夠使用學校資源,所以才想到用 vpn 的方式,因此我只有對校內 ip 才要透過 vpn,其他的還是走我原來的 adsl 線路出去就可以了,所以我修正如下:

    push “redirect-gateway” 這一行會會更改 client 的 default gateway,所以我拿掉了。

    push “route 192.168.10.0 255.255.255.0” 這一行會去修正 client 的 routing table ,以此例來說是讓 192.168.10.0/24 用 vpn 線路去跑…

    以上

    謝謝

    • Jacky

      我用了windows 2003 server + ISA 2006 + Openvpn後,發現不如預期的好,比Ethernet 傳輸的慢,不曉得你的會不會這樣?

  2. Jacky

    我也用OPENVPN安裝在windows server2003 然後加上ISA Server2006 可是發現連上外部會很慢

回覆留言對象 取消回覆