Вкажіть кілька IP-адрес на одне ім’я хоста


25

У системі Windows є цей файл за адресою C:\WINDOWS\system32\drivers\etc\hosts. Цей файл дозволяє нам за замовчуванням вказати IP-адресу для імені хоста.

Тепер питання полягає в тому, чи можу я встановити кілька IP-адрес для імені хоста. Наприклад, чи можу я зробити щось подібне:

192.168.244.128   gateway.net
192.168.226.129   gateway.net

І очікуєте, що браузер може вирішити обох, побачити, який з них буде працювати, і таким чином вказати на цей?

Якщо ні, чи є інший спосіб отримати поведінку, яку я хочу?

Примітка. Я розгортаю цей додаток у власній локальній мережі, тому немає необхідності в Інтернеті.

Відповіді:


25

Зазвичай для цього ви використовуєте не хости, а ваш DNS. Більшість DNS надасть те, що називається "Round Robin", якщо призначити кілька записів A одному імені в зоні.

Що б тоді зробити, це перший запит, який надходить, отримав би 192.168.244.128, наступний отримав 192.168.226.129, і так далі. Однак, за задумом, ваша локальна машина буде кешувати свою DNS-роздільну здатність і зазвичай використовуватиме ту саму IP-адресу знову і знову, поки не закінчиться (Time To Live, TTL).


1
EDIT: Nevermind, я виправлений !! Опубліковано внизу
MagnaVis

17

Так, ви можете це зробити, я використовував це для тестування сценаріїв DNS з круглим доступом, без того, щоб насправді вводити хостів у DNS.

Коли програма називає gethostbyname, вона повертає повний список IP-адрес (можливо, у довільному порядку - залежно від бібліотек / ОС).


2
+1 за те, що насправді відповів на питання
CLF

Ви маєте на увазі сказати, що він вибере один випадковим чином. У мене є сервер Windows
Lakshay

12

Я думаю, ти йдеш про це неправильним шляхом. Дайте мені знати, чи я роблю неправильні припущення тут.

Сценарій:

  • У вас є два сервери Windows, які працюють на одному веб-додатку, ймовірно, на IIS.
  • Ви хочете, щоб ваша програма не була відмовою, тому якщо один із серверів не працює, ваша програма все ще буде доступною.
  • Ви хочете, щоб ця помилка була прозорою для браузера, щоб користувачі могли продовжувати доступ до програми з тим же ім'ям хоста, тобто gateway.net

Те, що ви намагаєтеся зробити, називається DNS-круговиком (він же поганий баланс навантаження в Мані), але ви намагаєтеся зробити це з боку клієнта. Мабуть, це не дає бажаного ефекту (принаймні, на моєму вікні Windows XP), навіть якщо я перемикаю кеш DNS. Windows вирішить лише перший IP-файл у файлі. Тим не менш, круглозольний DNS не відрізняється від помилок, тому це не допоможе вам досягти того, що ви хочете.

Пропоноване рішення:

Балансир завантаження обладнання: деякі торгові марки - Alteon, Big-IP, Barracuda. Це в основному представляє єдиний IP-адресу для ваших користувачів, щоб підключитися до нього та пересилає запити на веб-сервери. Якщо один із серверів стане недоступним, він більше не перенаправлятиме до нього трафік. Це дорогий варіант.

Послуги з балансування навантаження на мережу: це технологія Microsoft, доступна на сервері Windows, яка дасть вам єдиний кластерний IP. Він досягає того ж результату, що і апаратний балансир навантаження, але по-іншому. Все, що вам потрібно зробити - це налаштувати його .


1
ZEN-LB - це дійсно простий і простий балансир навантаження. Ми мали багато успіху з цим і любимо його, тому що його відкритий код (безкоштовно.)
Деррік

2

Від http://www.unc.edu/atn/lsf/docs/7.0.5/lsf_config_ref/index.htm?hosts.5.html~main

Приклад IPv4

192.168.1.1 хостA хостB 192.168.2.2 хостA хостC хост-с

