Любая сеть рано или поздно начинает граничить с другой сетью, раньше так было.
Теперь при создании корпоративной сети для любой организации маловероятно, что она не будет подключаться к Интернету.
Поэтому первый и основной сервер, который будет организован – это роутер.
Так как Linux мне не нравился, хотя я, честно говоря, начинал с него, то в качестве серверной ОС я уже давно выбрал для себя FreeBSD. Но в Интернете достаточно информации о том, как настроить маршрутизацию на freebsd. Но если вам необходимо выпустить в Интернет не только известные (доверенные) вам устройства, но и новые, которые необходимо авторизовать.
Например, это общественное место, кафе или отель.
Что у нас есть?
А в начале у нас есть роутер и сеть с проводным и беспроводным доступом, они еще умеют заплетать провода? Естественно, лучше запретить им общаться друг с другом, но как это реализовать мы сейчас рассматривать не будем, так как игрушки у каждого свои и вариантов много.Попав в сеть, пользователя не должны просто заблокировать.
В противном случае он не будет знать, что делать и будет загнан в угол, поэтому банальный отказ всем от всех для всех нам не подойдет. Поэтому нам необходимо перенаправить всех неизвестных нам лиц на один сайт, где будут доступны все инструкции и проведена авторизация.
Есть два варианта.
Сначала пропускаем весь трафик через прокси, а потом уже разбираемся, кто друг, а кто враг и что кому дать в ответ. Но в нынешней ситуации, когда объем информации, получаемой пользователем, настолько огромен, а цены на безлимитные тарифы позволяют даже юридическим лицам использовать их на хороших скоростях, я не вижу смысла накапливать информацию на своих медиа хранилище.
Поэтому я пошел по второму пути, а именно фаервол решает, кто куда идет. Вот как выглядит мое решение в ipfw. Я использую ipnat. Поэтому в ipfw будут правила разрешения трафика, идущего во внешнюю сеть, но не будет правил его отключения, как в случае с natd. Создаем таблицу пользователей, которых выпустим во внешнюю сеть:
Дальше будет правило разрешения трафика в интернет через внешний интерфейс rl1:ipfw table 1 add 192.168.0.1 ipfw table 1 add 192.168.0.2
ipfw add allow ip from table\(1\) to any out via rl1 keep-state
Теперь все известные нам машины могут пользоваться Интернетом.
Однако новые клиенты просто получают сообщение об ошибке, что сервер не найден.
Для них у нас будет свое правило: ipfw add fwd 127.0.0.1, 9832 ip from not table\(1\) to any out via rl1
Таким образом, мы перенаправили весь трафик от неизвестных нам пользователей на порт 9832. И на него установим веб-сервер с необходимой нам информацией.
Небольшое отступление: fwd заворачивает пакет на указанный адрес, но не модифицирует его.
А если включить его на веб-сервер в сети, то он его просто отвергнет. Потому что адрес назначения не его.
Отсюда вывод, что данные можно перехватывать и обрабатывать только локально.
Поскольку это не полноценный веб-сервер, я не вижу смысла устанавливать туда Apache или Ngnix. Я бы порекомендовал обратить внимание на microhttpd, minihttod или Lighthttpd.
Не забудьте добавить правило, разрешающее трафик внутри сети через интерфейс rl0: ipfw add allow ip from 192.168.0.0/24 to 192.168.0.0/24 via rl0
или лучше открывать только то, что вам нужно в работе: ipfw add allow tcp from 192.168.0.0/24 to me 9832 in via rl0 keep-state
Я выбрал самый простой и удобный сервис, в данном случае micro_httpd.
Устанавливаем из портов: cd /usr/ports/www/micro_httpd
make install clean
Так как это просто бинарник, а не демон, он не висит в памяти и ничего не занимает. Когда делается запрос на определенный порт, inetd вызывает его с параметром, обрабатывает данные и возвращает результат.
Мы настраиваем inetd, добавляя следующее в /etc/inetd.conf (одна линия): micro_http stream tcp nowait nobody /usr/local/sbin/micro_httpd micro_httpd /var/www #micro_httpd
где /var/www — путь к корневой папке веб-сервера.
Мы также добавим дополнительную информацию в /ets/услуги : micro_httpd 9832/tcp #micro_httpd
здесь 9832 — это порт, на котором висит веб-сервер.
В /вар/www помещать index.html с нужным нам контентом.
Перезапустите Inetd или перезагрузите сервер и проверьте.
Теги: #*nix #Администрирование сервера #FreeBSD #ipfw #fwd #micro_httpd
-
Быстро Публиковать Скриншоты
19 Oct, 24 -
Обзор Ноутбука Asus Pro Bu401L
19 Oct, 24