LINUX.ORG.RU
решено ФорумAdmin

Добавление имени хоста клиента IPsec/L2TP в зону DNS

 , , ,


0

2

Доброго времени, коллеги! Подскажите куда копать. Собственно есть Ubuntu 20.x с установленным на нем xl2tp и ipsec. Клиенты коннектятся, все пингуется по IP, SSH до клиентов работает. Но проблема в том, что сервер не видит имени хоста клиента. Пробовал поднять BIND в связке с DHCP сервером, чтоб обновлять зону DNS динамически, но DHCP сервер ругается на интерфейс если в конфиге прописать ppp интерфейсы. И насколько понял x2ltpd сам раздает IP из заданного в файле конфигурации диапазона. Уже как только не гуглил, создается впечатление что я чего-то простого и базового не понимаю. Конечная задача - чтобы с сервера можно было посмотреть список всех подключенных клиентов по их hostname, ну и коннектить к ним по ssh по имени например, или пинговать по имени. Клиентов много, больше 500, соответственно это необходимо чтоб находить нужного клиента


Но проблема в том, что сервер не видит имени хоста клиента.

И не увидит, это его хостнэйм и он вам его не расскажет. Да и что вам скажет хостнэйм удаленного клиента? У него он может быть от рандома из буковок и цифирек до analnaya-dilda.

Конечная задача - чтобы с сервера можно было посмотреть список всех подключенных клиентов по их hostname, ну и коннектить к ним по ssh по имени например, или пинговать по имени.

Если у вас адин юзер - адын соединений, можно раздать всем статику, типа user1 - 10.0.0.1, user2 - 10.0.0.2 и т.д.

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

Давайте я еще раз попробую описать задачу. Есть около 500 устройств под управлением linux. Каждому устройству при сетапе задается имя вида ABCD1,ABCD2,ABCD3…которое маркером пишется на корпусе устройства. Их может быть потом 1000 или 10000 таких устройств, и каждый раз править статику на сервере не вариант, поэтому задача крайне проста - когда устройство подключается по l2tp/IPsec и получает по DHCP IP адрес, добавить запись hostname - ip adress в зоны локального DNS сервера. В обычной локальной сети это решает связка ISC DHCP + BIND с обновлением зон через rndc.key. Однако ISC DHCP не работает с PPP* интерфейсами. Отсюда вопрос - что использовать и куда копать, или писать скрипты самому вида: При подключении нового PPP соединения сходи по розданному IP, там выполни hostname, и запиши результат в файл зоны?

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

ну это же как мне казалось базовая задача линукс администрирования корпоративных сетей, когда к офисной сети подключается удаленная машина и становится полноценным участником сети. Неужели не существует каких-то стандартных решений как та же связка DHCP + BIND для локальных сетей?Просто такие скрипты это костыля и нагрузка на сервер, особенно если в день этих подключений\отключений происходит по 500 на дню, ибо конечные устройства мобильные и катаются в разных местах, то есть инет то есть то нет.

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

Похоже что так. Можно теперь для тупых? Где и как прописывать nsupdate для обновления зоны, для удаления записи при отключении клиента, как выглядит синтаксис, где и как в bind дописать ключ по которому происходит апдейт?

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

Galh
() автор топика

DHCP сервер ругается на интерфейс если в конфиге прописать ppp интерфейсы

К черту подробности. Написал бы просто «здрасьте, у меня чот не работает», а дальше мы сами.
Ну сделай, чтобы не ругался, например, не прописывай в конфиге ппп-интерфейсы, чо.

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 1)

Итак проблема решена!Оставлю здесь свое решение, для тех кто столкнется с подобной задачей. Как и предлагали камрады выше я сходил и почитал про nsupdate. В результате в скрипте на стороне клиента /etc/ppp/ip-up появилась секция обновления DNS:

HOST=$(hostname) //записываем имя хоста в переменную

echo «server 10.1.10.1» > /nsupdate //Объявляем сервер на котором нужно обновить зону

echo «zone local» >> /nsupdate //Объявляем зону

echo «class IN»>>/nsupdate //Объявляем класс записи

echo «update delete $HOST.local A» >> /nsupdate //удаляем предыдущую запись

echo «update add $HOST.local 86400 A $4» >> /nsupdate //добавляем новую

echo «send» >> /nsupdate //отправка созданного сообщения

nsupdate /nsupdate //делаем обновление зоны из созданного файла

Сохранение в файл мне показалось более оптимальным, т.к. данные из него могут пригодится для чего-то еще, а также можно запускать nsupdate отдельным скриптом. Для того чтобы все корректно сохранялось сначала файл нужно создать: nano /nsupdate Для того чтобы зоны обновлялись нормально без ключа нужно добавить в опции зоны в /etc/bind/named.conf.local опцию allow-update:

zone «local» { type master; file «/var/lib/bind/db.local»; allow-update {trusted; };

А в /etc/bind/named.conf.options соответственно добавить нужную сеть в trusted:

acl «trusted» { 10.1.0.0/20; 127.0.0.1; };

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

Единственная сложность которая может с этим возникнуть - написание IP в обратную сторону для PTR записей, но существует множество вариантов как это сделать.

Очевидный минус такого решения - при внезапном отключении клиента останется старая запись, но это вполне решаемо через TTL записи. В общем будем тестировать и смотреть дальше что из этого получится. Возможно достойным альтернативным решением SAMBA

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

А вы всегда такой душный, или нет возможности реализовать собственные комплексы нигде, кроме линукс форума?)) Критикуя - предлагай. Если это через жопу, то с огромным удовольствием увижу более элегантное решение и выслушаю критику предложенного варианта. А «жопа», извините, это не конструктивно )

Galh
() автор топика