Jump to content

Раутер на Openbsd


Recommended Posts

Приветствую!

 

В общем хочу сделать следующее:

Поставить на производительный сервер с хорошими серверными сетевыми карточками OpenBSD

Поднять там OpenBGPD и прикрутить к нему свежо зарегистрированную AS+PI

Юзерам/серверам буду раздавать IP уже со своей AS.

Как сделать выше описанное я себе представляю и знаю хотя никогда не использовал до этого не OpenBSD не OpenBGPD. Но маны глянул... . Все описано доходчиво и лаконично.

Беспокоит меня следующее:

Для каждого отдельного IP и для группы IP нужно нарезать полосы как на вход так и на исход. Сделать я так понимаю это оптимальней при помощи pf+altq.

Также для этих IP нужно подсчитывать трафик. Еще и желательней с делением на Мир/Украина. Я так понимаю нужно копать в сторону Netflow.

 

В общем интересуют советы бывалых на чем это лучше всего сделать. И как :) По возможности с примерами боевых конфигов.

 

Покупку Juniper или Cisco не предлагать. Кризис. Денег нету :)

 

P.S. Заранее спасибо.

Link to post
Share on other sites
В общем хочу сделать следующее:

Поставить на производительный сервер с хорошими серверными сетевыми карточками OpenBSD

Поднять там OpenBGPD и прикрутить к нему свежо зарегистрированную AS+PI

 

если Вы не делали этого раньше, скромно порекомендую остановиться на FreeBSD и Quagga

во-первых: OpenBSD специфический продукт. И требует хороших познаний.

во-вторых: Quagga по интерфейсу как Cisco. Легче будет учиться сейчас и переползать на циску потом.

(все IMHO)

Link to post
Share on other sites

На FreeBSD/Linux и Quagga такое делал для людей. Благо с FreeBSD дружу более 5 лет.

Да из Cisco знаком. :) У OpenBGPD конфиг очень похож на Juniper. Поэтому проблем с конфигурацией нет. Почему OpenBSD ? Потому что в проект вкладываю свои деньги которые зарабатывались и днем и ночью тяжким трудом. И нужна максимальная стабильность.

Link to post
Share on other sites
Почему OpenBSD ? Потому что в проект вкладываю свои деньги которые зарабатывались и днем и ночью тяжким трудом. И нужна максимальная стабильность.

сильно сомневаюсь, что OpenBSD будет сильно стабильней FreeBSD...

Link to post
Share on other sites
сильно сомневаюсь, что OpenBSD будет сильно стабильней FreeBSD...

Сильно сомневаюсь, что Вы детально изучали вопрос.

Сильно сомневаюсь, что Ваш флуд чем-то помог или поможет.

 

Господа. Если пишем то пишем пожалуйста по теме. Для крутых ИТшников с словесным поносом есть ЛОР.

Link to post
Share on other sites

Что касается бордера.

У меня был трагичный опыт с квагой. Связывал с сisco по ospf'у, бага была в дропе хелоу пакетов цыски.

Альтернатива: cisco б/у.

* Также не стоит держать bgp маршрутизатор и сервер доступа на одном хосте.

Link to post
Share on other sites
Стоит пожертвовать несколько сотен, дабы в будущем обезопасить себя от лишних нервов

 

Для особо одаренных повторяю. Обсуждаем только те вопросы которые я как ТС просил раскрыть:

 

"Для каждого отдельного IP и для группы IP нужно нарезать полосы как на вход так и на исход.

Также для этих IP нужно подсчитывать трафик. Еще и желательней с делением на Мир/Украина."

 

Парить БУ железо мне не нужно.

Link to post
Share on other sites
Для особо одаренных повторяю. Обсуждаем только те вопросы которые я как ТС просил раскрыть:

 

"Для каждого отдельного IP и для группы IP нужно нарезать полосы как на вход так и на исход.

Также для этих IP нужно подсчитывать трафик. Еще и желательней с делением на Мир/Украина."

 

Парить БУ железо мне не нужно.

У Вас интонации...

не располагают они к тому, чтоб непринужденно давать вам советы :)

 

однако правильно сказали, что:

- openbsd не на столько стабилен, чтобы аж писец... да и фрибсд не на столько падуч, чтобы свой собственный опыт работы с ней поставить ниже чем мнимая стабильность системы, которую не знаете.

- роутер БГП и сервер доступа должны быть разными физически.

- простенькая циска (например catalyst 2948g-l3, который понты денег стоит) или еджкор es3628ea сделает Вашу жизнь с аплинками по БГП такой спокойной, что пароли на них через полгода позабываете.

 

опять же, говорю свое скромное мнение, исходя из восьмилетнего опыта реальной эксплуатации под большим трафиком как цисок так и фриибзд.

а если Вы уже приняли для себя решение, да еще и отстаиваете его так рьяно, -- так зачем тогда на форуме вопросы задаете?

 

P.S. опен тоже ставили -- не понравилось.

Link to post
Share on other sites

fenix-vt спасибо за ответ. Прошу прощения у всех если показался очень резким.

Но флуд просто уже достал. Я хочу получить от комюнити ответ на следующие вопросы:

 

"Для каждого отдельного IP и для группы IP нужно нарезать полосы как на вход так и на исход.

Также для этих IP нужно подсчитывать трафик. Еще и желательней с делением на Мир/Украина."

 

А мне начинают рассказывать какая операционная система лучше. Или что лучше вообще купить железяку. Меня это на данный момент не интересует.

Link to post
Share on other sites

как порезать в pf есть доки/примеры идущие прямо с ним во FreeBSD они тут /usr/share/examples/pf

там всё достаточно просто и понятно.

 

по поводу посчитать есть варианты простые и сложные.

если надо просто посчитать сколько ip нарабатывает по направлению то тут лучше и проще использовать таки ipfw

например так

 

---------

 

MYNET="table\(20\)"

ipfw -q del 10020

ipfw -q pipe delete 10020

ipfw -q add 10020 pipe 10020 ip from any to $MYNET out

ipfw -q pipe 10020 config bw 0 queue 5 mask dst-ip 0xffffffff onepass 0 buckets 8192

 

ipfw -q del 10030

ipfw -q pipe delete 10030

ipfw -q add 10030 pipe 10030 ip from $MYNET to any in

ipfw -q pipe 10030 config bw 0 queue 5 mask src-ip 0xffffffff onepass 0 buckets 8192

 

---------

 

затем пайп удалять и поднимать заново например раз в час.

 

если вариант более сложный то это netflow

по подсчёту на нём куча док в интернете.

 

единственно на что бы хотелось там обратить внимание что прийдётся тратить ощутимые ресурсы на регулярный парсинг и выделение/сумирование нужного (уаикс,внешка,локал)

плюсом тут то что это наимболее универсальный вариант ИМХО.

 

 

как считать в pf не знаю, но думаю варианты есть.

Link to post
Share on other sites
Может OpenOSPDd кто ставил? Как он в сравнении с квагой?

Конфиг похож на Джунипер. (У квагги он цысконутый).

А также при синтетических тестах значительно меньше грузит машинку.

Link to post
Share on other sites
  • 1 month later...

Рассказывать про выбор средств обеспечения динамической маршрутизации не буду. Прекрасно понимаю человека. Сам когда то был в такой ситуации. Было очень много не понятного и тяжело разобраться... Постараюсь объяснить как сделано у меня, а выбор за хозяином, в первую очередь. По крайней мере выбрать есть из чего.

 

1. Бесплатное ПО динамической маршрутизации для Unix-Like систем:

- Quagga

- OpenBGPD, OpenOSPFD

- Xorp

 

2. Готовые бесплатные дистрибутивы софт роутеров:

- Xorp

- Vyatta

 

3. Аппаратные платные решения:

- Cisco

- Juniper

- Extrem

- Mikrotik

- Vyatta

- D-Link

- HP

 

На чем я остановился...

 

Построение сети

 

Схема и используемые типы связи:

 

[bgp neighbor]<---bgp--->[bgp router]<---ospf--->[ip shaper]<---static routes--->[servers]<---dhcp--->[workstations]

 

BGP маршрутизатор:

ОС: FreeBSD 7.1

ПО: Quagga 0.99.11 (Используемые демоны: zebra, bgpd, ospfd)

 

Каналы: 2 по 6 Мбит/с. с разными BGP пирами.

Принимаю: Дефолт (0.0.0.0/0) + UA-IX от обоих пиров.

Анонсирую: 1 префикс с маской 24 обоим пирам.

Балансировка: 1 канал - Мир, 1 канал - Украина.

 

Настройка

1. Устанавливаем FreeBSD, обновляем порты

2. Устанавливаем из портов Quagga

3. Проводим базовые настройки для запуска Quagga

 

Файл /etc/rc.conf

defaultrouter="NO"
quagga_enable="YES"
quagga_daemons="zebra bgpd ospfd"
quagga_flags="-d -A 127.0.0.1"
watchquagga_enable="YES"
watchquagga_flags="-dz -R '/usr/local/etc/rc.d/quagga restart' zebra bgpd ospfd"

 

Примечание: Настройка сетевых интерфейсов будет происходить под управлением Quagga а не Ifconfig. Также если планируются Vlan, лучше их задать сразу в rc.conf

