Existe um problema com o curl -test, que eu sei resolver, e um problema com o seu esquema em geral, para o qual posso sugerir uma solução.
curl não pode funcionar dessa maneira: depois de iniciar a VPN, não há gateway definido nessa interface (eth0): a eth0 NIC tem um endereço IP e pode acessar sua LAN, mas não há não é um gateway a partir do qual a internet, e icanhazip.com em particular, pode ser alcançado. Para que curl funcione desta forma, você terá que instruir seu kernel que a rota específica para 216.69.252.101 (icanhazip.com) é através da interface eth0 :
ip ro add 216.69.252.101 via your_home_routers_IP_address
Agora, a chamada curl funcionará como você deseja.
Se você quiser se comunicar através da VPN e fora dela de maneira estável e completa, a maneira correta de proceder é instalar uma segunda tabela de roteamento por meio de roteamento baseado em política . Você pode encontrar uma introdução boa e concisa para o tópico por David Schwartz em uma irmã- site, aqui. A razão pela qual você precisa dessa engenhoca é que você está imaginando um sistema com dois gateways distintos, que não são permitidos, a não ser, é claro, que haja duas tabelas de roteamento distintas.
Agora, para atingir sua meta, ou seja, , para rotear pacotes ao longo de rotas diferentes de acordo com a identidade do usuário, você precisará definir regras apropriadas que selecionem a tabela de roteamento relevante. Então vamos supor que agora você tem duas tabelas, chamadas vpn e novpn. Você terá primeiro que usar a tabela mangle de iptables para marcar os pacotes de acordo com a identidade do usuário e, em seguida, fornecer regras para roteamento baseado em política de acordo com a presença (ou ausência) ) da referida marca.
Poderia funcionar assim:
iptables -t mangle -I OUTPUT -m owner --uid-owner some-user -j MARK --set-mark 100
ip rule add fwmark 100 table vpn
para um usuário destinado a usar vpn e
iptables -t mangle -I OUTPUT -m owner --uid-owner some-other-user -j MARK --set-mark 300
ip rule add fwmark 300 table novpn
para aqueles que você deseja rotear fora da VPN. Além disso, é sempre melhor definir uma tabela de roteamento para qualquer outra coisa , ou seja, um padrão. Espero que isso ajude.