openWRT中的OpenVPN - 連線VPN成功,可以ping通區域網,無法ping通外部(目標連接埠無法存取)

openWRT中的OpenVPN - 連線VPN成功,可以ping通區域網,無法ping通外部(目標連接埠無法存取)

問題:

透過 OpenVPN 從網路外部連接到路由器並透過 VPN 設定所有流量,可以存取:

  • 路由器本身

  • 路由器後面的 LAN 主機

    什麼不起作用:

  • 區域網路外的網路訪問

  • DNS解析(雖然DNS是透過VPN推送的)

Ping 外部 IP 報告「目標連接埠無法存取」。

對於任何請求,tcpdump 都會填充

12:03:22.070072 IP 10.8.4.2 > 10.8.4.1: ICMP 10.8.4.2 udp port 49763 unreachable, length 93

其中 10.8.4.2 是客戶端 IP,10.8.4.1 是伺服器 IP(連接埠發生變化)。

設定:

  • OpenWRT 路由器 (Turris Omnia) 與內部網路 192.168.10.0/24
  • OpenVPN監聽1196埠(開放且可存取)
  • 連接埠 443 重定向到路由器上的 1196(適用於封鎖 1196 的網路)
  • 防火牆中定義的三個區域:vpnlanwan
  • 客戶端:具有適用於 Android 的 OpenVPN 的 Android 8 用戶端 (Nexus 5X)

開啟VPN設定:

port 1196
proto tcp
dev tun2
ca /etc/openvpn/ca.crt
cert /etc/openvpn/mycrt.crt
key /etc/openvpn/mycrt.key  # This file should be kept secret
dh /etc/openvpn/dh2048.pem
server 10.8.4.0 255.255.255.0
ifconfig-pool-persist /tmp/openvpn/clients/ipp-local.txt
client-config-dir ccd
client-to-client
keepalive 10 120
tls-auth /etc/openvpn/ta.key 0 
comp-lzo no
persist-key
persist-tun
status /tmp/log/openvpn-status.log
verb 3
mute 20
push "route 192.168.10.0 255.255.255.0"
push "route 192.168.20.0 255.255.255.0"
mssfix
cipher AES-256-CBC
auth SHA512
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA
status /var/log/openvpn-server-status.log
topology subnet

重定向是在以下位置完成的ccd/myclient

push "redirect-gateway local def1"
push "dhcp-option DNS 192.168.10.1"

現在,openWRT端的配置為:

/etc/config/openvpn

config openvpn 'local_service'
        option config '/etc/openvpn/server-local.conf'
        option enabled '1'

/etc/config/網絡

config interface 'vpn2'
        option ifname 'tun2'
        option proto 'none'
        option auto '1'

/etc/config/防火牆

config zone
        option input 'ACCEPT'
        option output 'ACCEPT'
        option name 'vpn'
        option masq '1'
        option forward 'ACCEPT'
        option mtu_fix '1'
        option network 'vpn2'

config forwarding
        option dest 'vpn'
        option src 'lan'

config forwarding
        option dest 'lan'
        option src 'vpn'

config forwarding
        option dest 'wan'
        option src 'vpn'

config redirect
        option target 'DNAT'
        option src 'wan'
        option dest 'lan'
        option proto 'tcp'
        option src_dport '443'
        option dest_ip '192.168.10.1'
        option dest_port '1196'
        option name 'openvpn https'

客戶端配置:

# Enables connection to GUI
management /data/user/0/de.blinkt.openvpn/cache/mgmtsocket unix
management-client
management-query-passwords
management-hold

setenv IV_GUI_VER "de.blinkt.openvpn 0.6.73" 
setenv IV_PLAT_VER "27 8.1.0 arm64-v8a google bullhead Nexus 5X"
machine-readable-output
allow-recursive-routing
ifconfig-nowarn
client
verb 4
connect-retry 2 300
resolv-retry 60
dev tun
remote my-remote-gateway.example.com 443 tcp-client
<ca>
REDACTED
</ca>
<key>
REDACTED
</key>
<cert>
REDACTED
</cert>
comp-lzo
<tls-auth>
REDACTED
</tls-auth>
key-direction 1
route 0.0.0.0 0.0.0.0 vpn_gateway
verify-x509-name seldon name
remote-cert-tls server
cipher AES-256-CBC
auth SHA512
# Use system proxy setting
management-query-proxy

答案1

問題解決了。實際上有問題:

  1. 防火牆不允許從VPN轉送至伺服器外部;
  2. 指定的 DNS IP 與透過 VPN 分配的 IP 具有不同的子網,且不起作用

在 openWRT 中啟用wan和之間的轉送vpn並為 DNS 設定正確的位址解決了問題。

相關內容