2007年5月8日 星期二

建立 static key OpenVPN tunnel

Static Key VPN 這是最容易架設的 vpn server,詳細的設定方式可以參考以下兩個連結:
  1. OpenVPN Static Key Mini-HOWTO
  2. OpenVPN(Debian)

雖然設定過程簡單,不過其中也得到了一些設定心得,搞清楚了一些觀念....

以下是今天實作的環境,用一張簡圖來表示:

最左邊是我手邊用的 NB,其為 vpn client;而 vpn server 則是家中的主機,此台主機做為家中的 NAT 使用。
而設定 vpn tunnel 的目的是在於可以直接在外透過 vpn tunnel 直接連線至家中內部區域網路(192.168.0.0/24)。


設定方式很簡單,以下說明一下設定的內容,首先在 vpn server 的部分
# 使用 TUN 裝置 (routing mode) # 官方建議盡量使用 tun,除非不是使用 IP 協定或是有其他更特殊的用途
dev tun

# 「ifconfig」所設定的 ip,基本上只是 tunnel 兩端用來連結之用,並沒有什麼特殊意義 # 前面的部分指定 tunnel 本地端的 IP 位址 # 後面的部分指定 tunnel 另一端的 IP 位址 # 10.8.0.1 為本地端 vpn server IP # 10.8.0.2 為遠端 vpn client IP
ifconfig 10.8.0.1 10.8.0.2

# 用來加密傳輸資料的 key file
secret static.key

# 針對傳輸的資料進行壓縮 # 必須安裝 lzo 套件才行
comp-lzo

# 以 daemon 模式開啟,並指定 user/group
user nobody
group nobody
daemon

# 若上面設定的 nobody 沒有存取 static key 以及 tunnel 裝置 的權限 # 就必須加上此兩行設定,以避免產生權限不足的問題
persist-key
persist-tun
當然也可以不用設定檔,直接以下指令的方式啟動 vpn server,以下指令可以達到同樣效果:
# 其實也是等於把所有參數在指令中下好是一樣的
shell> openvpn --dev tun --ifconfig 10.8.0.1 10.8.0.2 --secret /etc/openvpn/static.key --comp-lzo yes --user nobody --group nobody --daemon openvpn_daemon --persist-key --persist-key


再來是 vpn client 的設定部分:
# vpn server 的 ip address 或是 domain name
remote home.twcic.net

# 使用 TUN 裝置 (routing mode)
dev tun

# 同樣的,這邊也是指定 tunnel 兩端的 ip # 前面為 local ip,後面為 remote ip
ifconfig 10.8.0.2 10.8.0.1

secret static.key

comp-lzo

# 為了讓 client 可以直接與 server 後面的私有區域網路連線
# 必須設定 routing 資訊

# 注意! 這個部分不是設定在 server 喔!
route 192.168.0.0 255.255.255.0

最後,為了讓 client 可以順利連線到主機後端的私有區域網路,vpn server 必須將 packet forward 的功能開啟,透過以下指令即可:
echo "1" > /proc/sys/net/ipv4/ip_forward
PS. 其實原本就已經開啟了,因為那台本來就是 NAT server .......

如此一來,最基本的 vpn tunnel 就設定完成了!


參考連結:
  1. OpenVPN 建置方案
  2. 使用 OpenVPN
  3. OpenVPN(Debian)
  4. StudyArea - vpn一問,請高手幫忙一下
  5. OpenVPN 2.0 HOWTO
  6. OpenVPN FAQ
  7. OpenVPN HOWTO
  8. OpenVPN 2.1 Man Page

沒有留言:

張貼留言