Eu tenho um servidor Linux OpenVPN com dois clientes, A e B. Eu os configurei com client-to-client
para que eles possam conversar um com o outro. Eu quero fazer o cliente A para ser a rota padrão para o cliente B para que B possa acessar a Internet através da rota: B- > server- > A > NAT- > internet. A Internet é a rota padrão de A e os túneis A e B estão na Internet usando suas próprias rotas padrão nativas.
No momento, com um TUN e sem diretivas de roteamento especiais, posso fazer ping de A para servidor, B para servidor e A para B, mas não há rota além de B.
A dificuldade é ... A já possui algumas tabelas de roteamento complexas (plural), acionadas por uma pilha de regras de iptables. Eu não quero que o OpenVPN toque neles porque isso quebrará o roteamento em outro lugar. O servidor tem uma rota padrão completamente diferente. Então preciso dizer:
Eu acho que configurei o iptables para fazer 3. Eu poderia fazer algumas regras de iptables para fazer B para um forwarding usando uma nova tabela de roteamento ... mas todas elas estão dentro de uma interface TUN para que o iptables não veja eles. Se eu usar iroute
, isso interferirá no roteamento no servidor.
Uma opção é um dispositivo TAP - faça a ponte entre o servidor e, em vez de NAT, conecte o servidor a B TAP na interface WAN. Eu tenho isso tanto quanto A-server-B (virar tudo para dev tap
, nenhuma outra alteração), mas então eu perco contato com B quando eu conecto tapB e WAN (depois de desligar o NAT). Isso também causa feedback positivo: o ruído do outro tráfego na interface WAN de A (solicitações ARP etc) é sintonizado no TAP, o que causa tráfego extra na interface WAN e assim por diante.
Outra opção é dois dispositivos TUN e iptables entre eles ... este é meu último recurso.
Então ... como posso dizer ao OpenVPN para fazer o encaminhamento de pacotes dentro de suas próprias interfaces, sem perturbar o roteamento no lado do SO?