Как перенаправить запросы HTTP к локальному серверу Apache на потерянном интернет-соединении?

В конечном счете это был произвольный выбор, сделанный создателями Unix более чем четыре десятилетия назад теперь. Они, возможно, приняли решение сделать вещи нечувствительными к регистру как создатели MS-DOS, сделал десятилетие спустя, но это имеет его недостатки, также.

Это слишком глубоко встраивается в *ix культура для изменения теперь. Чувствительной к регистру проблемой файловой системы, поднятой eppesuig, является только часть его. системы macOS — которые Основаны на Unix — обычно, имеют нечувствительный к регистру (но сохранение случая) файловые системы, таким образом, на таких системных командах, внешних к оболочке, на самом деле рассматриваются нечувствительно к регистру. Но, builtins как cd останьтесь чувствительными к регистру.

Даже с нечувствительной к регистру файловой системой, история вещей сговаривается против Ваших пожеланий, Hussain. Если я ввожу ls на моем Mac я получаю цветной список каталогов. Если я ввожу LS вместо этого, /bin/ls все еще выполнения, но список не является цветным, потому что псевдоним, который добавляет -C флаг чувствителен к регистру.

Лучше всего просто привыкните к нему. Если Вы можете, учиться любить его.

3
10.12.2013, 10:55
2 ответа

Я не нашел надежного способа обнаружить, если Интернет-соединение снижается кроме периодической проверки с помощью ping-запросов набора внешних хостов, которые, как известно, произошли большую часть времени. (Состояние интерфейса возросло все время).

Чтобы знать, активен ли Ваш канал, отправьте эхо-запрос ICMP (также известный как "ping") к известному - надежный хост в другом конце ссылки, которую Вы пытаетесь протестировать. Обычно это будет шлюзом ISP по умолчанию, но существуют другие возможности. Если бы Вы не можете использовать шлюз ISP по умолчанию для такого тестирования, я предложил бы быть нацеленным на серверы DNS Вашего ISP; если они снижаются, вещи довольно плохи так или иначе и если Вам не нужно, чтобы это было на 100% точно, это, вероятно, достаточно хорошо. Помните, что IP является максимальными усилиями только, и ICMP не имеет характера и гарантий TCP с установлением соединения.

Не лавинно рассылайте хост с ping, если у Вас нет взаимного соглашения с администратором удаленной системы. Один раз в 30 секунд, вероятно, достаточно, возможно увеличивается, когда ссылка обнаруживается так же вниз и уменьшающийся в течение периодов низкого использования такой как в течение ночи. Интервал должен быть выбран на основе того, как быстро Вы хотите ответить на ситуацию ссылки вниз и что, вероятно, будет терпеть администратор удаленного сервера. Больше чем один ping каждые несколько секунд почти наверняка чрезмерны, и если Вам не нужен "непосредственный" ответ на ситуацию ссылки вниз, нет ничего, говоря, что Вы не можете протестировать один раз в несколько минут или еще более редко.

Какой инструмент я должен использовать для перенаправления? Iptables? Что-то еще?

Так как Вы говорите о подъеме веб-страницы, когда ссылка снижается, я подозреваю, что Вы главным образом обеспокоены просмотром веб-страниц. Когда просмотр веб-сайтов, использование IP-адресов непосредственно являются исключением.

Таким образом настройте локальное кэширование сопоставитель DNS и укажите на Ваши клиенты на него. Установите его, чтобы передать серверам DNS Вашего ISP или установить его, чтобы выйти и выбрать ответы самостоятельно на основе корневых подсказок, Вам решать

Когда ссылка перестала работать, выгрузите конфигурацию для локального сервера DNS для того, который является авторитетным для корневой зоны . и ответы любой A (и возможно AAAA) запросы к нему с IP-адресом Вашего локального веб-сервера, и дают команду перезагрузки конфигурации. Удостоверьтесь, что локальный веб-сервер не дифференцируется на основе требуемого имени хоста (поместите рассматриваемую веб-страницу на виртуальный хост по умолчанию). У Вас было бы что-то как следующее в конфигурации BIND, которая загружается, когда Вы обнаруживаете отказ канала:

zone "." { type master; file "failed-connection.root.zone"; };

и затем в failed-connection.root.zone Вы имели бы:

