- Выделение статических ip адресов клиентам OpenVPN
- Комментариев: 7
- Arch Linux
- #1 2015-02-21 08:49:27
- OpenVpn changes ipp.txt
- #2 2015-02-21 11:20:03
- Re: OpenVpn changes ipp.txt
- #3 2015-02-21 14:48:35
- Re: OpenVpn changes ipp.txt
- #4 2015-02-21 17:25:07
- Re: OpenVpn changes ipp.txt
- Слетает привязка IP-адреса в Openvpn, как исправить?
- Openvpn клиент не получает ip
Выделение статических ip адресов клиентам OpenVPN
Я уже не раз рассказывал как сконфигурировать собственный OpenVPN сервер. Пользователи подключаются по сертификатам и им динамически выдаются свободные ip-адреса из заданного диапазона. Встала задача выдавать некоторым клиентам постоянные ip-адреса, чтобы была возможность подключаться к ним тоже.
Собственно, решается это довольно просто, если знать как. В файл конфигурации сервера OpenVPN нужно добавить буквально пару строк:
- client-to-client — разрешаем клиентам видеть друг-друга в сети
- ifconfig-pool-persist ipp.txt — наличие этой строки указывает, что перед тем как выдать клиенту свободный адрес из пула, сервер должен свериться с файлом ipp.txt, в котором прописывается привязка имени пользователя к ip-адресу.
Файл ipp.txt должен иметь следующий формат:
username1, username2 и username3 соотвествуют именам выданных сертификатов пользователей.
Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.
Комментариев: 7
Это все хорошо и правильно. Только не забывайте, что перед редактированием ipp.txt надо остановить сервис service openvpn stop , а после редактирования не забыть service openvpn start. Попытка отредактировать при запущенном сервисе приводит к тому, что на экране все красиво, но после openvpn restart все возвращается на круги своя со старым ipp.txt. 🙂
Не работает почему-то. После включения сервера, он снова назначает адреса какие ему вдумается и перезаписывает ipp.txt, причем не теми адресами которые он назначил. В общем бред какой-то. в чем смысл тогда
Подтверждаю — не работает. OpenVPN 2.4.7. Присваивает адреса какие попало, явочным порядком. ipp.txt вообще вычищает, только название остается. Есть и другие способы зафиксировать адреса клиентов, и они точно так же не работают. Смиритесь. Что-то OpenVPN делает хорошо, а что-то он не будет делать никогда.
Вру. Всё-таки сработал способ через параметр
Объявляете эту директорию в конфиге сервера, а потому в эту директорию помещаете конфигурационные файлы клиентов. Но не те, которые на самих клиентах должны быть, а специальные. Например, имя файла «Client», расширения нет, внутри:
ifconfig-push 192.168.4.10 192.168.4.9
iroute 192.168.0.0 255.255.255.0
Имя файла совпадает с именем клиента, как указывал автор статьи. Ну и кладется этот файл в директорию, которую объявили в конфиге сервера. У меня не сразу, но сработало.
Источник
Arch Linux
You are not logged in.
#1 2015-02-21 08:49:27
OpenVpn changes ipp.txt
Hello, everyone!
My trouble is that OpenVPN makes randomly changes in file, where placed permanently ip addresses, e.g client foo has address 192.168.0.1, but after random time address changes to 192.168.0.2
I tried chattr +i, but this doesn’t help
if i edit this file when OpenVPN is running, then I stop it, file became modified.
This happens only when i use udp protocol, when i use tcp all was ok, but i think, tcp over tcp have large overhead, so i use udp.
Does not matter wired client or wireless, quality does not matter too, all machines affected by this.
Last edited by Trifon (2015-02-21 09:00:22)
#2 2015-02-21 11:20:03
Re: OpenVpn changes ipp.txt
I’m not sure if you’re supposed to use ipp.txt as some sort of editable configuration-file; it seems more like an internal state-file to me. How are the permissions on this file; and as what user is openVPN running?
#3 2015-02-21 14:48:35
Re: OpenVpn changes ipp.txt
yes, i suppose to use ipp.txt for ip address assignment.
there are answers to your questions:
$ ps aux | grep vpn
user 5741 0.0 0.1 8984 856 pts/0 S+ 17:42 0:00 grep —color=auto vpn
root 14009 0.3 1.2 25944 6132 ? Ss Feb20 4:28 /usr/sbin/openvpn —writepid /var/run/openvpn.openvpn.pid —daemon ovpn-openvpn —cd /etc/openvpn —config /etc/openvpn/openvpn.conf
user@foo:
$ ls -lah /etc/openvpn/ipp.txt
-rw-r—r— 1 root root 101 Feb 21 17:33 /etc/openvpn/ipp.txt
if i apply chattr +i command to ipp.txt, as expected nobody able to modify that file, even root, i checked this. But when attribute is applied, new connections receives addresses from begin, e.g .1.2, .1.3 e.t.c.
how can i make connection key address permanently? except switching to tcp?
As can i see it happens when connection is open, but physical link is terminated, then appears again, machine starts new connection, but server thinks that first connection is still open and assign new address to machine. is it really possible that OpenVPN assign multiple addresses to one key?
Last edited by Trifon (2015-02-21 15:00:44)
#4 2015-02-21 17:25:07
Re: OpenVpn changes ipp.txt
So did you pass 0 as ‘seconds’ to ifconfig-pool-persist as suggested in the man-page?
—ifconfig-pool-persist file [seconds]
Persist/unpersist ifconfig-pool data to file, at seconds intervals (default=600), as well as on program startup and shutdown.
The goal of this option is to provide a long-term association between clients (denoted by their common name) and the virtual IP address assigned to them from the ifconfig-pool. Maintaining a long-term association is good for clients because it allows them to effectively use the —persist-tun option.
file is a comma-delimited ASCII file, formatted as , .
If seconds = 0, file will be treated as read-only. This is useful if you would like to treat file as a configuration file.
Note that the entries in this file are treated by OpenVPN as suggestions only, based on past associations between a common name and IP address. They do not guarantee that the given common name will always receive the given IP address. If you want guaranteed assignment, use —ifconfig-push
Источник
Слетает привязка IP-адреса в Openvpn, как исправить?
Здравствуйте! Товарищ просит помощи, я ничего не понял.
Конфиг OpenVPN -сервера, работает под Windows Server 2012R2.
Файл ipp.txt примерно такой, там еще 15 филиалов
Проблема в том, что спустя какое-то время в этот файл в рандомное место (. ) дублируются те же филиалы, но с другими IP адресами, старые при этом не удаляются (. ). В итоге ломается весь обмен через веб-сервисы, потому что в главном координаторе прописаны адреса филиалов.
Конфиг клиента:
В чем может быть причина?
- Вопрос задан более трёх лет назад
- 2235 просмотров
На моей памяти ifconfig-pool-persist ipp.txt изначально задуман для того, чтобы раздавать айпишники из пула аналогично dhcp без обязательных привязок, и по истечению какого-то таймаута считает айпишник свободным и может его раздать.
Если вам именно статично назначать, может проще и лучше через ccd(client-config-dir) сделать отдельные статические настройки на каждого клиента — они точно не меняются софтом?
Либо если вам пул мил и дорог — у него есть третий параметр — число секунд. Ставите 0 — и openvpn не будет его обновлять.
Однако, в оф.мануале никто не гарантирует что openvpn обязан руководствоваться этим файлом, он их как предложения рассматривает.
Note that the entries in this file are treated by OpenVPN as suggestions only, based on past associations between a common name and IP address. They do not guarantee that the given common name will always receive the given IP address. If you want guaranteed assignment, use —ifconfig-push
Источник
Openvpn клиент не получает ip
Поднял я тут на одной машине openvpn server, а на другой клиента создаю.
Клиент успешно находит сервер, коннектится и его лог заканчивается следующим:
При этом на созданном интерфейсе не выставляется ip адрес:
Следует ли из лога, что клиент пытается вызвать настройку адреса?
Если после этого вручную повторить команду из лога, адрес настроится и все будет прекрасно работать:
Поскажите, на каком этапе ошибка? Настройки openvpn или действительно клиент не может вызвать ip addr? (Для тестов и сервер и клиент запускаются прямо от рута.)
Ругань у вас на
push «route 10.8.0.1 255.255.255.0»
В конфиге сервера не указаны server и remote endpoints
ifconfig 10.8.0.1 10.8.0.Х
кое чего переписал
Никакой ругани. Push приходит, настройки принимаются, устройство создается, а вот дальше. Эти строки говорят о том, что ip действительно вызывается? Мне кажется что нет, или оно вылетает с ошибкой.)
server 10.8.0.0 255.255.255.0
route 10.8.0.0 255.255.255.252
Ну так у вас заработало или нет?
Нет, пока не заработало.
Клиент по прежнему не получает адрес:
У меня сложилось дурацкое ощущение, что клиент не может вызвать утилиту ip, чтобы назначить самому себе адрес, ведь когда я ее вызову вручную по строчке из лога, все будет работать. Может ли такое быть и как это исправить?
Хотя при завершении клиента выдается следующее:
Т.е. клиент пытается удалить ранее не присвоенный адрес. Почемy он его не присваивает при старте?
Это было указание на ошибку в маске.
Странная ситуация, вроде все верно в настройках. Но не может ли быть это связано со всякими nm ? И другими selinux? Но это так пальцем в небо. Попробуйте вручную запустить ovpn
openvpn —daemon —config /path-to-config/configname
#openvpn /etc/openvpn/server/server.conf от рута.
Система archlinux armv7l на raspberry pi 3.
Я про клиента. Это же он не получает. Или это с клиента?
Система клиента: archlinux armv7l на raspberry pi 3.
Cистема сервера: archlinux x86_64
А что не так? Путем проб я понял что это не так важно, не ругается и ладно.
Никаких nm нет, система чистая, есть только systemd, да и то не решает, так как и сервер и клиент запускаю от рута прямо в консоли.
Совсем извращение. Как вариант у клиента в up(параметр в конфиге up /pathtoscript) скрипт прописать команду, и выхлоп в какой-нибудь лог перенаправить.
Ну вроде я только для теста как первый раз поставил и запускаю — и оп, вот эта ошибка. Попробовать что ли запустить косвенно? Вдруг ошибки не будет?
Ну как бэ сокращенная маска.
Попробовать что ли запустить косвенно?
Эмм не понял, что значит «запустить косвенно» ? То что я предложил? Тогда да, стоит попробовать.
ЗЫ Я конечно могу ошибаться в просмотре ваших выхлопов и что-то не заметить. Но в упор не вижу проблем.
Проблема в этом:
Странно все это.
Ну не хочет он запускать ip!
Разумеется, оно на месте:
Ничего не понял.
Ранее:
Mon Dec 10 18:04:12 2018 us=725496 /usr/bin/ip addr add dev tap1 10.8.0.2/24 broadcast 10.8.0.255
Mon Dec 10 21:48:14 2018 us=488430 /usr/bin/ip addr add dev tap0 10.8.0.2/30 broadcast 10.8.0.3
Сменили топологию? Да и еще интерфейс (имя)?
exec Зачем?
/usr/bin/ip addr add dev tap0 10.8.0.2/30 broadcast 10.8.0.3
Достаточно
Да и sh — это у вас sh там или симлинк ? Куда смотрит?
Все перемены из-за судорожных попыток найти ошибку. При этом каждый раз при ручном повторении команды из текущего лога — будет работать.
Exec? Не знаю, посмотрим без него.
Вручную по-прежнему работает.
Давайте последний вариант. Начнем «с чистого листа» разгребать.
С настройками openvpn как сервера так и клиента вроде бы все нормально.
RTNETLINK answers: File exists — эта фраза натолкнула меня на мысль, что дело в драйвере RapberryPi
If the solution provided by @theoB610 still doesn’t work, then you might have to flush the wlan0 device before ifup and ifdown.
sudo ip addr flush dev wlan0
This is a problem not too specific to Raspberry Pi, a similar problem occurred and was solved in wired networks in here (from where I derived the solution for my problem with the Pi).
Только как бы это поэлегантнее сделать? Опять через up.sh? но ведь он выполняется уже после штатной настройки ip.
Не похоже что оно. Скорее у вас сработало получение адреса автоматом в топологии net30, а потом и скрипт сработал. Вот от этого и ругань.
Еше раз повторю давайте, «с чистого листа». Покажите последние конфиги и логи.
Спасибо, давайте смотреть.
Взял ваши конфиги.
сервер: OpenVPN 2.3.17 x86_64-slackware-linux-gnu (не стал обновлять)
клиент: debian 9.6 OpenVPN 2.4.0 i686-pc-linux-gnu
Ключи оставил старые, я их создавал для других тестов.
У сервера убрал за ненадобностью
#route 10.8.0.0 255.255.255.252
tcp4 на tcp поменял (в 2.3.17 еще не было такого)
На клиенте
убрал
#remote-cert-tls server
убрал
скрипт up /etc/openvpn/client/abc.sh
добавил
tls-client
Все сцуко робит.
Еще вариант
Сервер: слака 14.2 (обновил ovpn)
Ну тоже все работает.
Ну, слава Б-гу! Значит я вчера правильно вышел — драйвер сетевой дурит в малинке (armv7l). Надо было раньше самому попробовать на десктоп (x86_64) перенести клиент, у меня archlinux как раз под рукой есть. Сейчас и попробую.
Да нет такого, даже на самых высоких verb level нет об этом данных. Получается что на малинке вновь созданный сетевой адаптер сразу какой-то загаженный, что его тут же чистить надо.
Про net30 забудем. Это вы маску поменяли, поэтому и подумал что оно.
Еще как вариант (пальцем в небо):
Добавить к конфиг клиента
route-delay 30
попробовать два варианта:
1. без up скрипта
2. с up скриптом
Но это честно говоря совсем на уровне «а что? а вдруг?» бывает нужно либо для оффтопика или в онтопике при выдаче адресов с dhcp сервера.
Выглядит как попытка «сэмулировать» поведение tun на tap. Цель конечная таких чесаний левой рукой правой пятки какая?
Вы о чем? Конечная цель выбрать конфигурацию и настроить сервер и N клиентов, видимых друг-другу в единой локальной сети, включая сервер.
Конкретный вопрос озвучен в начале темы — ни на tun ни на tap, вероятно, свежесозданный сетевой адаптер не дает возможности назначить ip, путем вызова соответствующей утилиты.
Попробовал, это не влияет.
Пока оставил так:
И я так понимаю работает?
Скрипт удалось сократить до
Таким образом, лог дефолта (ip не устанавливатся):
Лог случая со скриптом (ip корректно настроен):
Очищать адаптер не требуется, только выдержать паузу перед настройкой ip-адреса. ifconfig я выбрал, чтобы проще обойтись с аргументами (не пересчитывать маску).
opvn поднимал на разных дистрах, в разных конфигурациях, и в разное время, но с таким не сталкивался. Спасибо что отписали рабочее решение. В копилку.
А все таки, в чем же разница между тем, как
— клиент создает адаптер и сам вызывает ip link set , ip addr add
— клиент создает адаптер, выдеживает паузу и обращается через скрипт к ifconfig ?
К сожалению, не настолько «сварщик».
ЗЫ Пытаюсь вспомнить, может и слышал когда-то, нечто подобное связанное с таймаутом между созданием интерфейса tap и его поднятием, но с чем было связано и где, когда. никаких предположений.
А на чем? Я больше режимов openvpn не знаю.
В первом посте была явная дичь
Про удаление адреса — туда же.
По вопросу о разнице — она есть: ifconfig обычно все делал через ioctl, а ip все делает через netlink. Кто, где и сколько проверок выполняет (или не выполняет) ХЗ.
Смущает «up» в /usr/bin/ifconfig $1 $4 netmask $5 up . У ifconfig был полезный интеллект — если назначили адрес и маску, а устройство в «down»,то оно его само поднимало.
На мой непросвещенный взгляд порядок должен быть такой: сначала назначаем все параметры интерфейсу, потом поднимаем его.
Что мешает в начале скрипта посмотреть состояния интерфейса через «ip li show dev tap0» куда-нибудь в /tmp ? Может быть ларчик и открылся бы.
sleep 0.1 не должен на что-то повлиять.
Возможно «ip mo» запущенный на клиенте во время подъема ovpn может дать подсказки.
Источник