web-dev-qa-db-ja.com

別のVPNクライアントがアクティブになっているVPNサーバーに接続できません

私はそのように構成されたネットワークを持っています:wifiアクセスポイントとして機能するルーターとRPI、dhcpとdnsサーバー、ファイアウォールとゲートウェイ。 RPIはOpenVpnクライアントと有料VPNサービス(NordVPN)にも接続されているため、すべてのWiFiクライアントがVPN接続を使用します。

外部からもRPIに接続できるようにプライベートVPNを作成しようとしています。この用途のために、RPIでVPNサーバーを実行します。 NordVPNはポート転送を提供しないため、NordVPN IPアドレスを介してRPIに接続できず、ISPパブリックIPからRPIに到達しようとしています。ルーターからRPIローカルIPアドレスへのポート転送を構成しました。

NordVPN接続がオフのときにプライベートVPNでRPIに接続できますが、NordVPN接続が実行されているときに接続できません。

問題はルーティングであると読んだので、構成しました。最大の結果は、NordVPN接続が実行されているときに外部からRPIにSSHを実行できますが、OpenVPNクライアントに接続できません(NordVPNを実行している場合) 。問題は、クライアントとサーバーがハンドシェイクを完了しないことです。サーバーは最初のパケットを受信しますが(ファイアウォールは問題ない可能性があります)、応答を送信できません(または間違ったルートを介して送信します)。しかし、この問題はSSH接続では発生しないようです。これは、外部から機能するためです(そして、サーバーがクライアントのハンドシェイクに応答すると思います)。

他の情報:

  • 192.168.4.0/24はローカルクライアントのネットワーク(rpiのwifi)です
  • 192.168.1.0/24はローカルルーターのネットワークです
  • 192.168.1.1はルーターです
  • 192.168.1.117はRPIeht0です
  • 10.8.0.0/16はNordVPNtun0ネットワークです
  • 有料VPNは標準のOpenVPNポートで実行されますが、プライベートVPNは別のポートで実行されます

まず、 ここ に続いて、RPIでこれらのルートを使用してルーターから192.168.1.117に転送しようとしました。

ip rule add fwmark 65 table novpn
ip route add default via 192.168.1.1 dev eth0 table novpn
iptables -t mangle -A OUTPUT -p udp --sport 1234567 -j MARK --set-mark 65

この場合、NordVPNを実行せずにプライベートVPN経由でのみ接続できました。

次に、 ここ に続いて、仮想eth0インターフェイス(192.168.1.118)を作成しました。ルーターからこの新しいアドレスに転送し、次のようにルートを構成しました。

ip addr add 192.168.1.118 dev eth0:0
ip rule add from 192.168.1.118 table 1234
ip route add default via 192.168.1.1 dev eth0:0 table 1234

そのため、NordVPN接続がアクティブな場合でも、外部からSSH経由で接続できますが、プライベートVPNクライアントを起動すると、次のエラーでハンドシェイクを完了できません。

XXX.XXX.XXX.XXX:53347 TLS: Initial packet from [AF_INET]XXX.XXX.XXX.XXX:53347, sid=5138c564 319ce197
Dec 08 23:02:55 rpi ovpn-server[19950]: XXX.XXX.XXX.XXX:53347 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
Dec 08 23:02:55 rpi ovpn-server[19950]: XXX.XXX.XXX.XXX:53347 TLS Error: TLS handshake failed

私は2週間からこの問題に取り組んでおり、他に何も考えていません。多分誰かが私を助けることができますか?

前もって感謝します。

PS:iptablesルールはたくさんあるので、書きません。

更新:これは私のserver.confです

dev tun
proto udp
port PORT
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/XXX.crt
key /etc/openvpn/easy-rsa/pki/private/XXX.key
dh none
topology subnet
server 10.35.0.0 255.255.255.0
# Set your primary domain name server address for clients
Push "dhcp-option DNS 1.1.1.1"
Push "dhcp-option DNS 1.0.0.1"
# Prevent DNS leaks on Windows
Push "block-outside-dns"
# Override the Client default gateway by using 0.0.0.0/1 and
# 128.0.0.0/1 rather than 0.0.0.0/0. This has the benefit of
# overriding but not wiping out the original default gateway.
Push "redirect-gateway def1"
client-to-client
keepalive 1800 3600
remote-cert-tls client
tls-version-min 1.2
tls-crypt /etc/openvpn/easy-rsa/pki/ta.key
cipher AES-256-CBC
auth SHA256
user nobody
group nogroup
persist-key
persist-tun
crl-verify /etc/openvpn/crl.pem
status /var/log/openvpn-status.log 20
status-version 3
syslog
verb 3
#DuplicateCNs allow access control on a less-granular, per user basis.
#Remove # if you will manage access by user instead of device. 
#duplicate-cn
# Generated for use by PiVPN.io

これはプライベートクライアントの会議です

client
dev tun
proto udp
remote ISP_IP PORT
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
tls-version-min 1.2
verify-x509-name XXX name
cipher AES-256-CBC
auth SHA256
auth-nocache
verb 3

これらは私のルートです:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.8.0.1        128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
10.8.0.0        0.0.0.0         255.255.255.0   U     0      0        0 tun0
10.35.0.0       0.0.0.0         255.255.255.0   U     0      0        0 tun1
128.0.0.0       10.8.0.1        128.0.0.0       UG    0      0        0 tun0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.4.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
NORDVPN_GW      192.168.1.1     255.255.255.255 UGH   0      0        0 eth0

更新2:

ネットワークトポロジは次のとおりです。

WIFI LANクライアント(192.168.4.X)-> RPI(eth0 192.168.1.117、wlan0 192.168.4.1、tun0NordVpnクライアント10.8.0.0/16、tun1 10.35.0.1 OpenVpnサーバー)->ルーター(192.168.1.1)->インターネット

私がしたいこと:

OPENVPNクライアント(10.35.0.2)->インターネット->ルーター-> RPI

1
drugo

解決しました。

この場合の問題は、OpenVPNサーバー構成にこの行がないことです。

local 192.168.1.117

したがって、私にとって正しいルーティングは次のとおりです。

ip rule add from 192.168.1.117 table novpn
ip route add default via 192.168.1.1 dev eth0 table novpn
1
drugo