Openvpn
無法通過 OpenVPN 路由到 GCE 網路中的其他主機
OpenVPN 已使用此腳本安裝在 Google Cloud 實例上。Google Cloud 實例是 Ubuntu 14.04 LTS,已標記為“vpn”,並啟用了 IP 轉發。此外,還設置了 3 個防火牆:
- 允許來自任何源 ICMP,應用於所有目標
- 允許來自任何源的 TCP 埠 22,適用於所有目標
- 允許來自任何源 UDP 埠 1194,適用於“vpn”標記的目標
使用腳本生成的 client.ovpn 文件,可以使用 OpenVPN 連接到實例。可以 ping 實例的內部 IP 地址(即 10.20.0.2),但無法 ping 同一虛擬子網中的其他主機(即 10.20.0.3)。
啟用日誌記錄後,當與實例建立連接並且子網上的其他主機被遠端 ping 時,以下是系統日誌的輸出。
root@vpn:/home/user# tail /var/log/syslog Dec 15 03:54:26 vpn ovpn-server[2633]: client/118.209.255.26:64219 MULTI_sva: pool returned IPv4=10.8.0.2, IPv6=(Not enabled) Dec 15 03:54:26 vpn ovpn-server[2633]: client/118.209.255.26:64219 MULTI: Learn: 10.8.0.2 -> client/118.209.255.26:64219 Dec 15 03:54:26 vpn ovpn-server[2633]: client/118.209.255.26:64219 MULTI: primary virtual IP for client/118.209.255.26:64219: 10.8.0.2 Dec 15 03:54:29 vpn kernel: [ 630.713536] iptables denied: IN=eth0 OUT= MAC=42:01:0a:14:00:02:42:01:00:00:00:00:08:00 SRC=118.209.255.26 DST=10.20.0.2 LEN=140 TOS=0x00 PREC=0x00 TTL=50 ID=19209 PROTO=UDP SPT=64219 DPT=1194 LEN=120 Dec 15 03:54:29 vpn ovpn-server[2633]: client/118.209.255.26:64219 PUSH: Received control message: 'PUSH_REQUEST' Dec 15 03:54:29 vpn ovpn-server[2633]: client/118.209.255.26:64219 send_push_reply(): safe_cap=940 Dec 15 03:54:29 vpn ovpn-server[2633]: client/118.209.255.26:64219 SENT CONTROL [client]: 'PUSH_REPLY,dhcp-option DNS 8.8.8.8,dhcp-option DNS 8.8.4.4,redirect-gateway def1 bypass-dhcp,route-gateway 10.8.0.1,topology subnet,ping 10,ping-restart 120,ifconfig 10.8.0.2 255.255.255.0' (status=1) Dec 15 03:54:40 vpn kernel: [ 641.643199] iptables denied: IN=eth0 OUT= MAC=42:01:0a:14:00:02:42:01:00:00:00:00:08:00 SRC=118.209.255.26 DST=10.20.0.2 LEN=173 TOS=0x00 PREC=0x00 TTL=50 ID=25886 PROTO=UDP SPT=64219 DPT=1194 LEN=153 Dec 15 03:54:52 vpn kernel: [ 653.789393] iptables denied: IN=eth0 OUT= MAC=42:01:0a:14:00:02:42:01:00:00:00:00:08:00 SRC=74.125.41.32 DST=10.20.0.2 LEN=104 TOS=0x00 PREC=0x00 TTL=53 ID=23017 PROTO=TCP SPT=35702 DPT=22 WINDOW=29016 RES=0x00 ACK PSH URGP=0 Dec 15 03:55:05 vpn kernel: [ 667.589193] iptables denied: IN=eth0 OUT= MAC=42:01:0a:14:00:02:42:01:00:00:00:00:08:00 SRC=74.125.41.32 DST=10.20.0.2 LEN=104 TOS=0x00 PREC=0x00 TTL=53 ID=29539 PROTO=TCP SPT=35702 DPT=22 WINDOW=29358 RES=0x00 ACK PSH URGP=0
此外:
net.ipv4.ip_forward = 1
已設置在/etc/sysctl.conf
- 已使用這些規則配置 iptables
- TCP 和 UDP OpenVPN 協議配置都不起作用
- 當通過 SSH 連接時,可以從 VPN 伺服器 ping 其他實例,而不是從通過 VPN 連接的遠端主機
查看 iptables nat 表,它
PREROUTING
已經有一條規則並且具有更高的優先級。root@vpn5:/home/user# iptables -t nat -L ... Chain POSTROUTING (policy ACCEPT) target prot opt source destination SNAT all -- 10.8.0.0/24 anywhere to:104.199.150.74
該問題已通過發布解決:
iptables -t nat -F iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE