LINUX.ORG.RU
ФорумAdmin

DHCP клиент и сервер на одном интерфейсе

 ,


0

1

Работаю над устройством для клиента (raspberry pi с несколькими модулями), для простоты подключения хочу сделать следующее:

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

По-идее, ничего сложного нет, но хочу заранее узнать, насколько это плохая идея? Не устроит ли такое устройство анархию в сети, будучи подключенным к роутеру клиента? Как будет себя вести dhcp-клиент, имея на интерфейсе захардкоденный адрес и адрес, полученный от роутера?

Напиши скрипт, определяющий что нужно — клиент, или сервер. Вешай его на post-up интерфейса.

HerrWeigel ★★★★
()

Не надо сервер, иначе рискуешь создать геморрой клиенту. А клиент опционально.

anonymous
()

Не нужно так делать.

Kroz ★★★★★
()

Я бы сделал так: сначала слать запрос dhcp, если ответа не пришло через N секунд - запускать dhcp-сервер.

gasinvein ★★★
()
Ответ на: комментарий от gasinvein

Я бы сделал так: сначала слать запрос dhcp, если ответа не пришло через N секунд - запускать dhcp-сервер.

Два чаю. Только время отбоя надо уменьшить, ибо на подключенном ПК тоже не вечность будут ждать выдачи IP адреса.

А вообще, сделай на одном из GPIO кнопку, которая будет запускать DHCP сервер. Скрипт кнопки можно написать на bash.

rezedent12 ☆☆☆
()
Ответ на: комментарий от rezedent12

запускать DHCP сервер и присваивать себе статический IP.

rezedent12 ☆☆☆
()
Ответ на: комментарий от rezedent12

Реализовать, кстати, можно очень просто с помощью systemd TimeoutStartSec и OnFailture на юните, который отвечает за поднятие интерфейсов (например networking.service в дебиане).

gasinvein ★★★
()
Последнее исправление: gasinvein (всего исправлений: 2)
Ответ на: комментарий от gasinvein

Реализовать, кстати, можно очень просто с помощью systemd TimeoutStartSec и OnFailture на юните, который отвечает за поднятие интерфейсов (например networking.service в дебиане).

Я думаю лучше сделать на кнопке. В реальных сетях бывает DHCP медленно отвечает. Например если между двумя частями сети медленный и загруженный мост.

rezedent12 ☆☆☆
()
Ответ на: комментарий от rezedent12

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

gasinvein ★★★
()
Ответ на: комментарий от gasinvein

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

Вообще то в цепь переключателя достаточно подключить светодиод. Иди использовать 2 GPIO, один для кнопки, другой для светодиода. И сделать это можно всего на одном скрипте запускаемом из /etc/rc.local

rezedent12 ☆☆☆
()
Ответ на: комментарий от rezedent12

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

Spectator
() автор топика
Ответ на: комментарий от gasinvein

Хороший план. systemd, скорее всего, не будет - пока что целимся на openwrt, но схема ясна.

Spectator
() автор топика
Ответ на: комментарий от Spectator

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

Потворствовать тупости - это культивировать её. А полностью автоматическое - может создавать странные глюки и доставлять клиенту ещё большие проблемы.

rezedent12 ☆☆☆
()
Ответ на: комментарий от rezedent12

Потворствовать тупости - это культивировать её. А полностью автоматическое - может создавать странные глюки и доставлять клиенту ещё большие проблемы.

Очень правильное замечание. Сколько уже «копий сломано» из-за «тупой юзер включил еще одно устройство с dhcpd».
ТС Вот как вариант, «тупой юзер» включает эту железку первой (да просто после выруба питания она поднимается первой), она не получает с dhcp адрес и поднимает dhcpd, следом догружается роутер так же dhcpd. Красиво?
Тут без инструкции никак не обойтись. Хоть как советовал rezedent12 переключателем (кстати классное решение!) хоть статика которую потом юзвер сам поправит.

anc ★★★★★
()

Под описанный Вами случай есть RFC 3927 для IPv4 и RFC 4862 для IPv6.

хочется странного

Ничего странного в этом нет.

robot12 ★★★★★
()
Последнее исправление: robot12 (всего исправлений: 1)
Ответ на: комментарий от robot12

Link-local будет работать, да, но я не уверен, как с ним будет работать windows. Если требуется хоть минимальные настройки - вариант отпадает. Если устройство будет выступать в роли dhcp-сервера, а ноутбук пользователя - в роли клиента, то проблем точно не будет.

Spectator
() автор топика
Ответ на: комментарий от robot12

Хорошо, присмотрюсь к этому решению. Link-local умеет ставить статический адрес? Предполагается, что пользователь может перейти по ссылке с сайта (на котором он забит), но найти адрес самостоятельно сильно выше его способностей. В случае с роутером, не будет конфликтов link-local и dhcp?

Spectator
() автор топика
Ответ на: комментарий от Spectator

Предполагается, что пользователь может перейти по ссылке с сайта (на котором он забит), но найти адрес самостоятельно сильно выше его способностей.

Т.е. вы предполагаете что клиент зайдет на сайт оставит открытой страницу, потом выдернит шнурок и воткнет его в малину? Чего-то тут с логикой не то. Если инет есть и у клиента уже раздается dhcp какой в этом смысл?

anc ★★★★★
()
Ответ на: комментарий от robot12

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

anc ★★★★★
()
Ответ на: комментарий от anc

Такое поведение проще описать в документации, чем ползанье в настройках. Я прекрасно понимаю, что это хреновая идея.

Spectator
() автор топика
Ответ на: комментарий от Spectator

Я только про ссылку с сайта. :) А так действительно robot12 «вернул всех на землю». Link-local и на онтопике работать будет ( правда за всё разнообразие не поручусь). Но один раз мне это пригодилось именно с онтопиком, клавы не было, только моник, и dhcp в сети не было.

anc ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.