Изменение пула openvpn dhcp

У меня есть конфиг на данный момент, который работает почти нормально, пока некоторые клиенты не подключаются, сервер начинает выгружать клиентов с сервера или что-то в этом роде. Как я уже проверил, все клиенты получают хороший IP-адрес, и нет конфликта IP-адресов. Клиенты используют разные сертификаты для подключения. Однако я хочу изменить этот конфиг, чтобы отделить диапазон DHCP.

Текущая конфигурация сервера такова:

port 1194
proto udp

dev tun

ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh2048.pem

server 10.8.0.0 255.255.255.0
topology subnet

push "route 10.8.0.1 255.255.255.0"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

ifconfig-pool-persist ipp.txt

client-config-dir /etc/openvpn/ccd

client-to-client

keepalive 10 300
comp-lzo
user nobody
group nobody

persist-key
persist-tun

status /etc/openvpn/openvpn-status.log
verb 6

Я хотел бы иметь динамические IP-адреса из этого диапазона:
10.8.1.0 - 10.8.1.254

Для этого я хотел бы использовать /23, поэтому 255.255.254.0

И я назначу статические IP-адреса из этого диапазона:
10.8.0.3 - 10.8.1.255, поскольку 0.1 и 0.2 могут быть назначены серверу.

Я буду использовать это для отправки клиенту статического IP:

ifconfig-push 10.8.0.5 255.255.254.0

Не могли бы вы помочь мне изменить мой конфиг для достижения этой цели?

Итак, разделите мой диапазон 10.8.0.0-10.8.1.255 на два:

  • Статические IP-адреса: 10.8.0.4-10.8.0.255
  • Динамические IP-адреса: 10.8.1.0-10.8.1.254

У меня тоже будут клиенты для Linux и Windows.

1 ответ

Решение

ОК, наконец, это решено с некоторыми изменениями в файле конфигурации:

port 1194
proto udp
dev tun

ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh2048.pem

mode server
tls-server
topology subnet
push "topology subnet"
ifconfig 10.8.0.1 255.255.254.0
ifconfig-pool 10.8.1.0 10.8.1.253
route-gateway 10.8.0.1
push "route-gateway 10.8.0.1"

client-config-dir /etc/openvpn/ccd

push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

client-to-client

keepalive 10 300
comp-lzo

user nobody
group nobody
persist-key
persist-tun

status /etc/openvpn/openvpn-status.log
verb 6

Чтобы воспользоваться ответом Золтана Сабо и выполнить пояснения, запрошенные в комментариях, вот мой вариант ответа.

Как изменить пул адресов DHCP?

Перво-наперво, ответ на первоначальный вопрос. Наверное, что-то вроде server 10.8.0.0 255.255.255.0в вашем конфиге. Эта директива автоматически выделяет пул DHCP с ifconfig-pool 10.8.0.4 10.8.0.251. Если вы попытаетесь указать ifconfig-pool сами, OpenVPN будет жаловаться, что вы не можете использовать server и ifconfig-poolвсе вместе. Теперь есть два способа настроить пул адресов DHCP.

а) Используйте nopool

Существует возможность заставить OpenVPN не выделять пул адресов DHCP. Просто добавьте nopool в конце директивы сервера, и вы можете указать пул самостоятельно.

server 10.8.0.0 255.255.255.0 nopool
ifconfig-pool 10.8.0.100 10.8.0.200

б) Объявите и настройте расширенный server руководить собой

Это решение использовалось Золтаном, и оно немного сложнее, но позвольте вам настроить больше аспектов сервера. В руководстве OpenVPN показано, как serverдиректива расширена. Исходя из этого, вы можете самостоятельно заявить обо всех необходимых вариантах. Это сильно зависит от топологии, и если вы используете dev tun или же dev tap.

Я просто добавляю пример, основанный на конфигурации в вопросе (topology subnet и dev tun).

mode server
tls-server
push "topology subnet"
ifconfig 10.8.0.1 255.255.255.0
ifconfig-pool 10.8.0.2 10.8.0.253 255.255.255.0
push "route-gateway 10.8.0.1"
route-gateway 10.8.0.1

См. Примечания ниже и руководство для получения дополнительной информации.

Как назначить клиенту статический IP-адрес?

Вторая часть вопроса касалась назначения статических IP-адресов. Похоже, ОП понял, что один из, и уже есть много из ресурсов по этой теме в Интернете. Тем не менее, я хотел бы добавить небольшой абзац о назначении статических IP-адресов определенным клиентам.

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

Добавьте это в конфигурацию вашего сервера OpenVPN:

client-config-dir /etc/openvpn/ccd

Если вы хотите, например, назначить IP 10.8.0.5 клиенту с общим именем client1, создайте файл /etc/openvpn/ccd/client1 с этим контентом (примечание: это для topology subnet):

ifconfig-push 10.8.0.5 255.255.255.0

Также сохраните примечание в руководстве OpenVPN о ifconfig-pushв уме. Я не мог найти route в конфигурации, которую Золтан опубликовал в своем ответе.

Не забудьте также включить директиву --route в основной файл конфигурации OpenVPN, который включает локальный файл, чтобы ядро ​​знало, как направить его на интерфейс TUN/TAP сервера.

Ноты

На всякий случай, это раздел в руководстве OpenVPN о расширении директивы сервера.

Например, --server 10.8.0.0 255.255.255.0 расширяется следующим образом:

mode server
tls-server
push "topology [topology]"
if dev tun AND (topology == net30 OR topology == p2p):
  ifconfig 10.8.0.1 10.8.0.2
  if !nopool:
    ifconfig-pool 10.8.0.4 10.8.0.251
  route 10.8.0.0 255.255.255.0
  if client-to-client:
    push "route 10.8.0.0 255.255.255.0"
  else if topology == net30:
    push "route 10.8.0.1"

if dev tap OR (dev tun AND topology == subnet):
  ifconfig 10.8.0.1 255.255.255.0
  if !nopool:
    ifconfig-pool 10.8.0.2 10.8.0.253 255.255.255.0
  push "route-gateway 10.8.0.1"
  if route-gateway unset:
    route-gateway 10.8.0.2
Другие вопросы по тегам