OpenVPN 主要是要建立安全的通道(虛擬網卡 + SSL), 讓遠端的機器連上後, 可以走此安全通道進行其他操作. (簡單講, 兩個不同網段的地方, 透過連上 VPN 後, 就可以透過 VPN 當內部網路使用)
- OpenVPN 官網: OpenVPN - Open Source 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 測試步驟如下:
- ssh vpn_server
- apt-get install openvpn # 安裝
- sudo openvpn --remote 123.123.123.123 --dev tun1 --ifconfig 10.9.8.1 10.9.8.2 # 先開啟等 Client Test
- 註: Server 若於此時 ifconfig 會出現 tun1 的網卡設備出現
Client 測試步驟如下:
- ssh vpn_client
- apt-get install openvpn # 安裝
- 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 的類同, 但是簡單很多).
- 產生 static key
- 設定 網路界面 tun0 IP 等等資料
- 設定 IP forward + iptables nat 設定
VPN Server 設定步驟
- ssh vpn_server
- 下面兩個命令, 先手動於 Shell 執行, 立刻生效.
- echo 1 > /proc/sys/net/ipv4/ip_forward
- /sbin/iptables -t nat -A POSTROUTING -s 10.9.8.0/24 -j MASQUERADE
- 將上述兩行, 設定成開機後自動執行
- vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
- vim /etc/rc.local # 於 exit 前面加上此行
/sbin/iptables -t nat -A POSTROUTING -s 10.9.8.0/24 -j MASQUERADE
- mkdir /etc/openvpn
- cd /etc/openvpn
- openvpn --genkey --secret static.key # 將此 key scp 到 client 的 /etc/openvpn
- scp static.key vpn_client:
- vim /etc/openvpn/tun0.conf # 內容如下:
dev tun0 ifconfig 10.9.8.1 10.9.8.2 secret /etc/openvpn/static.key
- openvpn --config /etc/openvpn/tun0.conf --verb 6 # 啟用測試
- 註: Firewall 需打開 UDP 1194 port
- 10.9.8.x : VPN subnetwork
- 10.9.8.1 : server IP
- 10.9.8.2 : client IP
- /etc/init.d/openvpn restart # 啟動, Server 到此即可.
VPN Client 設定步驟
- ssh vpn_client
- mkdir /etc/openvpn
- mv ~/static.key /etc/openvpn/
- 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
- /etc/init.d/openvpn restart # 啟用 vpn, 會自動連上 Server
- ifconfig # 應該就會看到 10.9.8.2 的 tun0 界面 + IP
- route -n # 應該會看到 192.168.1.x 的 routing, 所以就可以測試連到內部網路囉~