Категорії
Security

openvpn: каждому клиенту свой IP

Хочу рассказать об одной возможности openvpn’a, а именно о возможности назначения определённым клиентам свой IP. Делается это с помощью опции конфига

client-config-dir PATH_TO_DIR

где PATH_TO_DIR путь к папке, где храняться настройки для клиентов.

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

В этой же статье мы поговорим лишь о назначении конкретного IP-адреса. И так, создаём папку, указанную в конфиге сервера (PATH_TO_DIR). Здесь очень важно выставить права на папку. Обычно, сервер openvpn запускается от имени юзера nobody. А директория с конфигом сервера имеет права 0600 и владельцем root:wheel, поэтому, юзеру nobody в эту папку недостучаться. В связи с этим, папку можно создать, например, в /usr/local/etc и назвать её ccd. Права здесь нужно выставить такие, что бы юзер nobody мог к ней достучаться, а так же к файлам в ней. Обычно хватает 0755. Владелец при таких разрешениях неважен.

В этой папку создаём файл с именем клиента и такой строчкой в нём:

ifconfig-push 10.0.11.101 10.0.11.102

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

Wed Aug 26 11:44:31 2009 client_vpn/120.120.120.120:4739 OPTIONS IMPORT: reading client specific options from: /usr/local/etc/ccd/client_vpn
Wed Aug 26 11:44:31 2009 client_vpn/120.120.120.120:4739 MULTI: Learn:10.0.11.101 -> client_vpn/120.120.120.120:4739
Wed Aug 26 11:44:31 2009 client_vpn/120.120.120.120:4739 MULTI: primary virtual IP for client_vpn/120.120.120.120:4739: 10.0.11.101
Wed Aug 26 11:44:32 2009 client_vpn/120.120.120.120:4739 SENT CONTROL : 'PUSH_REPLY,route 10.0.11.0 255.255.255.0,route 10.0.10.0 255.255.255.0,dhcp-option DNS 10.0.10.1,redirect-gateway,route 10.0.11.0 255.255.255.0,ping 10,ping-restart 120,ifconfig 10.0.11.101 10.0.11.102' (status=1)

 

Жирным отчётливо видим, что клиенту выдался нужный IP.

Примечание.

В openvpn нельзя просто так назначать какие захочешь адреса. В openvpn адреса разбиты на подсети из 4-ох адресов: network, IP, gateway, broadcast. Поэтому, что бы знать, какие адреса можно было бы выделять, а какие нельзя, приведу таблицу, которая разбита на пары, которые можно выделять клиентам. Первый IP – это выделяемый адрес, второй – это адрес шлюза. В конфиге так и писать (сначала идёт меньший адрес, потом больший):

[  1,  2] [  5,  6] [  9, 10] [ 13, 14] [ 17, 18]
[ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38]
[ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58]
[ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78]
[ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98]
[101,102] [105,106] [109,110] [113,114] [117,118]
[121,122] [125,126] [129,130] [133,134] [137,138]
[141,142] [145,146] [149,150] [153,154] [157,158]
[161,162] [165,166] [169,170] [173,174] [177,178]
[181,182] [185,186] [189,190] [193,194] [197,198]
[201,202] [205,206] [209,210] [213,214] [217,218]
[221,222] [225,226] [229,230] [233,234] [237,238]
[241,242] [245,246] [249,250] [253,254]

2 коментарі “openvpn: каждому клиенту свой IP”

Брать больше диапазон, например, /23 или /22. Или использовать topology subnet

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff