Jump to content
Local
Baneff

FreeBSD, isc-dhcp44-relay + isc-dhcp44-server на одном компе

Recommended Posts

Доброго всем дня.

Стояла себе сетка з раздачей адресов по DHCP c FreeBSD  сервака через isc-dhcp44-server и всё работало. Захотелось раздавать адреса не в соответствии с МАС адресами клиентов, а в соответствии с сетевым интерфейсом, через который клиент подключен независимо от его MAC адреса. Для этого понадобилось установить isc-dhcp44-relay, который умеет снимать имена интерфейсов с входных запросов и передавать их DHCP серверу. И тут вылезла проблема. Если isc-dhcp44-relay и isc-dhcp44-server находятся на физически разных компах, то всё работает без проблем. Однако, держать отдельно специальный комп только под isc-dhcp44-server как-то не хочется, хотелось бы всё это впихнуть на один комп и вот тут - никак. Эти два продукта одной фирмы садятся в сетевой стек очень глубоко, на уровне BPF и пытаются одновременно занять одни и те-же ресурсы. Попытка поместить isc-dhcp44-server в Jail и даже в виртуальную машину тоже успеха не принесла. Попытки заменить на продукты других разработчиков пока не дали работоспособной конфигурации тоже. Кто-то сталкивался с такой задачей? Есть хоть какая-то возможность совместить оба продукта ISC на одном FreeBSD компе? Или, возможно, есть другое рабочее решение для раздачи IP адресов клиентам не по MAC-ам, а по интерфейсам подключения с помощью одного FreeBSD компа?

Спасибо.

Share this post


Link to post
Share on other sites
1 час назад, Baneff сказал:

Доброго всем дня.

Стояла себе сетка з раздачей адресов по DHCP c FreeBSD  сервака через isc-dhcp44-server и всё работало. Захотелось раздавать адреса не в соответствии с МАС адресами клиентов, а в соответствии с сетевым интерфейсом, через который клиент подключен независимо от его MAC адреса. Для этого понадобилось установить isc-dhcp44-relay, который умеет снимать имена интерфейсов с входных запросов и передавать их DHCP серверу. И тут вылезла проблема. Если isc-dhcp44-relay и isc-dhcp44-server находятся на физически разных компах, то всё работает без проблем. Однако, держать отдельно специальный комп только под isc-dhcp44-server как-то не хочется, хотелось бы всё это впихнуть на один комп и вот тут - никак. Эти два продукта одной фирмы садятся в сетевой стек очень глубоко, на уровне BPF и пытаются одновременно занять одни и те-же ресурсы. Попытка поместить isc-dhcp44-server в Jail и даже в виртуальную машину тоже успеха не принесла. Попытки заменить на продукты других разработчиков пока не дали работоспособной конфигурации тоже. Кто-то сталкивался с такой задачей? Есть хоть какая-то возможность совместить оба продукта ISC на одном FreeBSD компе? Или, возможно, есть другое рабочее решение для раздачи IP адресов клиентам не по MAC-ам, а по интерфейсам подключения с помощью одного FreeBSD компа?

Спасибо.

 

разнести их по разным интерфейсам же

хз, можно ли дхцп сервер вынести в lo0, но если прокатит - вас ждет успех

либо на пустой бридж посадить

Share this post


Link to post
Share on other sites
5 минут назад, l1ght сказал:

разнести их по разным интерфейсам же

хз, можно ли дхцп сервер вынести в lo0, но если прокатит - вас ждет успех

либо на пустой бридж посадить

Они оба по интерфейсам не разводятся и чисто на lo0 не садятся, а сразу тупо пытаются сесть на 0.0.0.0/0:67 вне зависимости от настроек. Естественно, сразу у обоих это не получается. Можно посадить сервер на порт, отличный от 67, тогда запускаются оба. Но тогда непонятно, как заставить релей передавать запросы юзеров на нестандартный порт сервера. Ещё идеи есть?

Share this post


Link to post
Share on other sites
8 минут назад, Baneff сказал:

Они оба по интерфейсам не разводятся и чисто на lo0 не садятся, а сразу тупо пытаются сесть на 0.0.0.0/0:67 вне зависимости от настроек. Естественно, сразу у обоих это не получается. Можно посадить сервер на порт, отличный от 67, тогда запускаются оба. Но тогда непонятно, как заставить релей передавать запросы юзеров на нестандартный порт сервера. Ещё идеи есть?

Запросы передавать на другой порт с помощью фаервола

Share this post


Link to post
Share on other sites
15 минут назад, joker85 сказал:

Запросы передавать на другой порт с помощью фаервола

Интересная мысль, спасибо, попробую с помощью ipfw fwd перенаправить запросы на нестандартный порт.

Share this post


Link to post
Share on other sites
1 час назад, Baneff сказал:

Интересная мысль, спасибо, попробую с помощью ipfw fwd перенаправить запросы на нестандартный порт.

ipfw_or_pf

Share this post


Link to post
Share on other sites
1 минуту назад, joker85 сказал:

ipfw_or_pf

Да, но на этом компе только ipfw используется в даннй момент, не хочется плодить сущности. Как раз сейчас проверяю, о результатах доложусь.

Share this post


Link to post
Share on other sites

Пишите, инстересно узнать

Share this post


Link to post
Share on other sites
3 часа назад, Baneff сказал:

Они оба по интерфейсам не разводятся и чисто на lo0 не садятся, а сразу тупо пытаются сесть на 0.0.0.0/0:67 вне зависимости от настроек. Естественно, сразу у обоих это не получается. Можно посадить сервер на порт, отличный от 67, тогда запускаются оба. Но тогда непонятно, как заставить релей передавать запросы юзеров на нестандартный порт сервера. Ещё идеи есть?

Да херня же, не должно так быть.

Вот правда isc-dhcp4 я в глаза не видел. Но тройка то точно умела на нужный интерфейс падать.

Share this post


Link to post
Share on other sites
8 минут назад, l1ght сказал:

Да херня же, не должно так быть.

Вот правда isc-dhcp4 я в глаза не видел. Но тройка то точно умела на нужный интерфейс падать.

Полностью согласен - херня и так не должно быть. Однако факт налицо:

> sockstat -l
USER     COMMAND    PID     FD PROTO  LOCAL ADDRESS    FOREIGN ADDRESS

dhcpd    dhcpd            60531 8    udp4      *:67                           *:*

Share this post


Link to post
Share on other sites
2 часа назад, joker85 сказал:

Пишите, инстересно узнать

Не, не получается. Пытался завернуть запросы на нестандарный порт по всякому, но дхцп сервер не отвечает на такие попытки.

Share this post


Link to post
Share on other sites
5 минут назад, fet4 сказал:

accel-ppp вам в помощь

Ага, щаз. Под фрёй оно не живёт.

Share this post


Link to post
Share on other sites

Поверьте это лучшее что я видел для ipoe из open source.

Edited by fet4

Share this post


Link to post
Share on other sites
Только что, fet4 сказал:

Поверьте это лучшее что я видел для ipoe.

Верю, но смена оси не обсуждается, не от меня зависит.

Share this post


Link to post
Share on other sites
2 часа назад, Baneff сказал:

Полностью согласен - херня и так не должно быть. Однако факт налицо:

> sockstat -l
USER     COMMAND    PID     FD PROTO  LOCAL ADDRESS    FOREIGN ADDRESS

dhcpd    dhcpd            60531 8    udp4      *:67                           *:*

А конфиг под него как выглядит?

Раньше опция была dhcpd_ifaces

Share this post


Link to post
Share on other sites
34 минуты назад, l1ght сказал:

А конфиг под него как выглядит?

Раньше опция была dhcpd_ifaces

Опция есть, говорит на каких интерфейсах слушать. Но тулза всё равно садится на *:67 без разговоров и это не отключается. В код лезть как-то лениво, видно придётся таки доставить второй комп, может заодно ещё для чего пригодится. Больше идей пока нет.

Share this post


Link to post
Share on other sites

понизьте версию по, или стороннее установите с нага возьмете

Share this post


Link to post
Share on other sites

Чем плох релей на коммутаторе? В крайнем случае, микротик?

2 поеделки ISC одновременно на одной машине работать не будут.

Share this post


Link to post
Share on other sites

Если уж очень хочется запустить всё на одной системе, то пользовать релей от ISC на radius или на Perl

Честно говоря, у меня подобная проблема, и я, к сожалению, ещё не решил её оптимальным, кмк, образом.

Share this post


Link to post
Share on other sites
2 часа назад, joker85 сказал:

понизьте версию по, или стороннее установите с нага возьмете

Пробовал 3-ю версию - аналогично, да и безопасность пострадает, там дыры.С нага и прочее стороннее брал и пробовал, но проблема в том, что всё это потустороннее - это всё DHCP сервера, а рабочий DHCP релей с нужным функционалом по сути наличествует только один, вот этот самый ISC DHCP Relay. Это очень странно, но правильно работать с виланами, а не только с МАС-ами клиентов почему-то может только вот эта поделка. Значит, если мы ставим перед собой задачу все это запустить на одно компе, то первая половина задачи не обсуждается - сначала ставим ISC DHCP Relay. На а дальше всё, тупик. Как я уже говорил этот релей хоть и обеспечивает необходимый функционал, но при запуске сразу и без вариантов биндится на *:67, а после этого уже невозможно на этот комп поставить никакой DHCP сервер, поскольку ему тоже нужно биндиться на 67 порт хотя-бы на один IP адрес, но всё уже тупо занято релеем. Попытки привязать DHCP сервер к другому порту и потом мапить/перенаправлять порты к успеху не привели, возможно я что-то не так делал. Вывод я для себя сделал такой - не хочешь использовать релеи на свичах - ставь второйкомп и разноси физически релей и сервер, всё работает без проблем. Не хочешь ставить второй комп - только схема с релеями на свичах и сервером на компе, тоже работает. А вот первоначальная задача - обойтись одним компом без использования релеев свичей похоже решения не имеет, что обидно конечно.

Share this post


Link to post
Share on other sites
1 час назад, andryas сказал:

Чем плох релей на коммутаторе? В крайнем случае, микротик?

2 поеделки ISC одновременно на одной машине работать не будут.

Похоже, что так, тоже пришёл к такому выводу. Хотелось простоты и однообразия, а релеи на свичах как бы лишние сущности если удалось бы запустит требуемую связку. Свичи разные, с разными системами команд, сегодня одни, а завтра другие и всё это напрягает. Кроме того свич с релеем предполагает определённую ценовую категорию, на дешёвые свичи релеи не ставят, нет функционала. Но делать нечего - не получилось по простому - пойдём по сложному пути. Опять же, если у кого и так есть второй комп под контролем и не нужно доставлять ещё один, то всё прекрасно решается без релеев на свичах. И, если уж на то пошло, таки можно и доставить второй комп, может заодно ещё для чего пригодится.

Share this post


Link to post
Share on other sites
1 час назад, andryas сказал:

Если уж очень хочется запустить всё на одной системе, то пользовать релей от ISC на radius или на Perl

Честно говоря, у меня подобная проблема, и я, к сожалению, ещё не решил её оптимальным, кмк, образом.

Увы, связка на одном компе не выходит никак. После установки релея уже ничто в пару к нему не становится ибо 67 порт занят полностью релеем. По крайней мере у меня так. У кого есть в системе второй физический комп, то проблем нет, разносим и работаем. В моём случае там нет второго физического компа, а значит либо доставляем его специально под эту задачу либо используем релеи свичей, ничего другого я не вижу. Как по мне, доставить второй комп проще. Если решите, то, плиз, дайте знать, интересно всё таки.

Share this post


Link to post
Share on other sites

Кстати, попробовал сейчас такую связку: релей на локальном компе, а сервер на виртуальном серваке, арендованом где-то в облаках за 3.5 евры в мес. Работает. Это, конечно, экстрим, на как вариант на крайняк... Между релеем и сервером идёт простой юникастовый обмен по udp с порта 67 на порт 67 и обратно, никакой магии. Попутно выяснилось, что продукты ISC действительно работают с клиентами через BPF на очень глубоком уровне стека, еще перед всякими файерволами и тому подобным. Запретить там что-то или перенаправить куда-то правилами файервола невозможно, обмен происходит ниже. Говорят так исторически сложилось, слишком древний и слмшком многоплатформенный продукт, получилось как смогли. Но вот с нелокальными ресурсами эта байда работает стандартно, потому физическое разнесение и помогает. Где-то так.

Share this post


Link to post
Share on other sites
7 минут назад, Baneff сказал:

Говорят так исторически сложилось, слишком древний и слмшком многоплатформенный продукт, получилось как смогли. Но вот с нелокальными ресурсами эта байда работает стандартно

 

Иначе на BSD системах никак не принять широковещалку, насколько я понимаю предмет.

Share this post


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.

  • Similar Content

    • By Ututa
      №1 Tower E3 129O 4,0Ghz
      Intel Xeon E3-129O 8 потоков  3,6-4,0Ghz \MB Suрermiсro: IPMI, KVMoverLAN, 4xPCI-e 2.0 8x, 2xSATAIII (raid 0, 1)+ 4xSATAII (raid 0, 1, 5, 10),  2x LAN 2x1Gbit, USB 2.0 x9, mATX\ RAM DDR3 8Gb\ HDD 250GB\ 400W - 370у.е.
      (понимает NVMе и M2 через переходник  в качестве загрузочного, что возможно актуально кому-то под 1С, воз-н 6\н)
       
       
       
       
    • By Максим97
      что нужно настроить, что бы велся учет переданных данных и снималась абонентская плата в схеме собранной в GNS3?
    • By Amourmort
      Доброго времени суток!
      Был шлюз, настроенный неизвестно когда неизвестным админом. Всё прекрасно работало, интернет людям раздавался, пока не возникла необходимость перейти на другого провайдера.

      У предыдущего провайдера IP шлюзу не выдавался, адрес и шлюз был настроен прямо в rc.conf.
      У нового провайдера PPPoE
      Штатными средствами фряхи у меня поднять соединение не получилось... Вернее, соединение поднималось только вручную, командой /etc/rc.d/ppp start - при перезагрузке соединение автоматически не стартовало.
      Решил использовать утилиту mpd5 для PPPoE. Вот содержимое mpd.conf:
      default: load pppoe_client pppoe_client: # # PPPoE client: only outgoing calls, auto reconnect, # ipcp-negotiated address, one-sided authentication, # default route points on ISP's end # create bundle static B1 # set iface enable nat ##NAT is configured elsewhere set iface route default set ipcp ranges 0.0.0.0/0 0.0.0.0/0 create link static L1 pppoe set link action bundle B1 set auth authname ******** set auth password ******** set link max-redial 0 set link mtu 1492 set link keep-alive 10 60 set pppoe iface igb0 set pppoe service "" open Внёс правки в rc.conf, добавив туда запуск mpd5 и убрав интерфейс igb0. Так же, убрал строку defaultrouter - она была нужна для работы с предыдущим провайдером, с новым резолвер получает данные автоматически.
      Далее, в качестве фаервола используется PF.
      В /etc/pf.conf, к счастью, использованы переменные для конфигурации. Меняю одну переменную ext_if = "igb0" на ext_if = "ng0" и думаю, что дело сделано. Соединение при перезагрузке поднимается, доступ в интернет есть... Довольный собой уехал с объекта домой.
      Вроде бы всё хорошо.
      Но вдруг оказывается, что доступ есть далеко не к каждому сайту. Например, к укр.нет доступ есть. А к bitrix24.ua - нет.
      Пингую с сервака:
       
      ping bitrix24.ua PING bitrix24.ua (18.232.195.40): 56 data bytes ^C --- bitrix24.ua ping statistics --- 26 packets transmitted, 0 packets received, 100.0% packet loss ЧЗН? Спидтест:
       
      speedtest-cli Retrieving speedtest.net configuration... Testing from LIMANET Ltd. (141.105.132.238)... Retrieving speedtest.net server list... Selecting best server based on ping... Hosted by ISP Black Sea (Одесса) [0.43 km]: 5034.671 ms Testing download speed................................................................................ Download: 0.00 Mbit/s Testing upload speed................................................................................................ Upload: 0.00 Mbit/s АААААААААААААААААААА!!!! Что это???
       
      ping korinf-group.com PING korinf-group.com (91.234.33.240): 56 data bytes 64 bytes from 91.234.33.240: icmp_seq=0 ttl=58 time=13.654 ms 64 bytes from 91.234.33.240: icmp_seq=1 ttl=58 time=13.475 ms 64 bytes from 91.234.33.240: icmp_seq=2 ttl=58 time=13.332 ms 64 bytes from 91.234.33.240: icmp_seq=3 ttl=58 time=13.913 ms 64 bytes from 91.234.33.240: icmp_seq=4 ttl=58 time=14.873 ms 64 bytes from 91.234.33.240: icmp_seq=5 ttl=58 time=14.033 ms 64 bytes from 91.234.33.240: icmp_seq=6 ttl=58 time=13.743 ms ^C --- korinf-group.com ping statistics --- 7 packets transmitted, 7 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 13.332/13.860/14.873/0.469 ms ping google.com.ua PING google.com.ua (216.58.215.67): 56 data bytes 64 bytes from 216.58.215.67: icmp_seq=0 ttl=120 time=27.686 ms 64 bytes from 216.58.215.67: icmp_seq=1 ttl=120 time=27.766 ms 64 bytes from 216.58.215.67: icmp_seq=2 ttl=120 time=27.738 ms 64 bytes from 216.58.215.67: icmp_seq=3 ttl=120 time=27.651 ms 64 bytes from 216.58.215.67: icmp_seq=4 ttl=120 time=27.603 ms 64 bytes from 216.58.215.67: icmp_seq=5 ttl=120 time=27.781 ms 64 bytes from 216.58.215.67: icmp_seq=6 ttl=120 time=27.562 ms ^C --- google.com.ua ping statistics --- 7 packets transmitted, 7 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 27.562/27.684/27.781/0.077 ms Как такое может быть? Куда копать?
      При этом, если на компе юзера включить какой-нибудь "впн", с туннелем через Киев или Берлин, доступ к любым сайтам есть, как положено...
    • By Максим97
      После установки FreeBSD на виртуал бокс по инструкции с данного видео, не устанавливается пакет pkg и не могу зайти в режим супер юзера, что делать?
    • By KGroup
      Всем привет!
      Подскажите плиз: Как очистить содержимое всех файлов в каталоге на системе linux без удаления самих файлов?
      Может скрипт какой есть для примера?
       
      зы.
      sudo cat /dev/null > file.txt работает только с одним файлом...
       
×