Windows Server 2008: określenie domyślnego adresu IP, gdy karta sieciowa ma wiele adresów

23

Mam system Windows Server, który ma ~ 10 adresów IP powiązanych statycznie. Problem polega na tym, że nie wiem, jak określić domyślny adres IP.

Czasami, gdy przypisuję nowy adres do karty sieciowej, domyślny adres IP zmienia się wraz z ostatnim adresem IP wprowadzonym w zaawansowanej konfiguracji adresu IP na karcie sieciowej. Ma to skutek (ponieważ używam NAT), że wychodzące publiczne IP również się zmienia.

Chociaż ten problem występuje obecnie w systemie Windows Server 2008.

Jak ustawić domyślny adres IP karty sieciowej, jeśli ma wiele powiązanych adresów IP?

Jest więcej wyjaśnień na temat mojego problemu.

alt text http://www.nmediasolutions.com/_images/probleme/ip.png

Oto wynik 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

Jeśli to zrobię, pathpingjest odpowiedź, pierwsze w górę to 99,49, także jeśli mój domyślny adres IP to 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]

Na komputerze znajduje się tabela routingu:

 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

Myślę, że moja trasa powinna wyglądać następująco:

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

Jak mogę się upewnić, że adres IP użyty na obrazku (który powinien być domyślnym adresem IP) będzie używany przez mój serwer jako adres domyślny?

Cédric Boivin
źródło

Odpowiedzi:

11

W przypadku Server 2008 Service Pack 2 (nie R2) lub Vista SP2 i MS KB975808 istnieje rozwiązanie, choć nieco niezdarne. Usunąłbyś wszystkie adresy, których NIE chcesz jako źródło, a następnie ponownie dodałeś każdy z nich w linii poleceń za pomocą

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

Poprawka włącza flagę „Pomiń jako źródło”.

Aby dowiedzieć się więcej o tym, jak różne wersje systemu Windows wybierają źródłowe adresy IP, zobacz ten wpis na blogu TechNet .

Paweł
źródło
6

Nie ma czegoś takiego jak „domyślny adres IP” interfejsu sieciowego; raczej twoja tablica routingu systemowego określa, który interfejs logiczny powinien być używany podczas komunikacji z innymi urządzeniami.

Wygląda na to, że chcesz skonfigurować domyślną trasę. Spowodowałoby to, że wszystkie rozmowy inicjowane przez to urządzenie byłyby wykonywane z określonego adresu IP.

Użyj route add, aby dodać domyślną bramę

Brian Tillman
źródło
Jak mogę zmienić tabelę routingu, tak naprawdę to 99,49 Potrzebuję domyślnej trasy 99.100
Cédric Boivin
Domyślna brama jest domyślną trasą i odwrotnie. To tylko kwestia terminologii.
Kevin M
Wiem o tym, ale nie mogę zmienić domyślnej trasy. Jak mogę to zmienić? Jakie są poprawne formuły poleceń
Cédric Boivin
1
Możesz spróbować: „route add 0.0.0.0 mask 0.0.0.0 192.168.99.100 metric 2”
Jeff Miles
Jeśli to zrobię, nie, nie mogę już iść do Internetu, ponieważ jest to zła brama.
Cédric Boivin
2

Twoja sytuacja nie jest do końca jasna, ale jeśli mam rację:
1) Dlaczego po prostu nie ustawisz ostatniego „domyślnego” adresu IP na ostatni?

