Questão Encaminhar somente tráfego HTTP (S) através de VPN


Eu tenho uma interface ppp0 configurada como um túnel VPN usando este guia. Agora preciso rotear o tráfego em portas específicas (80, 443) através da interface ppp0. Idealmente, se o servidor VPN estiver inativo, todas as solicitações HTTP (S) devem falhar.

Há muitas respostas para problemas semelhantes sugerindo usar iptables, então eu acho que é o caminho a seguir, mas não consigo descobrir os comandos certos para usar neste cenário específico.


1
2017-09-14 14:02


origem




Respostas:


Aqui vamos levar www como o serviço de roteamento. Usar mangle tabela de iptable para modificar o www pacotes.

sudo iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 0x1

Estamos marcando todos os pacotes com porta de destino 80 Como 0x1 .

Agora salve e reinicie iptables.

service iptables save
service iptables restart

Em seguida, crie uma nova tabela de rotas IP /etc/iproute2/rt_tables apenas dando uma entrada

100 wwwtable

Escrever regra para www pacotes.

ip rule add fwmark 0x1 lookup wwwtable

Adicionar rota na nova tabela wwwtable. Todo o outro tráfego passará pelo gateway padrão, que pode ser visto por ip route show comando.

Copiamos todas as entradas, exceto a entrada do gateway padrão da tabela principal.

sudo ip route show table main | grep -Ev ^default | while read ROUTE ; do ip route add table wwwtable $ROUTE; done

Adicionar entrada de gateway padrão para www pacotes para mesa wwwtable 

sudo ip route add default dev ppp0 table wwwtable

Usar ip route show table wwwtable para mostrar todas as rotas em wwwtable.

Repetir tudo para https na porta 443.


2
2017-09-14 14:20



Obrigado pela resposta detalhada, no entanto, o primeiro comando não parece funcionar, ele retorna um erro dizendo Bad argument '80'. Eu estou no 14.04 LTS. - blade
desculpe, erro de digitação. Eu os conserto. - 2707974
Esta parece ser a direção certa, mas não está funcionando para mim. Embora o roteamento seja alterado de alguma forma, ele não carrega sites, todas as solicitações acabam. BTW: há outro erro de digitação /etc/iproute2/rt_table, deveria ser rt_tables e não há serviço iptables, pelo menos não no meu sistema. E eu acho que você pode especificar --dports 80,443 Ambos ao mesmo tempo. - blade