X

Debian Linux 簡易 OpenVPN (Static-Key) 架設

OpenVPN 主要是要建立安全的通道(虛擬網卡 + SSL), 讓遠端的機器連上後, 可以走此安全通道進行其他操作. (簡單講, 兩個不同網段的地方, 透過連上 VPN 後, 就可以透過 VPN 當內部網路使用)

OpenVPN 有分幾種架設方式:

  • Static-Key VPN: 共享 Key 的方式 (此篇用此方式)
  • TLS-enabled VPN: OpenVPN 為每個使用者產生獨立的 Key (PKI), 為每個人進行驗證、設定... 等等. (此篇不講此方式)
  • 帳號、密碼驗證: 此方式我覺得風險比較大, 所以直接跳過不做~

Debian Linux 簡易 OpenVPN (Static-Key) 架設

下述安裝主要參考文件: OpenVPN - Debian Wiki

OpenVPN 套件安裝、測試

OpenVPN 安裝會有 Server 與 Client, Server 與 Client 都需要安裝 OpenVPN.

此 IP 規劃多一層, 可以將下述的 10.x 改成 192.168.x 就可以少掉一層.

  • VPN Server WAN IP: 123.123.123.123
  • VPN Server 網段使用: 10.9.8.0
  • VPN Server 內部網段: 192.168.1.0

Server 測試步驟如下:

  1. ssh vpn_server
  2. apt-get install openvpn # 安裝
  3. sudo openvpn --remote 123.123.123.123 --dev tun1 --ifconfig 10.9.8.1 10.9.8.2 # 先開啟等 Client Test
  4. 註: Server 若於此時 ifconfig 會出現 tun1 的網卡設備出現

Client 測試步驟如下:

  1. ssh vpn_client
  2. apt-get install openvpn # 安裝
  3. sudo openvpn --remote 123.123.123.123 --dev tun1 --ifconfig 10.9.8.2 10.9.8.1 # 測試 Client 能連上去

測試完成的話, 就兩邊都 Ctrl-C 中斷即可(Server 的 tun1 設備會自己消失, 不需要另外處理)

OpenVPN 套件設定步驟

上述只是測試 OpenVPN 是否能正常連線, 再來想要走內部網路出去.. 等等的, 就需要靠下述設定, 先簡單說明 Server 的設定步驟 (Client 的類同, 但是簡單很多).

  1. 產生 static key
  2. 設定 網路界面 tun0 IP 等等資料
  3. 設定 IP forward + iptables nat 設定

VPN Server 設定步驟

  1. ssh vpn_server
  2. 下面兩個命令, 先手動於 Shell 執行, 立刻生效.
    1. echo 1 > /proc/sys/net/ipv4/ip_forward
    2. /sbin/iptables -t nat -A POSTROUTING -s 10.9.8.0/24 -j MASQUERADE
  3. 將上述兩行, 設定成開機後自動執行
  4. vim /etc/sysctl.conf
    net.ipv4.ip_forward = 1
  5. vim /etc/rc.local # 於 exit 前面加上此行
    /sbin/iptables -t nat -A POSTROUTING -s 10.9.8.0/24 -j MASQUERADE
  6. mkdir /etc/openvpn
  7. cd /etc/openvpn
  8. openvpn --genkey --secret static.key # 將此 key scp 到 client 的 /etc/openvpn
  9. scp static.key vpn_client:
  10. vim /etc/openvpn/tun0.conf # 內容如下:
    dev tun0
    ifconfig 10.9.8.1 10.9.8.2
    secret /etc/openvpn/static.key
  11. openvpn --config /etc/openvpn/tun0.conf --verb 6 # 啟用測試
  12. 註: Firewall 需打開 UDP 1194 port
    • 10.9.8.x : VPN subnetwork
    • 10.9.8.1 : server IP
    • 10.9.8.2 : client IP
  13. /etc/init.d/openvpn restart # 啟動, Server 到此即可.

VPN Client 設定步驟

  1. ssh vpn_client
  2. mkdir /etc/openvpn
  3. mv ~/static.key /etc/openvpn/
  4. vim /etc/openvpn/tun0.conf # 內容如下:
    remote 123.123.123.123
    dev tun0
    ifconfig 10.9.8.2 10.9.8.1
    route 192.168.1.0 255.255.255.0 # 若有另外拆 192.168.1.0 的網段, 才需要此行, 否則拿掉此行即可.
    secret /etc/openvpn/static.key
  5. /etc/init.d/openvpn restart # 啟用 vpn, 會自動連上 Server
  6. ifconfig # 應該就會看到 10.9.8.2 的 tun0 界面 + IP
  7. route -n # 應該會看到 192.168.1.x 的 routing, 所以就可以測試連到內部網路囉~

相關網頁

Tsung: 對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
Related Post