Ключевые слова:bsd, openbsd, firewall, route, ipf, (найти похожие документы)
From: maestro <maestro@synergy-press.ru>
Newsgroups: email
Date: Mon, 11 Sep 2003 14:31:37 +0000 (UTC)
Subject: Настройка OpenBSD в качестве роутера/файрвола
По причине отсутствия где-либо в сети русской документации на эту тему,
возьму на себя смелость перевести статью Evan S /kaworu@sektor7.ath.cx,
опубликованную ранее здесь на английском языке
Оригинал статьи находится здесь:
*** http://www.opennet.dev/base/net/openbsd_router.txt.html ***
*******
Возможно, у Вас возникла похожая на мою проблема. У вас есть семь ( или
более) компьютеров стоящих вокруг Вас и ожидающих доступа во внешний
мир. Недавно я стал счастливым обладателем выделенной линии, и подумал,
что сейчас- самый лучший момент для того, чтобы разобраться с этим. Для
начала я составил списо возможного оборудования для создания роутера.
1. Linksys CableModem/DSL router. 150$
2. Компьютер под управлением Linux, работающий в качестве роутера.
3. Компьютер под управлением OpenBSD, работающий в качестве роутера.
Я сразу же отверг использование первого пункта потому, что у меня без
дела валялся 486 комп, к тому же это было слишком дорого. Теперь передо
мной встал выбор между Линуксом и OpenBSD. Если Вам более комфортно
работать с Линуксом, у Вас есть сетевые карточки. которые хорошо под
него работают, тогда выбирайте Линукс. Я же выбрал OpenBSD по следующим
причинам:
1. Роутер под OpenBSD работает на 15% быстрее роутеров под Линукс и FreeBSD/
2. Это наиболее защищенная операционная система в мире.
Затем я потратил некоторе время, чтобы купить две 3c509B 3com ISA
карточки. Мне немного не повезло , т.к. они являлись ISA PnP, но все,
что мне потребовалось сделать, это воспользовавшись диском с дровами
установить для них правильные I/O и IRQ. Это не было слишком трудно :)
В OpenBSD они определились как ep0 и ep1. Я подключил ep0 к моей
выделеной линии в интернет , ep1 к моему хабу.
*** Вывод ifconfig: ***
ep0: flags=8863 mtu 1500
media: Ethernet 10baseT
inet6 fe80::220:afff:fe17:38c9%ep0 prefixlen 64 scopeid 0x1
inet 146.115.66.104 netmask 0xfffffe00 broadcast 255.255.255.255
ep1: flags=8863 mtu 1500
media: Ethernet 10baseT
inet 169.69.6.1 netmask 0xffffff00 broadcast 169.69.6.255
inet6 fe80::2a0:24ff:fe2b:4886%ep1 prefixlen 64 scopeid 0x2
Моя сеть 169,69,6,0/24
*** Теперь, приступаем к настройке NAT . Убедитесь, что все эти опции у
Вас присутствуют:
1. Добавляем в файл /etc/rc.conf строчки типа :
ipfilter=YES
ipnat=YES #
ipfilter_rules=/etc/ipf.rules # правила для фильтрации пакетов
ipnat_rules=/etc/ipnat.rules # Правила для НАТа
2. Создаем и редактируем /etc/ipnat.rules
Посмотрите в выводе ifconfig ваш адрес внешней сети . У меня это будет
ep0/32 = 146.115.66.104
Это пример файла измените всё, что нужно в сответствии с Вашими требованиями
# $OpenBSD: ipnat.rules,v 1.2 1999/05/08 16:33:10 jason Exp $
#
# See /usr/share/ipf/nat.1 for examples.
# edit the ipnat= line in /etc/rc.conf to enable Network Address Translation
map ep0 169.69.6.0/24 -> ep0/32 portmap tcp/udp 1024:20000
# maps tcp/udp connections on my network through ports 1024 -> 20000
map ep0 169.69.6.0/24 -> ep0/32
# maps ICMP, etc
rdr ep0 ep0/32 port 24 -> 169.69.6.5 port 22
# redirects traffic coming from the outside on port 24 to my sparc on port 22
rdr ep0 ep0/32 port 25 -> 169.69.6.5 port 25
# redirects traffic coming from the outside on port 25 to my sparc on port 25
3. Редактируем /etc/sysctl.conf чтобы разрешить форвардинг:
net.inet.ip.forwarding=1 # 1=Разрешаем форвардить (роутить) пакеты
4. Все сохраняем и перегружаемся
Теперь все должно работать. прописываем для компов Вашей сети дефолтный
гейтвей, пингуем роутер, пингуем внешнюю сеть. радуемся. что все заработало.
**** Настройка Файрвола ****
Это самая_важная_часть нашей конфигурации. Обязательно прочитайте маны к
ipf и конфигурите Ваш файрвол в соответствии с вашими требованиями. Мне
надо было сделать так:
**** Файл /etc/ipf.rules ****
# $OpenBSD: ipf.rules,v 1.6 1997/11/04 08:39:32 deraadt Exp $
#
# IP filtering rules. See the ipf(5) man page for more
# information on the format of this file, and /usr/share/ipf
# for example configuration files.
#
# Pass all packets by default.
# edit the ipfilter= line in /etc/rc.conf to enable IP filtering
#
# block in on tun0 proto tcp from any to any port = 6000
# block in on tun0 proto tcp from any to any port = 111
# pass in from any to any
# pass out from any to any
# Misc rules
pass in log on ep0 proto tcp from any to any port = 22
block in log proto icmp all icmp-type 8
block in log proto icmp all icmp-type 13
block in log proto icmp all icmp-type 15
block in log proto icmp all icmp-type 17
block in log on ep0 proto tcp from any to any port = 3306
# Deny outside illegals
block in log quick on ep0 from 0.0.0.0/32 to any
block in log quick on ep0 from 255.255.255.255/32 to any
block in log quick on ep0 from 127.0.0.0/8 to any
block in log quick on ep0 from any to 0.0.0.0/32
block in log quick on ep0 from any to 255.255.255.255/32
block in log quick on ep0 from any to 127.0.0.0/8
#never pakets
block in log quick on ep0 from 192.168.0.0/16 to any
block in log quick on ep0 from 172.16.0.0/12 to any
block in log quick on ep0 from 10.0.0.0/8 to any
block in log quick on ep0 from 192.168.6.0/16 to any
Ну вот типа, все.
Буду очень признателен за замечания, а также всячиские придирки к этому
(немного вольному) переводу. Все конфиги автора сохранены.
А как настроить роутером/файрволлом OpenBSD 3.6?
Я так понимаю, что в этой версии OpenBSD подход к маршрутизации и фильтрации пакетов несколько изменился. Расскажите, плииз, так же подробно! Я в никсах новичок. (Однако, скачать и установить OpenBSD 3.6 уже сумел:-))) И, кстати, где в настройках OpenBSD 3.6 прописать IP внешних (на стороне провайдера) шлюза, первичного и вторичного DNS-ов?