Tenho uma máquina com dois endereços IP públicos em duas interfaces. Esta máquina está funcionando sshd
. Existe uma maneira de especificar, ao criar um túnel com interface SOCKS (ou seja -D
), qual interface usar para conexões de saída?
Responder1
Estritamente falando, você pode resolver seu problema combinando a opção -b no ssh, conforme sugerido por mgjk, e roteamento. Suponha que você esteja tentando construir um túnel para o site 8.8.8.7 (apenas um exemplo fictício) e queira que a conexão passe pela eth1, então o comando
sudo route add -host 8.8.8.7 dev eth1
adicionará uma rota adequada e tudo ficará bem.
No entanto, este também é o caso perfeito de aplicação para “roteamento de políticas”. Implica configurar a tabela de roteamento na máquina que configura o túnel (ou sejaaquele em que o comandossh-D...é emitido) simplesmente porque é o único em que existem duas interfaces.
Uma explicação concisa, mas suficiente, é dada por David Schwartzneste mesmo site. O único detalhe importante é: digamos que eth0 seja 192.168.1.2 e eth1 seja 10.0.0.2, então você pode dizer
ip rule add from 10.0.0.2 table <NAME1>
ip rule add from 192.168.1.2 table <NAME2>
Neste ponto, você pode vincular sua conexão ssh via -b ao endereço da eth1 e pronto.
Responder2
O que acontece quando você usa -b?
-b bind_address
Use bind_address on the local machine as the source address of
the connection. Only useful on systems with more than one
address.