Use o roteamento de políticas no lado do cliente para fazer isso.
Roteamento de políticas
Exemplo de serviço http de roteamento de política (porta 80) via internet:
echo "1 inet" >> /etc/iproute2/rt_tables
Adicionar rota padrão à tabela de roteamento inet
ip route add default via <router_ip> dev <if> table inet
-
<if>
: substitua pelo nome da interface, diretamente conectado à Internet (por exemplo,eth0
) -
<router_ip>
: substitua pelo IP do roteador (gateway), na sub-rede da Internet. Este é o roteador definido como gateway padrão, enquanto o servidor cliente não está conectado via VPN. Para obter esse IP, desconecte / feche o cliente VPN e digite:ip route show | grep default
Adicione uma regra de roteamento para enviar tudo marcado com fwmark 0x1
para a tabela de roteamento inet
ip rule add from all fwmark 0x1 table inet
Marcando pacotes com iptables
para o roteamento de políticas
Marque os pacotes que têm a porta 80
como destino na tabela MANGLE
(repita a linha ... --dport 80 ...
para qualquer outro serviço / porta).
iptables -t mangle -F
iptables -t mangle -A PREROUTING -i <if> -p tcp --dport 80 -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -j CONNMARK --save-mark
iptables -t mangle -A OUTPUT -j CONNMARK --restore-mark
iptables -t mangle -A OUTPUT -m connmark --mark 0x1 -j MARK --set-mark 0x1
-
<if>
: substitua pelo nome da interface, diretamente conectado à Internet (por exemplo,eth0
)
Estas regras fazem o seguinte:
- Limpe a tabela
mangle
(necessária apenas para limpar as regras definidas anteriormente) -
MARK
pacotes de entrada na interface externa para uma porta específica (80) - Defina o
MARK
do pacote inicial (regra anterior) como o valor deCONNMARK
(conntrack mark
) para todos os pacotes da conexão. - Restaurar o
CONNMARK
na cadeiaOUTPUT
. -
MARK
de pacotes de saída na cadeiaOUTPUT
em que a conexãoCONNMARK
é0x1
. EsseMARK
pode ser usado para corresponder pacotes no roteamento de políticas comfwmark 0x1
.