$ORIGIN .
$TTL 10
@ SOA <your SOA record details here>
* A 192.168.9.10
* AAAA fe80:123:45::1

Удостоверьтесь, что использовали короткий TTL (я использовал 10 секунд в вышеупомянутом примере) избегать непреднамеренного кэширования ответа "отказа". Также удостоверьтесь, что использовали IP-адреса, которые не зависят от внешней возможности соединения. (Строго говоря fe80::/16 удерживается от использования, но это достаточно хорошо в иллюстративных целях.) "Ссылка вниз обнаружила" сценарий, возможно, также должен сбросить кэш сервера DNS. Кроме того, сделайте очень уверенными, что это не протекает на Интернет. В BIND 9 станьте хорошими друзьями с функцией представлений; с другим программным обеспечением исследуйте альтернативы прежде, чем заставить что-то вроде этого жить.

Когда Вы обнаруживаете ссылку, возвращающуюся, просто откладываете исходный BIND (или другой сервер DNS) конфигурационный файл и даете другую команду перезагрузки конфигурации и возможно очистку кэша.

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

3
27.01.2020, 21:23
  • 1
    +1 AFAIK, который невозможно сказать, может ли соединение существовать без передачи, и это в значительной степени, для чего ping ICMP. Когда соединение становится невозможным из-за отказа где-нибудь в середине, нет никакой волшебной функции сетевого стека, который может предупредить Вас этого. –  goldilocks 09.12.2013, 18:16
  • 2
    @goldilocks ну, я подозреваю, что что-то как BGP могло в принципе помочь, но он все еще не будет гарантироваться, и кто-то задающий этот вопрос, вероятно, не имеет возможности смочь полагаться на BGP так или иначе. Лучший способ затем состоит в том, чтобы просто сделать что-то, что, как известно, требует ответа от другого конца ссылки. Для которого идеально подходят эхо-запросы ICMP. –  a CVn 09.12.2013, 21:24
  • 3
    BGP не является опцией, поэтому - ping. Проверка с помощью ping-запросов каждых 5 минут, которые хост, взятый случайным образом из списка приблизительно дюжины хостов, не должен считать как DoS-атака, я надеюсь. Перенаправление с BIND является абсолютно прекрасной идеей, поскольку мне уже настроили BIND как кэширующийся DNS. Бонусные очки для примеров конфигурации. –  Eiver 09.12.2013, 23:21
  • 4
    @Eiver Просто использует некоторый известный хост в сети Вашего ISP, как их сопоставители DNS или следующий шлюз транзитного участка. Выберите разумный интервал, и я сомневаюсь, что любой поднимет шум. Соответствующий интервал зависит главным образом от того, как быстро Вы хотите обнаружить сбой канала и предпринять шаги для смягчения ситуации. К тому времени, когда ссылка снижается, можно уменьшить время между попытками для восстановления вскоре после того, как ссылка возвращается, так как она действительно не окажет влияние ни на кого больше так или иначе. Самая важная вещь состоит в том, чтобы сделать абсолютно уверенным, что Вы не пропускаете поддельную корневую зону на Интернет. –  a CVn 09.12.2013, 23:47
  • 5
    у меня уже есть расщепленный горизонт DNS с 2 представлениями, потому что я хотел быть авторитетным для своего собственного домена и я хотел, чтобы он был разрешен на LAN к 192.168.0.1, а не общедоступный IP-адрес. Зона "." является в настоящее время внутренним представлением LANView {} с клиентами соответствия {192.168.0.0/24; 127.0.0.0/8;}; Зона "." в настоящее время устанавливается ввести подсказку. Если я изменяю подсказку, чтобы освоить и определить зону правильно, которая должна добиться цели. Корректный? –  Eiver 10.12.2013, 10:45

Так как Вы говорите, что у Вас есть "небольшой" сервер, я предполагаю, что объем трафика является достаточно низким, чтобы быть обработанным Прокси HTTP, таким как Сквид. Если Вы настраиваете маршрутизатор как прозрачный прокси (иначе прокси перехвата), у клиентов должен быть нормальный интернет-опыт до сбоев Интернет-соединения. Затем я ожидал бы, что клиенты получат HTTP 504 (Тайм-аут Шлюза) ответы.

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

0
27.01.2020, 21:23

Теги

Похожие вопросы