Não é possível alcançar o IP público específico

0

Meu servidor (executado no Ubuntu 12.04) está atrás de um NAT e precisa acessar um serviço específico que tenha um endereço IP público ( 64.*.*.* ).

O problema é que não consigo alcançar esse IP público específico (todos os outros endereços IP para o mesmo trabalho de serviço; o domínio tem vários endereços IP atribuídos a ele). O mesmo endereço IP pode ser alcançado de outro ambiente idêntico. O servidor NAT (através do qual eu passo) também pode acessá-lo.

O tcpdump no meu servidor mostra apenas pacotes SYN, enquanto no NAT não mostra nenhum tráfego vindo do meu servidor. O IP não é bloqueado pelo iptables no servidor NAT. Outro IP para o mesmo serviço funciona bem.

Esquema:

Meu servidor - > Meu NAT - > (Inacessível) IP público

Tabela de roteamento:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.10.2.200      0.0.0.0         UG        0 0          0 eth0
10.10.0.0        10.10.2.1        255.255.255.0   UG        0 0          0 eth0
10.10.2.0        0.0.0.0         255.255.254.0   U         0 0          0 eth0
10.10.9.0        0.0.0.0         255.255.255.0   U         0 0          0 eth1

Endereço IP de eth0: 10.10.2.51

Eu descobri (comparando os endereços MAC em tcpdumps e procurando na tabela arp) que em vez de ir para o meu gateway padrão, o servidor tenta estabelecer a conexão através do 10.10.2.1 (mas somente para esse IP público, 64.*.*.* ), o que me deixa intrigado.

    
por Mihai 18.04.2013 / 16:26

1 resposta

0

Acho que resolvi o problema. Infelizmente, não sei qual das duas coisas resolvi.

Primeiro, adicionei mais uma interface de uma sub-rede diferente (10.10.8.51), alterei o endereço IP do servidor NAT (10.10.8.200) e enviei todo o tráfego padrão através dessa interface.

Em segundo lugar, descobri que o servidor NAT fez o redirecionamento do ICMP, então desabilitei a aceitação de redirecionamentos. Eu realmente acho que isso causou o meu problema, mas eu não tive tempo para testá-lo no env de teste.

# sysctl -w net.ipv4.conf.eth2.accept_redirects = 0
# sysctl -w net.ipv4.conf.eth2.send_redirects = 0

# sysctl -w net.ipv6.conf.eth2.accept_redirects = 0
# sysctl -w net.ipv6.conf.eth2.send_redirects = 0
    
por 07.05.2013 / 13:18