私はそのように構成されたネットワークを持っています: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接続では発生しないようです。これは、外部から機能するためです(そして、サーバーがクライアントのハンドシェイクに応答すると思います)。
他の情報:
まず、 ここ に続いて、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
解決しました。
この場合の問題は、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