Windows Server 2008: especificando o endereço IP padrão quando a NIC possui vários endereços

23

Eu tenho um Windows Server que possui ~ 10 endereços IP vinculados estaticamente. O problema é que não sei como especificar o endereço IP padrão.

Às vezes, quando atribuo um novo endereço à NIC, o endereço IP padrão muda com o último IP inserido na configuração avançada do IP na NIC. Isso tem o efeito (desde que eu uso o NAT) que o IP público de saída também muda.

Mesmo que esse problema esteja atualmente no Windows Server 2008.

Como você pode definir o endereço IP padrão em uma NIC quando ela tem vários endereços IP vinculados?

Há mais explicações sobre o meu problema.

texto alternativo http://www.nmediasolutions.com/_images/probleme/ip.png

Aqui está a saída de ipconfig:

DHCP Enabled. . . . . . . . . . . : No
Autoconfiguration Enabled . . . . : Yes
IPv4 Address. . . . . . . . . . . : 192.168.99.49(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.51(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.52(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.53(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.54(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.55(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.56(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.57(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.58(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.59(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.60(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.61(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.62(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.64(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.65(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.66(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.67(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.68(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.70(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.71(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.100(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.108(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.109(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.112(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.99.63(Duplicate)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.99.1

Se eu fizer uma pathpingresposta, a primeira é a 99.49, também se o meu endereço IP padrão for 99.100

Tracing route to www.l.google.com [72.14.204.99]
over a maximum of 30 hops:
  0  Machine [192.168.99.49]

Há a tabela de roteamento na máquina:

 Network Destination        Netmask          Gateway       Interface  Metric
              0.0.0.0          0.0.0.0     192.168.99.1    192.168.99.49    261
           10.10.10.0    255.255.255.0         On-link       10.10.10.10    261
          10.10.10.10  255.255.255.255         On-link       10.10.10.10    261
         10.10.10.255  255.255.255.255         On-link       10.10.10.10    261
         192.168.99.0    255.255.255.0         On-link     192.168.99.49    261
        192.168.99.49  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.51  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.52  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.53  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.54  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.55  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.56  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.57  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.58  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.59  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.60  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.61  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.62  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.64  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.65  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.66  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.67  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.68  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.70  255.255.255.255         On-link     192.168.99.49    261
        192.168.99.71  255.255.255.255         On-link     192.168.99.49    261
       192.168.99.100  255.255.255.255         On-link     192.168.99.49    261
       192.168.99.108  255.255.255.255         On-link     192.168.99.49    261
       192.168.99.109  255.255.255.255         On-link     192.168.99.49    261
       192.168.99.112  255.255.255.255         On-link     192.168.99.49    261
       192.168.99.255  255.255.255.255         On-link     192.168.99.49    261
            224.0.0.0        240.0.0.0         On-link     192.168.99.49    261
            224.0.0.0        240.0.0.0         On-link       10.10.10.10    261
      255.255.255.255  255.255.255.255         On-link     192.168.99.49    261
      255.255.255.255  255.255.255.255         On-link       10.10.10.10    261

Eu acho que minha rota deve ficar assim:

Network Destination        Netmask          Gateway       Interface  Metric
              0.0.0.0          0.0.0.0     192.168.99.1    **192.168.99.100**    261
           10.10.10.0    255.255.255.0         On-link       10.10.10.10    261
          10.10.10.10  255.255.255.255         On-link       10.10.10.10    261
         10.10.10.255  255.255.255.255         On-link       10.10.10.10    261
         192.168.99.0    255.255.255.0         On-link     192.168.99.100    261
        192.168.99.49  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.51  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.52  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.53  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.54  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.55  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.56  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.57  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.58  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.59  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.60  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.61  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.62  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.64  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.65  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.66  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.67  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.68  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.70  255.255.255.255         On-link     192.168.99.100    261
        192.168.99.71  255.255.255.255         On-link     192.168.99.100    261
       192.168.99.100  255.255.255.255         On-link     192.168.99.100    261
       192.168.99.108  255.255.255.255         On-link     192.168.99.100    261
       192.168.99.109  255.255.255.255         On-link     192.168.99.100    261
       192.168.99.112  255.255.255.255         On-link     192.168.99.100    261
       192.168.99.255  255.255.255.255         On-link     192.168.99.100    261
            224.0.0.0        240.0.0.0         On-link     192.168.99.100    261
            224.0.0.0        240.0.0.0         On-link       10.10.10.10    261
      255.255.255.255  255.255.255.255         On-link     192.168.99.100    261
      255.255.255.255  255.255.255.255         On-link       10.10.10.10    261

Como posso ter certeza de que o endereço IP usado na imagem (supostamente o endereço IP padrão) será usado pelo meu servidor como endereço padrão?

Cédric Boivin
fonte

Respostas:

11

No Server 2008 Service Pack 2 (não no R2) ou no hotfix Vista SP2 e MS KB975808, existe uma solução, embora um pouco desajeitada. Você removeria todos os endereços que NÃO deseja como fonte e, em seguida, adicione novamente cada um na linha de comando usando

Netsh int ipv4 add address <Interface Name> <ip address> skipassource=true

O hotfix habilita o sinalizador "Ignorar como origem".

Para um aprofundamento sobre como diferentes versões do Windows selecionam IPs de origem, consulte esta postagem no blog do TechNet .

Paul
fonte
6

Não existe um "IP padrão" para uma interface de rede; sua tabela de roteamento de sistemas define qual interface lógica deve ser usada ao se comunicar com outros dispositivos.

Parece que o que você gostaria de fazer é configurar uma rota padrão. Isso faria com que todas as conversas iniciadas por esta máquina fossem feitas a partir de um IP específico.

Use route add para adicionar um gateway padrão

Brian Tillman
fonte
Como posso mudar a minha tabela de roteamento, na verdade, é a 99.49 que eu preciso a rota padrão seja 99,100
Cédric Boivin
O gateway padrão é a rota padrão e vice-versa. É apenas uma questão de terminologia.
Kevin M
Eu sei disso, mas não posso alterar a rota padrão. Como eu posso mudar isso? O que é as fórmulas de comando corretas
Cédric Boivin
1
Você pode tentar o seguinte: "route add 0.0.0.0 mask 0.0.0.0 192.168.99.100 metric 2"
Jeff Miles
Se eu fizer isso, não, não posso mais entrar na internet porque é um gateway errado.
Cédric Boivin
2

Sua situação não é clara, mas se eu entendi direito:
1) Por que você simplesmente não define o seu IP "necessário para ser o padrão"?

2) Ou talvez você possa tentar isso (assumindo que o endereço do gateway seja 192.168.99.1):

route delete 0.0.0.0
route -p add 192.168.99.1 mask 255.255.255.255 192.168.99.100
route -p add 0.0.0.0 mask 0.0.0.0 192.168.99.1 192.168.99.100

Para obter mais informações sobre a sintaxe do comando "route", consulte aqui: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/route.mspx?mfr=true

Alexey Shatygin
fonte
Não funciona, o comando não é bom. Erro, não pode encontrar o arquivo especificado
Cédric Boivin
tente sem "if": route -p add 192.168.99.1 mask 255.255.255.255 192.168.99.100 mas deve funcionar, você pode citar o erroe, por favor?
Alexey Shatygin
Desta vez, nenhuma mensagem de erro, mas isso não muda nada
Cédric Boivin
Isso deve mudar sua tabela de roteamento. Você pode "route print", este comando, e "route print" novamente e colocar a saída aqui?
Alexey Shatygin
E, antes de executar o comando que
publiquei
1

Você não pode usar métricas nos endereços IP? Nas propriedades TCP / IP, desmarque Métrica automática e atribua uma estática com um valor menor que 261 (conforme mostrado na captura de tela) ao endereço que você deseja como padrão.

Jeff Miles
fonte
Vou tentar isso, é uma boa ideia.
Cédric Boivin
Não funcione, veja minha modificação no meu post.
Cédric Boivin
existe uma maneira de mudar o endereço da interface?
Cédric Boivin
1

Um comando no formato:
> route add 0.0.0.0 mask 0.0.0.0 192.168.99.1 métrico xxx se yyy
alterar o endereço visto quando a máquina for para qualquer endereço não 192.168.99.0 / 24 e não 10.10.10.0 / 24 . Ou seja, quando o gateway padrão é usado. A métrica (xxx) deve ser maior que qualquer outra coisa para garantir que a regra seja usada. A interface (aaaa) deve ser a interface a ser usada. Mas acho que não há uma maneira de controlar qual endereço IP nessa interface usar se houver vários endereços IP.
> route add 192.168.99.0 mask 255.255.255.0 métrica xxx se yyy
for semelhante, mas for para qualquer endereço 192.168.99.0/24 ao qual o sistema acessa. O fato é que atribuir vários endereços IP a uma única interface pode ter esses tipos de problemas.

Beau Geste
fonte
1

Consegui duplicar seu problema: parece que o Windows usa o endereço IP atribuído mais baixo em uma determinada interface de rede como o "de saída", independentemente da ordem real em que foram atribuídos.

Não consegui encontrar nenhuma documentação sobre esse comportamento, mas tenho certeza de que é por design.


Editar

Eu acho que isso realmente não pode ser feito no nível do sistema operacional, mas pode ser feito por código no seu aplicativo: um soquete pode ser explicitamente vinculado a um par de porta / endereço IP escolhido antes de conectá-lo ao terminal remoto. Mas você precisará usar bibliotecas de nível inferior às bibliotecas padrão de serviços da web. Ou seja, você terá que abrir manualmente um soquete, conectá-lo e usá-lo para ler / gravar dados.

Exemplo de .NET / C #:

using System.Net;
using System.Net.Sockets;

IPAddress local_addr = IPAddress.Parse("192.168.99.100");
IPAddress remote_addr = IPAddress.Parse("1.2.3.4");

int local_port = 4242;
int remote_port = 80;

IPEndPoint local_ep = new IPEndPoint(local_addr,local_port);
IPEndPoint remote_ep = new IPEndPoint(remote_addr,remote_port);

Socket s = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

s.Bind(local_ep);

s.Connect(remote_ep);

// Now use the socket to talk to the remote host

Isso abrirá uma conexão com o 1.2.3.4:80 originando-o de 192.168.99.100:4242, para que o host remoto a veja exatamente desse endereço IP.

Tentado e testado ao conectar-se ao IIS, ele registra a solicitação como proveniente do endereço IP especificado.

Massimo
fonte
Eu li algo que poderia ser uma comparação binária com o endereço IP?
Cédric Boivin
1
Sim, a comparação binária é muito provavelmente a maneira como "a mais baixa" é selecionada; Eu não tentei com IPs pertencentes a diferentes sub-redes, no entanto.
Massimo
Meu maior problema neste momento é que tenho mais de 300 sites em vários endereços IP e, quando meu servidor entra na Internet para ligar para outro servidor (serviço web), não posso ter certeza de qual ip público meu servidor terá.
Cédric Boivin
Obrigado por esta resposta, mas no meu cenário é impossível aplicar essas soluções. As soluções precisam vir do sistema operacional ou talvez do firewall. É uma boa maneira de resolver o problema por aplicativo, mas vamos a vários aplicativos, para resolver o problema em cada site.
Cédric Boivin
Mas, mesmo que você pudesse fazer o que queria, não poderia fazer com que sites diferentes usassem IPs diferentes; Desta forma, você pode :-)
Massimo
1

A seleção do endereço de origem para uma chamada de saída é tratada de maneira diferente pela pilha TCP / IP desde a revisão do Vista. No XP / 2003 e versões anteriores, o endereço de origem era determinado pela tabela de rotas quando não declarado explicitamente pelo aplicativo que fazia a chamada de saída. Desde o Vista / 2008, o endereço de origem pode ser determinado pela afinidade do prefixo ao destino ou endereço do gateway do próximo salto, se o destino não for local. A seguinte publicação no blog da Technet explica muito bem a mudança de comportamento.

http://blogs.technet.com/b/networking/archive/2009/04/24/source-ip-address-selection-on-a-multi-homed-windows-computer.aspx

Brian Mellinger
fonte
1

Eu tenho o Windows 2008 R2 SP1 x64 Enterprise edition sendo usado como um servidor Web com uma NIC.

Corri para o mesmo problema descrito acima. Eu quero que as conexões de saída sejam tratadas pelo endereço IP padrão (aquele assinado no servidor), mas ele continua escolhendo aleatoriamente qual endereço IP dos meus 10 endereços IP para os meus 10 sites nesse servidor.

Todos eles mostram como endereços IP preferenciais se você executar o seguinte comando.

Netsh int ipv4 show ipaddresses level=verbose

Eu tentei fazer o download do Hot Fix, mas por algum motivo (e eu verifiquei duas vezes, triplamente) ele disse que "ele não pode ser executado nesta versão do sistema operacional). Se vocês quiserem tentar, aqui está .

Se você tiver um servidor MS DNS em execução, notará que o mesmo nome do servidor será registrado 11 vezes (no meu caso) 1 IP para o servidor e 10 IP para cada um dos sites.

O que eu acredito que poderia ser uma SOLUÇÃO (neste momento, a menos que alguém tenha uma solução melhor)

Para acessar o servidor Windows nas propriedades TCP em que você inseriu os endereços IP do servidor e dos sites, você verá uma guia DNS. Agora desmarque a opção REGISTRAR AS CONEXÕES DE ENDEREÇOS e reinicie o servidor (e deixe desmarcada).

Se você efetuar o check-in no servidor DNS, todas as entradas DNS com os IPs desaparecerão.

Agora, digite manualmente no DNS o nome do servidor e o endereço IP preferido . E isso deve resolver o problema.

Se algum de vocês tiver alguma solução melhor, compartilhe conosco.

Gripe: Não sei por que a MS não corrigiu esse problema. Eles deveriam ter criado uma opção (como uma caixa de seleção) para servidores que carregam vários endereços IP na mesma sub-rede para você selecionar qual endereço IP deve ser o preferido.

Neo
fonte
0

Um 'endereço padrão' é aquele colocado na primeira caixa de entrada nas propriedades da placa de interface, uma vez que responderá por padrão com essa, e todas as outras são consideradas secundárias.

(O servidor ISA é um bom exemplo desse comportamento, pois você não pode dizer para responder com o IP com o qual foi contatado ...)

Alexandre Nizoux
fonte
É suposto ser assim, mas não funciona. No meu caso o ip 99,49 está na configuração avançada e a 99,100 é aquele que especifica na propriedade de ipv4 ....
Cédric Boivin
Isso é realmente estranho, pois nossa infraestrutura aqui usa muito isso para filtros de servidor da Web e outras coisas. Você tentou remover todos os IPs das propriedades da placa, exceto a que você deseja que seja o padrão, aplicar e colocá-los novamente depois?
Alexandre Nizoux
Sim, eu experimentar, e o mesmo problema ocorrer quando entro 99,49
Cédric Boivin
99,49 é o mais baixo dos seus IPs?
Alexandre Nizoux
Sim, é que você pode olhar meu ipconfig no topo
Cédric Boivin
0

Encontrei uma solução:

  • no seu nic primário, remova o IP que você deseja como padrão, remova também o gw padrão, dê uma métrica alta (exemplo: 50)
  • adicione nic secundário, dê o IP desejado como 'padrão', defina o GW padrão aqui e, na guia avançada, defina a métrica mais baixa (exemplo: 1)

Isso funcionou no meu 2008R2 / IIS7 com 20 endereços IP.

BR, Matija

user39080
fonte
0

Eu o resolvi alterando a máscara de rede 255.255.255.255para todos os endereços adicionais e deixando apenas o endereço padrão inalterado.

Espero que isso resolva para você!

Aldo
fonte