Изменение пула 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