Eu tenho um sistema ubuntu 20 e estou tentando criar um túnel entre meu sistema e um servidor remoto, pois meu sistema cliente não pode ter nenhum tráfego TCP de entrada/saída.
Eu criei uma interface virtual tun0 e quero apenas que os pacotes TCP sejam roteados para essa interface, para que meu programa possa lê-los, embrulhar o pacote em um protocolo diferente (ou seja, DNS) e enviá-lo para o terminal do meu túnel.
Eu já consegui rotear todo o tráfego do meu computador para a interface, mas isso impedirá meu sistema de fazer outro tráfego não relacionado a TCP (como fazer ping em meu roteador ou google.com, por exemplo).
As regras que usei:
sudo ip route del default
sudo ip route add default via 10.1.0.1 dev tun0
sudo ip route add 192.168.1.127 via 192.168.1.1 dev ens33
Onde 192.168.1.1 é meu gw padrão 10.1.0.1 é meu tun0 ip 192.168.1.127 é o ip do meu servidor
Como posso rotear apenas o tráfego tcp?
Consegui isso usando uma tabela de roteamento diferente e marcando pacotes específicos para serem roteados usando essa tabela.
Para criar uma rota padrão para o ip da minha interface tun:
Para marcar pacotes TCP de saída:
E, finalmente, para garantir que esses pacotes sejam roteados com a tabela 3, uma regra de ip para encaminhar pacotes marcados: