Eu criei o ToyVPNClient para Android a partir do link e também estou executando o código do servidor na minha máquina Linux. Eu usei os seguintes comandos para criar a interface de tunelamento 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
Após esses passos, eu posso ver a interface tun0 fazendo ifconfig.
Eu forneço o endereço da minha máquina Linux ao aplicativo VPN Client, a porta 8000 e o segredo compartilhado e, inicialmente, o handshake ocorre com sucesso e o cliente recebe os parâmetros da interface de tunelamento do servidor. Mas após um curto período de tempo, o cliente começa a gerar erros como:
E/ToyVpnService: Got java.lang.IllegalStateException: Timed out
E/ToyVpnService: Got java.net.PortUnreachableException:
Isso é seguido por outra conexão e handshake bem-sucedidos e isso continua se repetindo. Após a conexão inicial e a transferência de parâmetros, só ocasionalmente vejo um pacote sendo recebido pelo túnel. Alguém que tenha experiência com o ToyVpn pode me dizer o que está acontecendo? Eu também desativei o firewall ufw, mas isso não parece ajudar.