У меня BGP маршрутизатор запущен под VMware server 2, пришлось уменьшить mtu до 1482 т.к. VMware где то дополнительно дописывает 8 байт и большие пакеты не проходят.

 

cloned_interfaces="vlan2 vlan3 vlan4"
ifconfig_vlan2="vlan 2 vlandev le0 mtu 1482"
ifconfig_vlan3="vlan 3 vlandev le0 mtu 1482"
ifconfig_vlan4="vlan 4 vlandev le1 mtu 1482"
ifconfig_le0="up"
ifconfig_le1="up"

 

Создаем конфигурационные файлы и лог файл. Расставляем права.

freebsd# touch /usr/local/etc/quagga/bgpd.conf
freebsd# touch /usr/local/etc/quagga/zebra.conf
freebsd# touch /usr/local/etc/quagga/vtysh.conf
freebsd# touch /var/loq/quagga.log
freebsd# chown quagga:quagga /usr/local/etc/quagga/*.conf
freebsd# chmod 600 /usr/local/etc/quagga/*.conf
freebsd# chown quagga:quagga /usr/local/etc/quagga/
freebsd# chmod 755 /usr/local/etc/quagga/
freebsd# chown quagga:quagga /var/log/quagga.log
freebsd# chmod 644 /var/log/quagga.log

 

4. Запускаем Quagga и входим в командный интерпретатор Vtysh для конфигурирования:

freebsd# /usr/local/etc/rc.d/quagga start
[code]freebsd# vtysh

Hello, this is Quagga (version 0.99.11).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

QUAGGA-ROUTER#

 

4. Конфигурируем к виду:

