Версия 4.37 - 15.11.18


Сетевые технологии
   Полезные советы  |   |  Наверх  

Полезные советы:

  1. Подключение локальной сети к нескольким провайдерам - альтернативный метод
2. "Условный" PING
3. Шлюз для Гигабитного внешнего канала
Наверх


1. Подключение локальной сети к нескольким провайдерам - альтернативный метод

  Как известно, существуют стандартные решения для подключения двух провайдеров к локальной сети с использованием, например, специальных маршрутизаторов с двумя портами WAN. При отказе канала, который обеспечивает в данный момент доступ в Интернет, вся локальная сеть за маршрутизатором автоматически переключается на канал альтернативного провайдера и весь трафик направляется через него. "Почему и когда" надо переключаться, обычно решает сам маршрутизатор, но, конечно, с пользовательскими настройками. Чаще всего, для определения работоспособности канала используется периодический ping какого-нибудь высоконадёжного сетевого ресурса, например, Google 8.8.8.8. При продолжительном отсутствии ответов считается, что проверяемый канал стал неработоспособным и надо переключаться на альтернативный. По такому же принципу обычно работают и шлюзы в Интернет, реализованные на компьютерах, у которых два сетевых интерфейса подключены к разным провайдерам, а третий к локальной сети. И в том, и в другом случаях, после смены канала сетевые настройки других компьютеров в локальной сети остаются неизменными так как IP адреса шлюза, кэширующего DNS и сервера DHCP в локальной сети не изменяются.

Однако, у такой схемы имеется серьёзный недостаток: несмотря на то, что оба канала обычно большую часть времени исправны, весь трафик идёт только через один из них, а альтернативный канал в это время не используется (простаивает). Это связано с тем, что в данной схеме используется только один фиксированный адрес шлюза в Интернет для всей локальной сети.

Если отказаться от идеи единственного фиксированного шлюза и разрешить выбор адреса шлюза на локальных компьютерах, мы получим более гибкую схему, в которой пользователи отдельных компьютеров смогут сами решать через какой канал им удобнее в данный момент выходить в Интернет и "на лету" переключаться с канала одного провайдера на канал другого. Это даст возможность более равномерно распределять нагрузку на каналы и использовать обоих провайдеров одновременно.

Как это сделать?

Для этого нужны 2 независимых устройства, выполняющие роли шлюзов, например:

- 2 обычных роутера с одиночными портами WAN
  или
- 1 роутер и 1 шлюз на виртуальной или физической машине
  или
- 2 шлюза на виртуальных или физических машинах (это решение является, конечно, самым бюджетным)

Каждый из шлюзов будет осуществлять сетевую трансляцию IP адресов (NAT), выданных каждым провайдером, в одну и ту же локальную сеть, например, 192.168.0.0/24 (сеть класса "С", маска 255.255.255.0), но, при этом, сами шлюзы в локальной сети будут иметь разные адреса. Например, шлюз 1-го провайдера - 192.168.0.1, а шлюз 2-го - 192.168.0.100.

Таким образом, если в сетевых настройках любого локального компьютера мы укажем шлюз (Gateway) 192.168.0.1, то этот компьютер будет выходить в Интернет через канал 1-го провайдера, а если 192.168.0.100, то через канал 2-го. Конечно, при этом мы предполагаем, что кабели, соединяющие все сетевые интерферсы в локальной сети, включены в общий коммутатор (switch), которым, в частности, может служить блок интерфейсов LAN одного из роутеров.

По сути это всё, что требуется сделать. За исключением того, что надо обеспечить быстрый и удобный способ установки и переключения IP адресов шлюзов на локальных компьютерах, так как менять их при помощи графического интерфейса Windows слишком долго. Для этого можно воспользоваться простым скриптом WinSetGate.cmd:

@echo off
echo Gateway is %1 %2
route -p change 0.0.0.0 mask 0.0.0.0 %1
pause

у которого параметром %1 задается IP адрес шлюза, а необязательным параметром %2 - имя провайдера.

Для этого создадим папку \Scripts в любом удобном нам месте (например, в корне диска С:) и разместим в ней вышеприведенный скрипт WinSetGate.cmd, сделав к нему 2 ярлыка WinSetGate1 и WinSetGate100.
Открыв свойства обоих ярлыков, добавим в строки вызова скриптов адреса шлюзов в качестве параметров:

