最後一集了,site to site 的VPN建置。這個OpenVPN 寫了好多年,總算寫到最後一篇。
Logo Ref Open VPN Project
前情提要:OpenVPN 建置筆記(第8集)
這個看完後,朋友應該會自己建立site to site 的VPN 了。
1.兩地Server 建立起VPN 連線。
2.兩地Server 內的各自User 可以直接互相訪問,不用做NAT,可直接使用User 私有IP。
先規劃一下兩地的狀況
Site A
匣道器使用 xx.xx.xx.xx IP 上 internet
使用者內部網段 192.168.2.0 / 24
Site B
匣道器使用 yy.yy.yy.yy IP 上 internet
使用者內部網段 192.168.0.0 / 24
兩端匣道器系統使用 CentOS 7 , 基本安裝,之後加安裝 OpenVPN
yum install openvpn
預計使用靜態金鑰建立Site to Site VPN
1。先產生一個靜態金鑰,在任何一台匣道器上做都可以
openvpn –genkey –secret server.key
用靜態金鑰的原因,第1個是比較簡單,第2個是如果用交握協定的話,在中國馬上被封。封的方法如同封Tor 一樣。
2。以Site A 當Server 由Site B 當Client ,反過來也可以,在site A 上配置設定檔如下: /etc/openvpn/server.conf
port 32592
proto udp
dev tun
secret /etc/openvpn/server.key
management 127.0.0.1 1192
ifconfig 10.20.0.53 10.20.0.54
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
comp-lzo
status /etc/openvpn/server-status.log
log /etc/openvpn/server.log
verb 3
user nobody
group nobody
daemon
啟動openvpn servcie
openvpn /etc/openvpn/server.conf
port 配置 32592 原因是希望避開常規的1194,不然很容易被擋。
執行後你會在本機端多一組P to P 的IP , Site A 為 10.20.0.53 , Site B 為 10.20.0.54
tun6 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.20.0.53 P-t-P:10.20.0.54 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:1180651 errors:0 dropped:0 overruns:0 frame:0
TX packets:1155735 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:267695242 (255.2 MiB) TX bytes:76398543 (72.8 MiB)
3.Site A 防火牆設定
重要的
echo “1” > /proc/sys/net/ipv4/ip_forwardiptables -t filter -I INPUT -s yy.yy.yy.yy -p udp –port 33592 -j ACCEPT
iptables -t filter -I FORWARD -s 192.168.2.0/24 -d 192.168.0.0/24 -j ACCEPT
iptables -t nat -I POSTROUTING -d 192.168.0.0/24 -j ACCEPT其它的視自己需求加入
4.Site A 路由的設定
重要的,將要到192.168.0.0/24 網段的封包,交由 10.20.0.54 傳送
route add -net 192.168.0.0 netmask 255.255.255.0 gw 10.20.0.54
其它的視自己需求加入
5.Site B VPN 設定。/etc/openvpn/client.conf
dev tun
proto udp
remote xx.xx.xx.xx 32592
port 32094
secret /etc/openvpn/server.key
ifconfig 10.20.0.54 10.20.0.53
resolv-retry infinite
nobind
comp-lzo
status /etc/openvpn/client-status.log
log /etc/openvpn/client.log
verb 3
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
user nobody
group nobody
daemon
記得將第1步產生的key , 複制到Site B 的機器上。
啟動OpenVPN
openvpn /etc/openvpn/client.conf
執行後你會在本機端多一組P to P 的IP , Site A 為 10.20.0.53 , Site B 為 10.20.0.54
tun6 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.20.0.53 P-t-P:10.20.0.54 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:1180651 errors:0 dropped:0 overruns:0 frame:0
TX packets:1155735 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:267695242 (255.2 MiB) TX bytes:76398543 (72.8 MiB)
6.Site B 防火牆設定
重要的
echo “1” > /proc/sys/net/ipv4/ip_forwardiptables -t filter -I FORWARD -s 192.168.0.0/24 -d 192.168.2.0/24 -j ACCEPT
iptables -t nat -I POSTROUTING -d 192.168.2.0/24 -j ACCEPT其它的視自己需求加入
7.Site B 路由的設定
重要的,將要到192.168.2.0/24 網段的封包,交由 10.20.0.53 傳送
route add -net 192.168.2.0 netmask 255.255.255.0 gw 10.20.0.53
其它的視自己需求加入
基本上己經完成Site to Site VPN 的設定,可以直接連通 192.168.0.0/24 跟 192.168.2.0/24 的網段。
在這邊使用OpenVPN連通兩個匣道,其實很簡單,比較要注意的是,防火牆及路由的設定,在這裏只做簡單的演示,有慧根的網友,應該可以很快上手。
在目前小瑞實際環境上,至少6個辦公地點,運用這種方式互相連通。也只是路由比較複雜而己,運作上真的非常穩定,真心推薦大家使用。
版大 您好
依照您分享的文章使用UBUNTU16.04進行設定,但我兩個Site的Client無法PING到對方,想請教您是否有建議參考文件及問題的處方向
Hi, 您好, 我覺得可能是 route 的設定要看看是否有問題, 大部份常見狀況, 是路由設定出問題, 封包不知道怎麼走, 再試試!
[…] OpenVPN 建置筆記(第9集) […]