Como excluir seletivamente o tráfego da rede FreeBSD da interface OpenVPN por porta

1

administrador de sistemas inexperiente aqui.

Estou planejando executar um daemon de rede dentro de uma prisão do FreeBSD através do OpenVPN, mas quero poder fazer o SSH diretamente na prisão e usar o daemon de interface da web do daemon sem passar pela VPN. Pelo que entendi, um túnel OpenVPN normalmente é configurado como uma interface virtual da Internet padrão e, portanto, o tráfego recebido sai da interface do OpenVPN por padrão (o que é problemático, pois gera latência).

Eu pensei "bem, obviamente, já que todo esse tráfego está saindo em algumas portas, eu as redirecionarei para o gateway não VPN". Tentei procurar soluções, mas quase todas envolvem iptables em vez de ipfw (que é o padrão para o FreeBSD) e resolvem problemas ligeiramente diferentes. E soluções alternativas, como o uso de várias rotas padrão, para garantir que o tráfego recebido em qualquer interface seja sempre enviado na mesma interface, pareça abrangente e exija profundo conhecimento de todas as ferramentas envolvidas.

Existe uma maneira elegante de garantir que o tráfego que sai de portas específicas saia em uma interface não padrão especificada usando o ipfw?

Polygonica
fonte

Respostas:

1

A menos que algo como Multipath TCP seja usado, as conexões TCP nunca mudarão sua interface. Se o tráfego chegar do host remoto A na interface Y, as respostas (geralmente) sairão da interface Y, mesmo que a melhor rota correspondente (para o host A) possa levar para outro lugar. Desde que, é claro, essa interface Y tenha uma rota que leva ao host A.

O OpenVPN em sua redirect-gateway def1configuração mais usada não substitui rotas. Em vez disso, ele utiliza como a correspondência de rota é feita: a rota de correspondência mais específica é selecionada. Geralmente, você tem uma 0.0.0.0/0rota (também conhecida como rota padrão) apontando para o seu gateway da Internet (ou o que seja). Esta rota corresponde a tudo. Rotas mais específicas também estão presentes também, levando à sua rede local. O OpenVPN cria duas novas rotas: 0.0.0.0/1e 128.0.0.0/1. Novamente, essas rotas correspondem a tudo, mas são selecionadas sobre a rota padrão anterior, porque são mais específicas. Conclusão: a interface Y ainda pode alcançar "tudo".

Geralmente, uma conexão VPN não impede o tráfego de entrada em outras interfaces. Como tal, deve funcionar sem configuração adicional.

Daniel B
fonte
Obrigado! No entanto, estou curioso (embora eu aceite o que você diz pelo valor nominal): existe alguma documentação que eu possa ler que me diga que as conexões TCP estão vinculadas às interfaces? Eu pesquisei no Google alguns documentos relevantes, mas ainda não tenho certeza de como eu poderia ter previsto isso.
Polygonica
É por definição: um ponto de extremidade TCP é definido pelo endereço IP e pela porta TCP. Os pontos de extremidade TCP em uma conexão são fixos, pois uma conexão é definida por dois pontos de extremidade. Em todas as configurações, exceto as especiais, todas as interfaces IP em uma máquina têm um endereço IP exclusivo. Portanto, a menos que faça uma nova conexão, tudo está consertado.
Daniel B