Мосты, Firewall-ы, и DSL-соединения
До недавних пор наша сеть была подключена к Интернету, при помощи модема и
протокола PPP. Я установил на шлюз сети firewall, используя IPChains
(cмотрите
"Мини-HOWTO: IPChains"), и все работало прекрасно. Недавно мы
перешли на использование DSL-соединения. Я думал, что все будет очень
просто - переключить firewall на DSL-соединение, и все будет работать, как
раньше, однако я ошибался. На полную настройку и запуск мне понадобилось
три дня. Я прочел огромный объем сопутствующей информации в сети, которая
порой противоречила одна другой. Этот документ был создан потому, что, как я
предполагаю, в будущем DSL станет значительно более распространен, и
мои советы могут понадобиться многим. Я надеюсь, при помощи этого Мини-HOWTO,
вы сможете сэкономить значительное время.
Я предполагаю, что эти советы можно применить и к нуль-модемной конфигурации, но это лишь предположение - я ничего не знаю о нуль-модемных соединениях.
Суть проблемы
Передо мной встала следующая проблема: настроить систему так, чтобы код firewall-а в ядре (управляемый ipchains) мог быть использован для фильтрации пакетов, идущих между глобальной и локальной сетью. Мне также требовалось, чтобы локальные машины были "видны" в глобальной сети (не исключая работы firewall). Вроде, казалось, IP-маскарадинг (смотрите
HOWTO: IP-маскарадинг) - наиболее простое решение в моей ситуации. Но все оказалось не так просто.
Решение
Чтобы достигнуть нашей цели - изолировать локальную сеть от глобальной (к
которой мы подключены при помощи DSL), используя нашу Linux-машину - необходимы
две сетевых карты. Одна карта подключена к локальной сети,
вторая - к глобальной. Единственная машина, которая может свободно общаться
с окружающим миром - это наш Linux. Все остальные машины должны общаться с
внешним миром через firewall, установленный на Linux.
Настройка системы состоит из двух частей, выполняющих разные задачи:
Маршрутизация пакетов между глобальной и локальной сетями (мост)
Фильтрация ненужных, неразрешенных и опасных пакетов (firewall)
В "Мини-Howto:
Мосты" приведены подробные инструкции, решающие первую проблему -
маршрутизацию пакетов между двумя сторонами сети (локальной и глобальной).
Это проделывается следующим способом: обе карты переводятся в режим
"promisc", в котором они обрабатывают все пакеты, проходящие по сети, и
передают пакеты на другую сторону моста, если там находится их получатель.
Эта процедура прозрачна для сети - другие компьютеры даже не видят мост,
потому что он даже не имеет IP-адреса. Но это - неполное решение проблемы.
Мне нужно, чтобы firewall имел IP-адрес (для административных функций, если
не более), и, что гораздо важнее, код моста в ядре перехватывает и передает
пакеты до того, как они попадут в firewall, и поэтому в этой ситуации
firewall не работает.
Выяснилось, что возможно одновременно назначить IP-адреса сетевым картам и использовать их в качестве моста. Несмотря на то, что в "Мини-Howto: Мосты"
это не делается (ну, на самом деле, там используются внутренние адреса) - все прекрасно работает. Это полностью разрешает первую проблему. Чтобы решить вторую, мы установим патч ядра (он находится по адресу http://ac2i.tzo.com/bridge_filter/), который позволяет применять правила firewall к пакетам, проходящим через сеть, добавляя в таблицу firewall новое правило "bridgein".
Общий обзор настроек
Этот мини-HOWTO предназначен для ситуаций, когда ваш Linux является
шлюзом/firewall. В системе установлены две сетевых карты. Одна из карт
подключена к внешнему миру (в нашем случае это DSL-модем), и ничто больше к
нему не подключено. Вторая карта находится в нашей локальной сети.
Заметьте, что я описываю все с моих позиций: машина i386 (ABIT BP6 MOBO, с 2-мя Celeron-ами), RedHat 6.0 с ядром версии 2.2.13, и DSL-модем, подключенный к маршрутизатору, и две сетевых карты Netgear FA310TX. В вашем случае все может отличаться.
Также учтите, что некоторые шаги, описанные здесь, оставляют вашу сеть незащищенной от потенциальных атак извне (до полного запуска firewall). Если для вас это неприемлемо - вам придется применить дополнительные меры безопасности.
Литература
Я прочитал достаточно большой объем информации до того, как пришел к полностью работающему варианту. Часть информации оказалась полезной, но не совсем корректной.
"Мини-Howto: Мосты"
был первым инструментом, примененным в настройках. К сожалению, его использование не включает в себя firewall.
"Мини-Howto: Мост+Firewall" вначале казался именно тем, что мне
нужно. Однако теперь я считаю, что этот документ не совсем корректен. При
помощи этого документа у меня вроде бы все заработало, но, в конце концов, я
понял, что совсем не нужно разделять свою подсеть на две половины, как
советует этот мини-HOWTO, и потом отказался от этого метода. Если вы
все-таки будете читать этот документ, то отнеситесь к нему с изрядной долей
критики.
Патч "Фильтр
моста" - ключ к запуску всего. Как ни странно, информация на сайте
предлагает вам использовать советы "Мини-Howto: Мост+Firewall" . Чтобы все
запустить, вам эти советы не понадобятся. Понадобится лишь этот патч.
"Howto:
IPCHAINS" бесценен при настройке собственно firewall. Я не пытаюсь
в этом документе детально описывать настройку firewall - лишь упомяну о
вещах, которые отличаются, в связи с использованием моста, описанного здесь.