У цьому прикладі hostA має 2 IP-адреси та 3 псевдоніми. Псевдонім hostB вказує першу адресу, а псевдоніми hostC і host-C задають другу адресу. LSF використовує офіційне ім'я хоста, hostA, щоб визначити, що обидва IP-адреси належать одному хосту.


1
"Формат LSF_CONFDIR / hosts аналогічний формату файлу / etc / hosts на машинах UNIX." Тобто джерело не про регулярні файли хостів.
gertvdijk

1

Моя пропозиція - використовувати внутрішній DNS-сервер із кругоспроможним DNS та TTL = 0. Якщо ви оновите запис DNS (також із системою автоматичної перевірки ip), коли IP / сервер не працює, у вас може бути система з високою доступністю.


Це не рішення для високої доступності. DNS не призначений для цього і повинен використовуватися лише в поєднанні з іншими методами відмови. Багато розв'язувачів ігнорують кеш TTL, що робить цей метод ненадійним.
Марк Хендерсон

1

Я зробив це в домашній мережі, де я призначаю статичні IP-адреси як дротовим, так і бездротовим мережевим інтерфейсам ноутбука, а від хостів іншого пристрою файл вказує єдине ім’я хоста на обидва ці IP-адреси. Здається, це працює добре.


1

Від http://www.unc.edu/atn/lsf/docs/7.0.5/lsf_config_ref/index.htm?hosts.5.html~main

Приклад IPv4

192.168.1.1 хостA хостB 192.168.2.2 хостA хостC хост-с

У цьому прикладі hostA має 2 IP-адреси та 3 псевдоніми. Псевдонім hostB вказує першу адресу, а псевдоніми hostC і host-C задають другу адресу. LSF використовує офіційне ім'я хоста, hostA, щоб визначити, що обидва IP-адреси належать одному хосту.

На основі цього прикладу я зробив наступний 10.18.yx 192.168.zx хостA

Якщо hostA - ім'я хоста сервера, я маю намір отримати доступ як із внутрішньої мережі (192.168.yx), так і VPN (10.8.zx).

ping hostA
sending 'ping' on 192.168.y.x [10.8.z.x]
Answer from 10.8.z.x : bytes=32 time=98 ms TTL=64
Answer from 10.8.z.x : bytes=32 time=78 ms TTL=64
Answer from 10.8.z.x : bytes=32 time=111 ms TTL=64
Answer from 10.8.z.x : bytes=32 time=136 ms TTL=64

Тож це працює добре, і я можу змусити самбу працювати через VNP за допомогою імені хоста, тому мені добре, що в обох випадках мої підключені диски у Windows (підключені LAN або VPN).

З повагою.


0

