Como rotear tráfego VPN específico através de um cliente VPN específico?

1

Eu tenho uma rede VPN baseada no software OpenVPN. Preciso rotear todo tráfego de rede em rede VPN onde o IP de destino é de país específico via um cliente específico nesta rede VPN (endereço IP do cliente VPN) - roteador Mikrotik onde está configurado o NAT (MASQUERADE) para interface principal da internet (PPPoE). Eu preciso obter um endereço IP público e dinâmico pertencente a esse cliente VPN (roteador Mikrotik - interface PPPoE) para todo esse tráfego. Então no servidor VPN eu criei a regra mangle iptables e eu uso o módulo iptables geoip:

iptables -A PREROUTING -t mangle -i tun0 -m geoip --destination-country COUNTRY_CODE -j MARK --set-mark 1

Por isso, marquei todo o tráfego do cliente que tem o IP de destino desse país específico. Em seguida, tentei usar essa solução : crie uma tabela de rotas específica e adicione a rota padrão. Mas a rota padrão pode ser apenas para o próximo salto nessa rede. Então, quando eu uso este comando:

ip route add default via specific_VPN_client dev tun0 table CountryRoute 

Eu recebo este erro:

RTNETLINK answers: Network is unreachable

É possível o tráfego específico da rota para um cliente específico, mas não para o próximo salto, por favor?

Eu também tentei esta regra iptables:

iptables -A PREROUTING -i tun0 -m geoip --destination-country COUNTRY_CODE -j DNAT --to-destination Mikrotik_VPN_IP

Mas o tráfego termina no roteador Mikrotik. Talvez seja possível resolver este problema neste roteador?

Tabela de rotas do servidor OpenVPN (10.1.1.1):

default via PUBLIC_IP_VPN_SERVER dev eth0
10.1.1.0/24 via 10.1.1.2 dev tun0
10.1.1.2 dev tun0  proto kernel  scope link  src 10.1.1.1
PUBLIC_IP_VPN_SERVER/24 dev eth0  proto kernel  scope link  src PUBLIC_IP_VPN_SERVER

UPDATE

Eu usei este solução para adicionar rota padrão na tabela CountryRoute. Então a tabela CountryRoute tem este conteúdo:

default via 10.1.1.30 dev tun0 

Eu tenho a regra mangle ativa do iptables (mencionada acima) e as regras da rota ip:

ip rule show
0:      from all lookup local
32765:  from all fwmark 0x1 lookup CountryRoute
32766:  from all lookup main
32767:  from all lookup default

Mas o tráfego marcado ainda termina em 10.1.1.1 - Servidor OpenVPN, não segue para o roteador Mikrotik.

UPDATE2

Valores atuais:

default via PUBLIC_IP_VPN_SERVER dev eth0
10.0.0.0/24 dev veth0  proto kernel  scope link  src 10.0.0.1
10.0.1.0/24 dev veth3  proto kernel  scope link  src 10.0.1.2
10.1.1.0/24 via 10.1.1.30 dev tun0
10.1.1.30 dev tun0  proto kernel  scope link  src 10.1.1.1
PUBLIC_IP_VPN_SERVER/24 dev eth0  proto kernel  scope link  src PUBLIC_IP_VPN_SERVER

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.1.1.1  P-t-P:10.1.1.30  Mask:255.255.255.255
          inet6 addr: PUBLIC_IP_VPN_SERVER/64 Scope:Global
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:141437 errors:0 dropped:0 overruns:0 frame:0
          TX packets:230785 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:14693683 (14.0 MiB)  TX bytes:240387315 (229.2 MiB)

ip route show table CountryRoute
default via 10.1.1.30 dev tun0

Obrigado pela sua ajuda.

    
por Mato 24.05.2018 / 15:03

1 resposta

1

Acho que a configuração de um namespace de rede para receber o tráfego da Microtek e rotea-lo de volta com o NAT para a Microtec real poderia ser feito através do seguinte, usando 10.0.0.0/24 "para" o namespace e 10.0.1.0 / 24 de volta, então roteado via Microtec_VPN_IP

ip netns add Microtek
ip link add veth0 type veth peer name veth1
ip link set veth1 netns Microtek
ip link add veth2 type veth peer name veth3
ip link set veth2 netns Microtek
ifconfig veth0 10.0.0.1/24 up
ifconfig veth3 10.0.1.2/24 up
ip netns exec Microtek ifconfig veth1 10.0.0.2/24 up
ip netns exec Microtek ifconfig veth2 10.0.1.1/24 up
ip netns exec Microtek iptables -t nat -A POSTROUTING -o veth2 -j MASQUERADE
ip netns exec Microtek ip route add Mikrotik_VPN_IP via 10.0.1.2
ip netns exec Microtek ip route add default via Mikrotik_VPN_IP

Com isso, você tem um caminho de tráfego para / do roteador Microtek, roteando-o via 10.0.0.2. Você também precisa do roteamento baseado em regras para passar o tráfego selecionado via 10.0.0.2, e o restante via rota "normal" / padrão.

    
por 05.06.2018 / 20:14