На данный момент у меня есть конфигурация, которая работает почти нормально, пока не подключатся некоторые клиенты, сервер не начнет выгружать клиентов с сервера или что-то в этом роде. Как я проверил, все клиенты получают хороший 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 на два:
У меня тоже будут клиенты для Linux и Windows.
Хорошо, наконец, это решено с некоторыми изменениями в файле конфигурации:
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
Чтобы воспользоваться ответом Золтана Сабо и выполнить пояснения, запрошенные в комментариях, вот мой вариант ответа.
Перво-наперво, ответ на первоначальный вопрос. Наверное, что-то вроде 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.
Существует возможность заставить 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-адресов. Кажется, что OP понял, что один, и уже есть много из Ресурсы об этой теме в интернете. Тем не менее, я хотел бы добавить небольшой абзац о назначении статических 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, который включает в себя local, чтобы ядро знало, как направить его на интерфейс 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