[筆記] 在gcp 中用wireguard建立VPN時,不要用 10.0.0.0/16 網段/Do No Use 10 0 0 0 Private Ipaddr in GCP

最近一直在玩 wireguard ,先前把各個分公司和總部的VPN 改用 wireguard 建立

想說再打個VPN tunnel 來當跳板連 ptt 好了

因為wireguard 建立很簡單,而且又可以指定想要繞出去的路由,不會影響原本的網路環境

本來是在vultr 的VPS上面建立這個tunnel

但是那台VPS連去ptt 很頓,卡卡的

所以改用google cloud platform 的free tier 來做

反正只是拿來當跳板,不會有什麼流量、運算產生,可以一直保持免費的狀態

GCP的申請、設定就不多說了

這次碰到的怪異現象是當wireguard 都已經設定好,client 也都連上了之後

會發生client 開不了 www.google.com.tw / youtube / google map 等等google 服務的狀況

VPN確定是通的,我可以在client 這邊連上其他網站,但就是google的服務開不了

後來不知道是怎麼樣,突然靈機一動,因為一開始設定server/peer 都是用 10.0.0.x/24 的IP

想說會不會是因為這個也是google cloud platform 預設的LAN IP 網段,所以沒辦法繞出去

看一下設定,確認一下這個想法對不對,果然是這樣沒錯

解決方法很簡單,要不修改VPS的內部IP,要不修改wireguard的設定

當然我是選擇改wireguard ,因為簡單嘛!

修改後的configuration 長這樣

[Interface]
Address = 192.168.10.1/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens4 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens4 -j MASQUERADE
ListenPort = 12000
PrivateKey = E..........................E

#OFFICE DESKTOP
[Peer]
PublicKey = W...........................W
AllowedIPs = 192.168.10.2/32

#ANDROID
[Peer]
PublicKey = w............................w
AllowedIPs = 192.168.10.3/32

#HOME
[Peer]
PublicKey = 2.........................................2
AllowedIPs = 192.168.10.4/32

重起wireguard (或者說重起 wg0 這個interface)之後,client 開google 網頁就正常了

client 這邊,也是簡單設定一下,把要透過跳板出去的IP 改走wireguard 出去

底下這個,就是把往台大(140.112.0.0) 和 term.ptt.cc(104.31.0.0)的封包改走wireguard

[Interface] 
PrivateKey = e............................e
Address = 192.168.10.2/24 
DNS = 8.8.8.8 
MTU = 1420 

[Peer] 
PublicKey = q...........................q
Endpoint = public_ip_of_gcp:12000
AllowedIPs = 140.112.0.0/16,104.31.0.0/16,192.168.10.1/32
PersistentKeepalive = 25

然後看一下路由對不對

2019-08-16 10:34:21 [cch@hq34 ~]$ traceroute term.ptt.cc
traceroute to term.ptt.cc (104.31.231.9), 30 hops max, 60 byte packets
 1  192.168.10.1 (192.168.10.1)  191.826 ms  192.556 ms  192.678 ms
 2  * * *
 3  * * *
 4  * * *
 5  104.31.231.9 (104.31.231.9)  203.918 ms  203.982 ms  203.979 ms
2019-08-16 10:34:33 [cch@hq34 ~]$ 

果然是走wireguard (192.168.10.1) 出去 ,跳板成功!