192.168.0.1 для ярлыка WinSetGate1



и 192.168.0.100 для ярлыка WinSetGate100 соответственно


(для экономии места здесь показана только одна строка из окна Свойств второго ярлыка)

Теперь можно выбрать для каждого из ярлыков запоминающийся значок и скопировать оба ярлыка в какое-нибудь удобное место, например, на панель задач, на рабочий стол, в кнопку Пуск или куда-либо еще. После этого станет возможным менять шлюз одним щелчком мыши. Рекомендуется также в настройках соответствующих консольных окон задать в явном виде цвет, размеры и положение окон на рабочем столе. Тогда их можно будет оставлять незакрытыми на экране в качестве удобных индикаторов выбранного шлюза. Выглядеть это может, например, так:




Если же это окно закрыто, то для того, чтобы посмотреть через какой шлюз сейчас работает компьютер, можно использовать другой очень простой скрипт WinIPconfig.cmd:

@ipconfig | find "Default Gateway"
@pause

Этот скрипт покажет в консольном окне актуальный IP адрес шлюза. Конечно, ему тоже рекомендуется сделать ярлык (но уже без параметров) и точно также скопировать этот ярлык в какое-нибудь удобное место. Консольное окно этого скрипта на экране это может выглядеть, например, так:


(вторая строчка Default Gateway с пустым адресом относится к протоколу IPv6, который в данной системе был отключен)

И, наконец, последний Универсальный скрипт, который можно использовать вместо всех 3-х вышеприведённых, выглядит так:

@Echo off
rem ****************************************************
rem * Workstation Gateway Switcher v1.01 from 05.12.13 *
rem * Author: Andy Rodionov, mailto:andy@rodionov.info *
rem ****************************************************
Set GateWay=""
rem --- Uncomment one of 2 next lines for destinated start: ---
rem Goto :YAOL
rem Goto :NLINE
rem
rem Show old Gateway name for 1-st start of the script:
:ShowOld
@CLS
ipconfig | find "192.168.0.100" > nul
if ERRORLEVEL 1 (echo -YAOL-) ELSE (echo -NLINE-)
:ShowGW
ipconfig | find "Default Gateway"
Set GateWay=""
Set /p GateWay="> Enter Y (YAOL), N (nLine) or Q for quit: "
rem --- Check for Quit: ---
if %GateWay% == q Goto :quit
if %GateWay% == Q Goto :quit
rem --- Switch for YAOL: ---
If %GateWay% == y Goto :YAOL
If %GateWay% == Y Goto :YAOL
If %GateWay% == 1 (
:YAOL
  @CLS
  echo -YAOL-
  route -p change 0.0.0.0 mask 0.0.0.0 192.168.0.1
  goto :ShowGW
)
rem --- Switch for NLINE: ---
if %GateWay% == n Goto :NLINE
if %GateWay% == N Goto :NLINE
if %GateWay% == 100 (
:NLINE
  @CLS
  echo -NLINE-
  route -p change 0.0.0.0 mask 0.0.0.0 192.168.0.100
  goto :ShowGW
)
rem --- loop back for unsupported characters: ---
goto :ShowOld
:quit
rem pause


Этот скрипт автор использует для переключения своих рабочих станций между двумя провайдерами YAOL и nLine, имена и адреса которых при необходимости могут быть легко изменены. Консольное окно этого скрипта запускается автоматически при старте системы и постоянно присутствует на заднем плане, ожидая ввода с клавиатуры:



В случае необходимости, окно переносится на передний план одним щелчком мыши, оказывается в фокусе и в него вводятся буквы "n" или "y", которые приводят к переключению всего трафика на канал соответствующего провайдера.

Замечания

1. Данная технология может быть легко масштабирована на большее число провайдеров, подключаемых к одной локальной сети. Это потребует использования дополнительных маршрутизаторов, которым надо будет дать другие IP адреса в локальной сети, а также соответствующих им простых скриптов выбора каналов и/или дописывания новых блоков выбора провайдеров в Универсальном скрипте.

2. При наличии в локальной сети более, чем одного активного шлюза, становится возможным разделять трафик разных приложений, запускаемых даже на одном компьютере, если эти приложения допускают в явном виде задавать адрес шлюза, с которым они работают. Таким образом можно объединять трафик из разных шлюзов, что эквивалентно увеличению общей пропускной способности канала.