hostname QUAGGA-ROUTER-ZEBRA
log file /var/log/quagga.log
log stdout
log syslog
bgp config-type cisco
hostname QUAGGA-ROUTER
!
service password-encryption
!
password 8 gX6zVEe229lA6
enable password 8 dVMKGSc5Q0aks
!
interface le0
description --==Roditelskiy Interfeys Dlya Vneshnih VLAN==--
ipv6 nd suppress-ra
link-detect
!
interface le1
description --==Roditelskiy Interfeys Dlya Vnutrennih VLAN==--
ipv6 nd suppress-ra
link-detect
!
interface lo0
link-detect
!
interface plip0
ipv6 nd suppress-ra
!
interface vlan2
description --==ASXXXXX==--
ip address xxx.xxx.xxx.xxx/30
ipv6 nd suppress-ra
link-detect
!
interface vlan3
description --==ASYYYYY==--
ip address yyy.yyy.yyy.yyy/30
ipv6 nd suppress-ra
link-detect
!
interface vlan4
description --==ASZZZZZ==--
ip address zzz.zzz.zzz.zzz/30
ipv6 nd suppress-ra
link-detect
!
router bgp ZZZZZ
no synchronization
bgp router-id zzz.zzz.zzz.z
bgp log-neighbor-changes
bgp deterministic-med
network zzz.zzz.zzz.z mask 255.255.255.0
timers bgp 30 90
neighbor xxx.xxx.xxx.xx remote-as XXXXX
neighbor xxx.xxx.xxx.xx description --==ASXXXXX==--
neighbor xxx.xxx.xxx.xx ebgp-multihop 3
neighbor xxx.xxx.xxx.xx soft-reconfiguration inbound
neighbor xxx.xxx.xxx.xx route-map ASXXXXX-IN in
neighbor xxx.xxx.xxx.xx route-map ASXXXXX-OUT out
neighbor yyy.yyy.yyy.yy remote-as YYYYY
neighbor yyy.yyy.yyy.yy description --==ASYYYYY ==--
neighbor yyy.yyy.yyy.yy soft-reconfiguration inbound
neighbor yyy.yyy.yyy.yy route-map ASYYYYY-IN in
neighbor yyy.yyy.yyy.yy route-map ASYYYYY-OUT out
no auto-summary
!
router ospf
ospf router-id zzz.zzz.zzz.zz
log-adjacency-changes
passive-interface default
no passive-interface vlan4
network zzz.zzz.zzz.zz/30 area 0.0.0.0
area 0.0.0.0 authentication message-digest
default-information originate always
!
ip route zzz.zzz.zzz.0/24 Null0 254
ip route xxx.xxx.xxx.xx/32 xxx.xxx.xxx.xxx
!
ip prefix-list ASZZZZZ-NET description --==Anonsiruemie marshruty==--
ip prefix-list ASZZZZZ-NET seq 5 permit zzz.zzz.zzz.0/24
ip prefix-list LOCAL-NET description --==Lokal`nie seti==--
ip prefix-list LOCAL-NET seq 15 permit 0.0.0.0/8 le 32
ip prefix-list LOCAL-NET seq 20 permit 127.0.0.0/8 le 32
ip prefix-list LOCAL-NET seq 25 permit 192.0.2.0/24 le 32
ip prefix-list LOCAL-NET seq 30 permit 10.0.0.0/8 le 32
ip prefix-list LOCAL-NET seq 35 permit 172.16.0.0/12 le 32
ip prefix-list LOCAL-NET seq 40 permit 192.168.0.0/16 le 32
ip prefix-list LOCAL-NET seq 45 permit 169.254.0.0/16 le 32
ip prefix-list LOCAL-NET seq 50 permit 192.42.172.0/24 le 32
ip prefix-list LOCAL-NET seq 55 permit 198.18.0.0/15 le 32
ip prefix-list LOCAL-NET seq 60 permit 192.88.99.0/24 le 32
ip prefix-list LOCAL-NET seq 65 permit 224.0.0.0/4 le 32
ip prefix-list LOCAL-NET seq 70 permit 240.0.0.0/4 le 32
ip prefix-list PEER-NET description --==Anonsirovanye marshruty==--
ip prefix-list PEER-NET seq 5 permit 0.0.0.0/0
!
ip as-path access-list 1 permit _6451[2-9]_
ip as-path access-list 1 permit _645[2-9][0-9]_
ip as-path access-list 1 permit _64[6-9][0-9][0-9]_
ip as-path access-list 1 permit _65[0-9][0-9][0-9]_
ip as-path access-list 2 permit _15645_
ip as-path access-list 3 permit ^XXXXX$
ip as-path access-list 4 permit ^YYYYY$
!
route-map ASXXXXX-IN deny 100
description --==Filtr lokal`nyh avtonomnyh sistem==--
match as-path 1
!
route-map ASXXXXX-IN deny 110
description --==Fil`tr lokalnyh setey==--
match ip address prefix-list LOCAL-NET
!
route-map ASXXXXX-IN deny 120
description --==Fil`tr svoey avtonomnoy sistemy==--
match ip address prefix-list ASZZZZZ-NET
!
route-map ASXXXXX-IN permit 130
description --==Ustanovka prioriteta dlya AS15645 (UA-IX)==--
match as-path 2
set local-preference 200
!
route-map ASXXXXX-IN permit 140
description --==Priem anonsirovanyh marshrutov i ustanovka prioriteta==--
match ip address prefix-list PEER-NET
set local-preference 100
!
route-map ASXXXXX-IN permit 150
description --==Priem marshrutov porojdennyh v AS provaydera i ustanovka prioriteta==--
match as-path 3
set local-preference 300
!
route-map ASYYYYY-IN deny 100
description --==Filtr lokal`nyh avtonomnyh sistem==--
match as-path 1
!
route-map ASYYYYY-IN deny 110
description --==Fil`tr lokalnyh setey==--
match ip address prefix-list LOCAL-NET
!
route-map ASYYYYY-IN deny 120
description --==Fil`tr svoey avtonomnoy sistemy==--
match ip address prefix-list ASZZZZZ-NET
!
route-map ASYYYYY-IN permit 130
description --==Ustanovka prioriteta dlya AS15645 (UA-IX)==--
match as-path 2
set local-preference 100
!
route-map ASYYYYY-IN permit 140
description --==Priem anonsirovanyh marshrutov i ustanovka prioriteta==--
match ip address prefix-list PEER-NET
set local-preference 200
!
route-map ASYYYYY-IN permit 150
description --==Priem marshrutov porojdennyh v AS provaydera i ustanovka prioriteta==--
match as-path 4
set local-preference 300
!
route-map ASXXXXX-OUT permit 100
description --==Razreshenie na anons svoey avtonomnoy sistemy==--
match ip address prefix-list ASZZZZZ-NET
!
route-map ASYYYYY-OUT permit 100
description --==Razreshenie na anons svoey avtonomnoy sistemy==--
match ip address prefix-list ASZZZZZ-NET
!
ip forwarding
!
line vty
!

 

xxx.xxx.xxx.xxx - IP адреса или сеть 1 пира

yyy.yyy.yyy.yyy - IP адреса или сеть 2 пира

zzz.zzz.zzz.zzz - Мой IP адрес или сеть

XXXXX - Автономная система 1 пира

YYYYY - Автономная система 2 пира

ZZZZZ - Моя автономная система

 

В качестве шейпера сети использую Dummynet на FreeBSD. Если в конфиге что то непонятно, могу объяснить по каждой команде. В свое время пришлось разобраться.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...