2) Lub może możesz spróbować (zakładając, że adres bramy to 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

Aby uzyskać więcej informacji na temat składni polecenia „route”, zobacz tutaj: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/route.mspx?mfr=true

Alexey Shatygin
źródło
Nie działa, polecenie nie jest dobre. Błąd, nie można znaleźć określonego pliku
Cédric Boivin
spróbuj bez „if”: route -p dodaj 192.168.99.1 maskę 255.255.255.255 192.168.99.100, ale powinno działać, czy mógłbyś podać błąd?
Alexey Shatygin
Tym razem nie ma komunikatu o błędzie, ale to nic nie zmienia
Cédric Boivin
To powinno zmienić twoją tablicę routingu. Czy możesz ponownie wykonać polecenie „wydruk trasy”, to polecenie i „wydruk trasy” i umieścić tutaj wynik?
Alexey Shatygin
I przed wykonaniem polecenia, które opublikowałem, wykonaj „route delete 0.0.0.0”
Alexey Shatygin
1

Czy nie możesz użyć wskaźników na adresach IP? We właściwościach TCP / IP odznacz Automatyczna metryka i przypisz statyczną wartość o wartości mniejszej niż 261 (jak pokazano na zrzucie ekranu) do adresu, który chcesz ustawić jako domyślny.

Jeff Miles
źródło
Spróbuję tego, to dobry pomysł.
Cédric Boivin
Nie działaj, zobacz moją modyfikację na moim poście.
Cédric Boivin
czy istnieje sposób na zmianę adresu interfejsu?
Cédric Boivin
1

Polecenie w postaci:
> dodaj trasę 0.0.0.0 maska ​​0.0.0.0 192.168.99.1 metryka xxx, jeśli yyy
zmieni adres widziany, gdy maszyna przejdzie na dowolny adres inny niż 192.168.99.0 / 24 i inny niż 10.10.10.0 / 24 . Oznacza to, że używana jest brama domyślna. Wartość (xxx) powinna być wyższa niż cokolwiek innego, aby zapewnić stosowanie reguły. Interfejs (yyy) musi być interfejsem do użycia. Ale nie sądzę, aby istniał sposób kontrolowania, który adres IP tego interfejsu ma być używany, jeśli istnieje wiele adresów IP.
> route add 192.168.99.0 maska ​​255.255.255.0 metryka xxx, jeśli yyy
jest podobny, ale dotyczy dowolnego adresu 192.168.99.0/24, do którego kieruje się system. Faktem jest, że przypisanie wielu adresów IP do jednego interfejsu może powodować tego rodzaju problemy.

Beau Geste
źródło
1

Udało mi się zduplikować problem: wygląda na to, że Windows używa najniższego przypisanego adresu IP w danym interfejsie sieciowym jako „wychodzącego”, niezależnie od faktycznej kolejności, w jakiej zostały przypisane.

Nie mogłem znaleźć żadnej dokumentacji dotyczącej tego zachowania, ale jestem pewien, że jest to zgodne z projektem.


Edytować

Myślę, że tak naprawdę nie można tego zrobić na poziomie systemu operacyjnego, ale można to zrobić za pomocą kodu w aplikacji: gniazdo można jawnie powiązać z wybranym adresem IP / parą przed podłączeniem go do zdalnego punktu końcowego. Ale będziesz musiał używać bibliotek niższego poziomu niż standardowych usług internetowych. IE będziesz musiał ręcznie otworzyć gniazdo, podłączyć je i użyć do odczytu / zapisu danych.

Przykład .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

Spowoduje to otwarcie połączenia z 1.2.3.4:80 pochodzącego z 192.168.99.100:4242, więc zdalny host zobaczy, że pochodzi z dokładnie tego adresu IP.

Wypróbowany i przetestowany przez połączenie z IIS, rejestruje żądanie jako pochodzące z określonego adresu IP.

Massimo
źródło
Czytałem, że może to być binarne porównanie z adresem IP?
Cédric Boivin
1
Tak, porównanie binarne jest bardzo prawdopodobne w sposób wybrany jako „najniższy”; Jednak nie próbowałem z adresami IP należącymi do różnych podsieci.
Massimo,
Moim największym problemem w tym momencie jest to, że mam ponad 300 stron internetowych na wielu adresach IP, a kiedy mój serwer wchodzi do Internetu, aby połączyć się z innym serwerem (usługa sieciowa), nie mogę być pewien, który publiczny adres IP będzie miał mój serwer.
Cédric Boivin
Dzięki za tę odpowiedź, ale w moim scenariuszu nie jest możliwe zastosowanie tych rozwiązań. Rozwiązania muszą pochodzić z systemu operacyjnego, a może zapory. To dobry sposób na rozwiązanie problemu według aplikacji, ale przechodzimy do wielu aplikacji, aby rozwiązać problemy na każdej stronie internetowej.
Cédric Boivin
Ale nawet gdybyś był w stanie zrobić to, co chcesz, nie można zmusić różnych stron internetowych do używania różnych adresów IP; W ten sposób można :-)
Massimo,
1

Wybór adresu źródłowego dla połączenia wychodzącego jest obsługiwany inaczej przez stos TCP / IP od czasu przeglądu systemu Vista. W XP / 2003 i wcześniejszych adres źródłowy został określony przez tablicę tras, gdy nie został wyraźnie zadeklarowany przez aplikację wykonującą połączenie wychodzące. Od wersji Vista / 2008 adres źródłowy może być określany przez powinowactwo prefiksu do miejsca docelowego lub adresu bramy następnego przeskoku, jeśli miejsce docelowe nie jest lokalne. Poniższy post na blogu Technet bardzo dobrze wyjaśnia zmianę zachowania.

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