3. Следует обратить внимание на то, что большинство маршрутизаторов имеют свой собственный включенный по умолчанию DHCP сервер для автоматической раздачи клиентам IP адресов и других реквизитов соединений. Чтобы избежать конфликтов между этими DHCP серверами, рекомендуется оставлять в работающем состоянии только один из них, отключая остальные в настройках маршрутизаторов, или в явном виде задавать для разных DHCP не пересекающиеся диапазоны адресов.

Полезные советы:

  1. Подключение локальной сети к нескольким провайдерам - альтернативный метод
2. "Условный" PING
3. Шлюз для Гигабитного внешнего канала
Наверх


2. "Условный" PING

  При написании скриптов, анализирующих работоспособность сетей и доступность различных сетевых ресурсов, часто бывает необходимо оценить результат выполнения команды ping, т.е. наличие или отсутствие ответа от пингуемого ресурса. Но сама команда ping в Windows, к сожалению, не выдает кодов возврата. Однако, эту проблему можно решить: ниже приведен пример простого скрипта, анализирующего строки, выдаваемые командой ping, и формирующего код возврата. Этот скрипт проверяет наличие ключевого слова "TTL=", появляющегося в выдаче команды ping, только при успешном получении ответа от проверяемого сетевого ресурса. Таким образом, в ниже приведенном скрипте значение переменной %ERRORLEVEL% формируется не при помощи команды ping, а дополнительной командой find:

@Echo off
ping %1 -n 2 | find "TTL=" > nul
if %ERRORLEVEL% NEQ 0 (
  echo %1 is not responding
) else (
  echo %1 is Ok
)
rem pause

Следует отметить, что если использовать приведенный выше метод в скриптах для переключения каналов и провайдеров, то можно организовать автоматическое переключение каналов при обнаружениях неисправностей.


Полезные советы:

  1. Подключение локальной сети к нескольким провайдерам - альтернативный метод
2. "Условный" PING
3. Шлюз для Гигабитного внешнего канала
Наверх


3. Шлюз для Гигабитного внешнего канала

  После подключения к высокоскоростным линиям провайдеров с пропускной способностью до 1 Гбит/сек, возник вопрос оценки производительности и пропускной способности шлюзов различых видов, выполняющих функции файрволлов и NAT.

По результататам испытаний и замера скоростей было выяснено следующее:

1. Относительно недорогой роутер, использовавшийся ранее автором на канале 100 Мб/сек - TP-Link TL-WR2543ND, имеющий 4 порта по 1 Гбит для локальной сети (LAN) и 1 порт для выхода в Интернет (WAN), обеспечивал сквозную пропускную способность не более 130 Мбит/сек.

2. Виртуальные шлюзы как на основе Linux, так и на основе весьма компактной ОС Windows 2003, работающие на хосте i7 3.4 ГГц с сетевыми интерфейсами 1-2 Гбит, обеспечивали сквозную пропускную способность до 1 Гбит/сек, в том числе, работая параллельно с несколькими каналами.

Измерения производились с физических и виртуальных машин в локальной сети 1 Гб при помощи автономной програмы Speedtest OOKLA (а также в браузерах) с тестированием скорости доступа к наиболее высокоскоростным провайдерам, которыми в данном случае оказались Ростелеком и АКАДО.

Надо отметить, что виртуальные машины обеих типов занимают очень небольшой объём оперативной памяти (около 300 МБ) и практически не загружают CPU хоста, что позволяет одновременно работать на этом же хосте нескольким WWW и FTP сайтам, а также некоторым другим сервисам. При этом, реальный объём виртуального диска каждого такого шлюза не превышает 10-13 ГБ вместе с установленными на нём сервисными и диагностическими программами.

В настоящее время на вышеупомянутом хосте i7 работают 5 виртуальных шлюзов (по числу внешних IP адресов) и несколько виртуальных серверов. Кроме того, имеется также дополнительный резервный шлюз на TP-Link, использующийся для обеспечения связи во время плановых перезагрузок хоста с виртуальными шлюзами и как точка доступа WiFi. На втором хосте с такой же конфигурацией и производительностью находятся копии виртуальных машин шлюзов, которые могут быть оперативно запущены в случае неисправности основного хоста.






Рейтинг@Mail.ru

Версия 4.37 - 15.11.18
(сайт адаптирован для прослушивания и просмотра на смартфонах без флэш-плеера)