Como configurar um roteador NAT do Linux com um único NIC

0

Eu tenho vários servidores Windows em execução em uma rede virtual do Azure com 2 sub-redes. Eu tenho um controlador de domínio em 10.0.0.4 e servidores em 10.0.1.4, 10.0.1.5, etc. Eu configurei uma VPN ponto-a-local, para que eu possa fazer uma conexão VPN para a rede virtual do meu PC. Quando faço a conexão VPN, meu PC recebe um IP 10.0.16.x. Por padrão, a conexão VPN fornecida pelo Azure só direciona o tráfego 10.xxx pela VPN, mas eu modifiquei isso marcando Usar gateway padrão na rede remota , porque desejo todo o tráfego da Internet roteado pelo Azure quando Estou conectado à VPN. Quando faço essa conexão, consigo acessar os servidores na rede virtual do Azure, mas não tenho conectividade com a Internet. Meu entendimento é que um roteador NAT será necessário para facilitar a conectividade com a Internet.

Eu adicionei uma VM do CentOS em 10.0.1.6. Ele tem apenas uma única NIC, pois não é possível que as VMs do Azure tenham mais de uma NIC. Eu tenho duas perguntas:

  1. Será possível configurar um roteador NAT com uma única NIC? Se sim, como? A pesquisa do Google me enterra em uma avalanche de comandos do iptables, principalmente para roteadores NAT com 2 NICs. Não consigo encontrar nada que simplifique as etapas de configuração necessárias para esse tipo de cenário. Eu tentei os comandos aqui , mas isso não foi bem sucedido.

  2. No meu PC depois de se conectar à VPN, não sei bem o que precisarei fazer. Estarei essencialmente querendo tornar o 10.0.1.6 o gateway padrão? Se sim, é assim que eu farei isso?

    route delete 0.0.0.0     
    route add 0.0.0.0. MASK 0.0.0.0 10.0.1.6
    

Caso isso ajude, aqui está a saída de ifconfig na VM do CentOS:

eth0      Link encap:Ethernet  HWaddr 00:15:5D:61:7E:1E
          inet addr:10.0.1.6  Bcast:10.0.1.255  Mask:255.255.255.0
          inet6 addr: fe80::215:5dff:fe61:7e1e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:931 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1034 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:101709 (99.3 KiB)  TX bytes:162650 (158.8 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Este é um recorte da página de configuração da Rede Virtual do Azure que, esperamos, ajuda a descrever o layout da rede. Eu estou usando "Subnet-1" para controladores de domínio e "Subnet-2" é onde todos os outros servidores vivem (incluindo a VM CentOS que estou tentando usar como um roteador). O Azure configura automaticamente as VMs em "Sub-rede 1" com um gateway padrão de 10.0.0.1 e as VMs em "Sub-rede-2" com um gateway padrão de 10.0.1.1. Mas esses gateways não são servidores sobre os quais tenho controle. Os clientes VPN são alocados IPs do espaço de endereço "conectividade ponto-a-local".

Screenshot da configuração de rede virtual do Azure

(Eu não estou autorizado a postar imagens aparentemente)

E aqui está um link para a tabela de rotas no cliente vpn (windows) (neste caso, depois de configurar 10.1.0.1 como o gateway padrão):

Tabela de rotas no cliente VPN

    
por almaplayera 04.01.2014 / 22:03

1 resposta

0

O servidor vpn, por exemplo, 10.0.0.1 é sempre a primeira parada para todo o tráfego IP que sai do cliente.

Portanto, se você tem tráfego para, por exemplo, www.google.com, ele deve atravessar primeiro esse servidor vpn, porque a conexão vpn é um link ponto-a-ponto, ou seja, o tráfego do cliente tem apenas uma saída , que é o servidor.

Em seguida, o servidor vpn verá o destino do tráfego e, como o servidor está configurado para não encaminhar o tráfego cujo destino é a Internet, ele descartará esse tráfego.

Assim, o servidor vpn sempre interceptará e soltará o tráfego indo para a internet, você não poderá ignorá-lo.

Conclusão, o tráfego nem chegará ao centos, portanto, não ativará o NAT.

Você pode criar um segundo túnel do cliente até o centos (por exemplo, openvpn) dentro do túnel vpn original para ocultar o tráfego da Internet do servidor vpn.

Ou, outra solução seria configurar um proxy web na VM centos, e configurar seu navegador para esse proxy, dessa forma o tráfego http sempre sairá do cliente com o ip de destino do centos, e então ele irá alcançar o proxy, que irá encaminhar para a internet, no entanto, esta solução funciona apenas para o tráfego http.

    
por 07.01.2014 / 00:50

Tags