Brian Mellinger
źródło
1

Mam system Windows 2008 R2 z dodatkiem SP1 x64 Enterprise, który jest używany jako serwery sieciowe z jedną kartą sieciową.

Natrafiłem na ten sam problem opisany powyżej. Chcę, aby połączenia wychodzące były obsługiwane przez domyślny adres IP (ten podpisany na serwerze), ale nadal losowo wybiera, który adres IP z moich 10 adresów IP dla moich 10 stron internetowych na tym serwerze.

Wszystkie są wyświetlane jako preferowane adresy IP, jeśli uruchomisz następujące polecenie.

Netsh int ipv4 show ipaddresses level=verbose

Próbowałem pobrać poprawkę, ale z jakiegoś powodu (i podwójnie, potrójnie zaznaczono) napis „nie można uruchomić w tej wersji systemu operacyjnego). Jeśli chcecie spróbować tutaj, to jest .

Jeśli masz uruchomiony serwer MS DNS, zauważysz, że nazwa SAMEGO serwera zostanie zarejestrowana 11 razy (w moim przypadku) 1 adres IP dla serwera i 10 adresów IP dla każdej strony internetowej.

Uważam, że może to być obejście problemu (w tej chwili, chyba że ktoś inny ma lepsze rozwiązanie)

Aby przejść do serwera Windows we właściwościach TCP, gdzie podałeś adresy IP serwera i stron internetowych, zobaczysz tam kartę DNS. Teraz odznacz rejestrację adresów połączeń i zrestartuj serwer (i pozostaw niezaznaczone).

Jeśli zaznaczysz na serwerze DNS, wszystkie wpisy DNS z adresami IP znikną.

Teraz wpisz RĘCZNIE w DNS nazwę serwera i preferowany adres IP . I to powinno rozwiązać problem.

Jeśli któryś z was ma jakieś lepsze rozwiązanie, prosimy o podzielenie się z nami.

Gripe: Nie jestem pewien, dlaczego stwardnienie rozsiane nie naprawiło tego problemu. Powinny utworzyć opcję (jak pole wyboru) dla serwerów, które przenoszą wiele adresów IP w tej samej podsieci, abyś mógł wybrać, który adres IP powinien być preferowany.

Neo
źródło
0

„Domyślny adres” to adres umieszczony w pierwszym polu wejściowym we właściwościach karty interfejsu, ponieważ domyślnie odpowiada tym adresem, wszystkie pozostałe są uważane za drugorzędne.

(Serwer ISA jest dobrym przykładem tego zachowania, ponieważ nie można mu powiedzieć, że podał adres IP, z którym się skontaktował ...)

Alexandre Nizoux
źródło
Tak powinno być, ale nie działa. W moim przypadku ip 99.49 jest w konfiguracji zaawansowanej, a 99.100 to ten, który określa we właściwości ipv4 ....
Cédric Boivin
To jest naprawdę dziwne, ponieważ nasza infrastruktura tutaj często wykorzystuje to do filtrów serwerów WWW i innych rzeczy. Czy próbowałeś usunąć wszystkie adresy IP z właściwości karty oprócz tego, który chcesz być domyślny, zastosować i odłożyć je później?
Alexandre Nizoux,
Tak, próbuję, a ten sam problem występuje, gdy wchodzę na 99,49
Cédric Boivin
jest 99,49 najniższy z twoich adresów IP?
Alexandre Nizoux,
Tak, możesz zobaczyć moją ipconfig na górze
Cédric Boivin
0

Znalazłem rozwiązanie:

  • w swojej podstawowej nici usuń adres IP, który chcesz domyślnie, usuń również domyślny gw, podaj mu wysoką metrykę (przykład: 50)
  • dodaj pomocniczą nic, nadaj jej adres IP, który chcesz ustawić jako „domyślny”, ustaw domyślny GW tutaj, a na karcie zaawansowanej ustaw najniższy wskaźnik (przykład: 1)

Działa to w moim 2008R2 / IIS7 z 20 adresami IP.

BR, Matija

użytkownik39080
źródło
0

Rozwiązałem go, zmieniając maskę sieci na 255.255.255.255na wszystkie dodatkowe adresy i pozostawiając tylko domyślny adres bez zmian.

Mam nadzieję, że to dla ciebie rozwiąże!

Aldo
źródło