OpenVPN 客户端阻止传入的外部连接

OpenVPN 客户端阻止传入的外部连接

OpenVPN 连接(macOS 上类似 Linux 的自制软件包)到我的办公室运行正常,但是它会阻止来自我的外部 IP 地址的传入 HTTP(S) 流量;但是,当我关闭 OpenVPN 时,我可以从外部访问我的计算机,否则它会被阻止。

如何配置 OpenVPN 以允许通过端口 80 和 443 进行传入连接,就好像没有 VPN 一样?

  • 客户端配置:
    client
    
    dev tun
    proto udp
    remote my-server-1 1194
    
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    
    ca ca.crt
    cert client.crt
    key client.key
    remote-cert-tls server
    tls-auth ta.key 1
    cipher AES-256-CBC
    
    verb 3
    
  • 服务器配置
    port 1194
    proto udp
    dev tun
    
    ca ca.crt
    cert server.crt
    key server.key  
    dh dh2048.pem
    
    server 10.8.0.0 255.255.255.0
    ifconfig-pool-persist ipp.txt
    
    keepalive 10 120
    
    tls-auth ta.key 0 
    cipher AES-256-CBC
    
    persist-key
    persist-tun
    
    status openvpn-status.log
    verb 3
    
    explicit-exit-notify 1
    

  • 没有使用VPN时的输出netstat -rn
    Internet:
    Destination        Gateway            Flags           Netif Expire
    default            192.168.0.254      UGScg             en0       
    127                127.0.0.1          UCS               lo0       
    127.0.0.1          127.0.0.1          UH                lo0       
    169.254            link#6             UCS               en0      !
    192.168.0          link#6             UCS               en0      !
    192.168.0.187/32   link#6             UCS               en0      !  # my macbook
    192.168.0.254/32   link#6             UCS               en0      !  # router
    192.168.0.254      0:1e:e5:6d:91:fb   UHLWIir           en0   1195
    192.168.0.255      ff:ff:ff:ff:ff:ff  UHLWbI            en0      !
    192.168.56         link#17            UC           vboxnet0      !
    192.168.56.255     ff:ff:ff:ff:ff:ff  UHLWbI       vboxnet0      !
    224.0.0/4          link#6             UmCS              en0      !
    224.0.0.251        1:0:5e:0:0:fb      UHmLWI            en0       
    255.255.255.255/32 link#6             UCS               en0      !
    255.255.255.255    ff:ff:ff:ff:ff:ff  UHLWbI            en0      !
    
  • 使用VPN的输出netstat -rnutun3是 VPN 记录)
    Internet:
    Destination        Gateway            Flags           Netif Expire
    0/1                10.8.0.5           UGScg           utun3       
    default            192.168.0.254      UGScg             en0       
    10.8/24            10.8.0.5           UGSc            utun3     
    10.8.0.1/32        10.8.0.5           UGSc            utun3       
    10.8.0.5           10.8.0.6           UHr             utun3       
    127                127.0.0.1          UCS               lo0       
    127.0.0.1          127.0.0.1          UH                lo0       
    128.0/1            10.8.0.5           UGSc            utun3       
    169.254            link#6             UCS               en0      !
    192.168.0          link#6             UCS               en0      !
    192.168.0.187/32   link#6             UCS               en0      !  # my macbook
    192.168.0.254/32   link#6             UCS               en0      !  # router
    192.168.0.254      0:1e:e5:6d:91:fb   UHLWIir           en0   1162
    192.168.0.255      ff:ff:ff:ff:ff:ff  UHLWbI            en0      !
    192.168.56         link#17            UC           vboxnet0      !
    192.168.56.255     ff:ff:ff:ff:ff:ff  UHLWbI       vboxnet0      !
    <VPN IP>/32        192.168.0.254      UGSc              en0         # VPN server public IP
    224.0.0/4          link#6             UmCS              en0      !
    224.0.0.251        1:0:5e:0:0:fb      UHmLWI            en0       
    255.255.255.255/32 link#6             UCS               en0      !
    255.255.255.255    ff:ff:ff:ff:ff:ff  UHLWbI            en0      !
    

答案1

这是一个路由问题,不幸的是,我担心可能没有一个简单而令人满意的答案。

普通 IP 路由只关心数据包的目的地,而不关心其来源。在开放的互联网中,非对称路由很常见,而且不一定是个问题,但当涉及到 NAT、防火墙、入口过滤等时,它可能会成为一个大问题。

如果没有 VPN,客户端会将数据包发送到您网络的 NAT 路由器,该路由器会修改目标地址并将其发送到您的计算机。然后,您的计算机会生成回复,在其路由表中查找目标地址,并通过您网络的 NAT 路由器将其发送回去,该路由器执行反向转换并将数据包放回互联网,然后将其传递给客户端。

当你启动 VPN 时,你的默认路由将更改为指向 VPN,这意味着你发起的互联网连接将通过 VPN,但它意味着您从互联网收到的连接请求的回复将通过 VPN 进行。

这些回复几乎肯定不会以可用形式传递给客户端。由于返回数据包不会通过执行正向转换的 NAT,因此反向转换将无法正确执行。响应数据包可能会被过滤器丢弃,可能会在完全没有反向转换的情况下转发给客户端,或者可能会在转换不正确的情况下转发给客户端。最终,客户端要么根本收不到数据包,要么收到的数据包带有错误的源地址,无法将其与连接尝试匹配,无论哪种情况,建立连接的尝试都会失败。

相关内容