@ Пламен Димитров Вам знадобиться пристрій для обробки такого балансу, можливо, комутатор, який може обробляти BGP перед вашою FW- або використовувати FW, якщо це можливо. Якщо ваш Ciscos поводиться з BGP, розгляньте це. Таким чином, ви можете перейти до Cisco / або комутатора обох ваших IP-провайдерів, і цільові сервери мали б дійсні IP-адреси 24-розрядних загальнодоступних IP-адрес (РІЗНОВО ДЛЯ 2-х IP-адрес ISP). У цей момент (ви використовуєте 3 різних загальнодоступних IP-блоки, один для ваших серверів ОБОВ'ЯЗКОВО БУТИ 24-бітним), вам потрібно буде знати про це рішення кожного свого провайдера, і вони повинні бути готові підтримати BGP-рішення між ними, що більшість зробить. Тепер, коли ваш FQDN вирішиться, він вирішиться до вашого 24-бітового блоку IP-адрес, навіть якщо 1 рядок провайдера знизиться. Мета - ваші 24-бітні адреси завжди будуть доступні завдяки тому, що ваші Інтернет-провайдери погоджуються прокладати цю 24-бітну адресу через їхні лінії. Це працює і для VPN, оскільки все, що ви використовуєте для VPN, - це 24-бітові адреси, а не один з IP-адрес провайдера, який ви підключили до свого cisco / або комутатора. У цей момент ви повинні насторожено ставитись до BGP FLAPPING, якщо, якщо ваші лінії сильно піднімаються вгору і вниз, через лінію, що отримує DOS, DNS-адреси в Інтернеті настільки зміняться, що сервери DNS автоматично автоматично усунуть IP-адреси ТОГО НАПРАВЛІТЬ ВАШИЙ 24-бітний БЛОК ІР Це напад DOS на рішення BGP. У цей момент ви повинні бути обережними щодо BGP FLAPPING, де, якщо ваші лінії сильно піднімаються вгору і вниз, через лінійку, що отримує DOS, DNS-адреси в Інтернеті настільки зміняться, що сервери DNS автоматично автоматично усунуть IP-адреси ТОГО НАПРАВЛІТЬ ВАШИЙ 24-бітний БЛОК IP-адрес. Це напад DOS на рішення BGP. У цей момент ви повинні бути обережними щодо BGP FLAPPING, де, якщо ваші лінії сильно піднімаються вгору і вниз, через лінійку, що отримує DOS, DNS-адреси в Інтернеті настільки зміняться, що сервери DNS автоматично автоматично усунуть IP-адреси ТОГО НАПРАВЛІТЬ ВАШИЙ 24-бітний БЛОК IP-адрес. Це напад DOS на рішення BGP.


0

Тут є невелике роз’яснення, принаймні у світі Windows: У МОЖНОМУ файлі хостів ви можете мати два IP-адреси для одного імені. При запиті всі адреси повертаються. Додаток (тобто браузер) намагатиметься підключитися до кожного по черзі, поки не буде встановлено з'єднання. IOW, він спробує всі адреси перед тимчасовим вимиканням. (Це поширене непорозуміння, оскільки багато людей вважають, що це спробує лише "перша" адреса.)

Ви можете підтвердити це за допомогою наступного експерименту:

Додайте дві або більше адреси для хоста у файл хостів, один справжній, а інші підроблені. (Зробити підроблені адреси за меншим алфавітом.) Відкрийте браузер і спробуйте підключитися до імені хоста. Запустити netstat -но одночасно. Ви повинні побачити спроби підключення до підробленої адреси. (застряг у SYN_SENT) Браузер врешті-решт дістанеться до хорошої адреси та підключиться. Існує затримка в підключенні, але це БУДЕ працювати.


Не кажу, що ви помиляєтесь, але я просто спробував це на своєму Win 10 Pro за допомогою Chrome, і це не вийшло. Я ipconfig /flushdnsперетворив файл хостів (і зберег його), а потім побіг, щоб переконатися, що попередні рішення були забуті. Спробував відкрити веб-сайт (локальний для моєї машини) у режимі анонімного перегляду в Chrome, щоб виключити результати кешу. Це просто не вдалося (і я зачекав кілька хвилин, щоб побачити, чи це врешті-решт спрацює). Натисніть на оновлення, щоб бути впевненим. Потім я прокоментував хибну IP-адресу з мого файлу хостів. Не роблячи нічого іншого, я оновив сторінку і вона спрацювала. Те ж саме з Firefox.
Ендрю Штайц

Таким чином, він МОЖЕ працювати на основі програми, але він точно НЕ працює в двох сучасних браузерах.
Ендрю Штайц

-1

Ви не можете цього зробити з файлом хостів.

Ви також не можете цього зробити з DNS: ви можете подавати кілька IP-адрес для одного імені, але браузер вибере лише один із цих декількох IP-адрес, спробуйте його, і якщо цей хост наразі не працює, браузер відобразить помилку підключення .

Одне можливе рішення - налаштувати проксі-сервер і налаштувати ці два IP-адреси як батьків для домену, який вони обслуговують. Принаймні, у випадку Squid, проксі випробує один сервер і, якщо він не вдасться, спробувати другий сервер. Потім налаштуйте браузер для використання цього проксі-сервера.


Не вірно про круглого робота: www-archive.mozilla.org/docs/netlib/dns.html Зауважте, що подібні до Google google повертають кілька записів DNS. Незважаючи на перепорядкування RFC3484, це, очевидно, допомагає повернути кілька IP-адрес як стратегію відмови.
BrianEss

так, ви можете це зробити з файлом hosts
warren
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.