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 방화벽도 비활성화했지만 도움이 되지 않은 것 같습니다.