Настройка OpenBSD в качестве роутера/файрвола

В данной статье приведены инструкции по настройке OpenBSD в качестве Интернет-шлюза

[Evan S (kaworu@sektor7.ath.cx). Перевод maestro (maestro@synergy-press.ru)]

Настройка OpenBSD в качестве роутера/файрвола

По причине отсутствия где-либо в сети русской документации на эту тему, возьму на себя смелость перевести статью Evan S /kaworu@sektor7.ath.cx, опубликованную ранее здесь на английском языке Оригинал статьи находится здесь: http://www.opennet.ru/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

Теперь, приступаем к настройке 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
Ну вот и все.

Буду очень признателен за замечания, а также всячиские придирки к этому (немного вольному) переводу. Все конфиги автора сохранены.

[ опубликовано 28/11/2003 ]

Evan S (kaworu@sektor7.ath.cx). Перевод maestro (maestro@synergy-press.ru) - Настройка OpenBSD в качестве роутера/файрвола   Версия для печати