Android用ToyVPNClientを構築しました。https://android.googlesource.com/platform/development/+/master/samples/ToyVpnまた、私のLinuxボックスでサーバーコードを実行しています。次のコマンドを使用して tun0 トンネルインターフェイスを作成します。
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j MASQUERADE
sudo ip tuntap add dev tun0 mod tun
sudo ifconfig tun0 10.0.0.1 dstaddr 10.0.0.2 up
./ToyVpnServer tun0 8000 test -m 1400 -a 10.0.0.2 32 -d 8.8.8.8 -r 0.0.0.0
この手順を完了した後、ifconfigを実行するとtun0インターフェイスが表示されます。
VPNクライアントアプリケーションにLinuxシステムのアドレス、ポート8000、および共有秘密を提供すると、初期ハンドシェイクが正常に発生し、クライアントはサーバーからトンネルインターフェイスのパラメータを受け取ります。しかし、しばらくして、クライアントで次のエラーが発生し始めました。
E/ToyVpnService: Got java.lang.IllegalStateException: Timed out
E/ToyVpnService: Got java.net.PortUnreachableException:
以下は別の成功した接続とハンドシェイクで、プロセスが繰り返されます。初期接続およびパラメータ送信後、時々トンネルからパケットが受信されることがわかります。 ToyVpnを使った経験がある人が何が起こっているのか教えてもらえますか? ufwファイアウォールも無効にしましたが、役に立たなかったようです。