Мне удалось настроить сервер OpenVPN с несколькими клиентами, использующими статические IP-адреса, статический IP-адрес устанавливается путем добавления строки, как ifconfig-push 192.168.254.6 192.168.255.1
в ccd для каждого из клиентов. Я могу пинговать или ssh с сервера к каждому из этих клиентов. В конфигурации моего сервера у меня есть следующие строки (среди других конфигураций):
server 192.168.255.0 255.255.255.0
и
route 192.168.254.0 255.255.255.0
Теперь то, что я пытаюсь сделать, это иметь возможность ssh или curl с одного клиента на другой, поэтому после прочтения документации я добавил строку client-to-client
в конфигурацию. Я заметил, что при перезапуске серверов и повторном подключении клиентов он добавляет следующую строку к ip route
моим клиентам:
192.168.255.0/24 via 192.168.255.1 dev tun0
Что я, кажется, понимаю, что это указывает клиенту, что каждый адрес, как 192.168.255.X
бы идет на VPN-сервер. И на самом деле, я попытался проверить, запустив traceroute 192.168.255.30
и получив:
traceroute to 192.168.255.30 (192.168.255.30), 30 hops max, 60 byte packets
1 192.168.255.1 (192.168.255.1) 11.454 ms 14.491 ms 14.493 ms
Однако другие клиенты, к которым я хочу подключиться, имеют адреса типа 192.168.254.X
так что, полагаю, я что-то упускаю и на самом деле не знаю, что именно. Я попробовал вручную добавить этот маршрут:
ip route add 192.168.254.0/24 via 192.168.255.1 dev tun0
Что для меня означало бы, что также адреса типа 192.168.254.X проходят через VPN-сервер. Но если я это сделаю, traceroute 192.168.254.30
результаты будут другими:
traceroute 192.168.254.30
traceroute to 192.168.254.30 (192.168.254.30), 30 hops max, 60 byte packets
Также с клиентской машины я могу, ping 192.168.255.1
но не могу пинговать других клиентов в диапазоне 254, например ping 192.168.254.30
.
Мои познания в области сетей весьма ограничены. Чего не хватает, чтобы позволить одному клиенту 192.168.254.30
получать доступ к службам другого клиента, например192.168.254.32
Обновлять:Я подключил нового клиента к vpn, на этот раз назначив в ccd-файле ip в диапазоне 192.168.255.X, а затем попытался запустить traceroute с клиента, с которым я тестировал. Я также не могу подключиться к этому клиенту в диапазоне 255, более того, если я запускаю traceroute, происходит следующее.
Этот новый клиент имеет 192.168.255.22
, если в моем тестовом клиенте я traceroute 192.168.255.3
получаю:
traceroute to 192.168.255.3 (192.168.255.3), 30 hops max, 60 byte packets
1 192.168.255.1 (192.168.255.1) 11.481 ms 21.192 ms 21.472 ms
То же самое происходит для IP-адресов 4, 5, 6..., у которых нет клиентов, пока я не доберусь до 22
IP-адреса нового клиента. В этом случае, когда я это сделаю, traceroute 192.168.255.22
я получу:
traceroute to 192.168.255.22 (192.168.255.22), 30 hops max, 60 byte packets
Почему это происходит?
решение1
Похоже, вы пытаетесь направить трафик между разными подсетями через сервер OpenVPN. Это возможно, но вам нужно будет внести некоторые дополнительные изменения в конфигурацию OpenVPN.
Первое, что следует отметить, это то, что server
директива в вашем файле конфигурации OpenVPN определяет подсеть, которую будет использовать сам сервер. В вашем случае сервер будет использовать подсеть 192.168.255.0/24
. Это означает, что клиентам будут назначены IP-адреса в 192.168.255.X
диапазоне.
Директива route
, с другой стороны, определяет маршрут для трафика от клиентов OpenVPN в определенную подсеть. В вашем случае директива route
сообщает серверу OpenVPN, что трафик от клиентов должен быть направлен в 192.168.254.0/24
подсеть.
Однако этого недостаточно, чтобы позволить клиентам общаться друг с другом через разные подсети. Вам также нужно будет добавить push
директиву в файл конфигурации сервера OpenVPN. Эта директива сообщает серверу OpenVPN о необходимости отправлять маршруты клиентам, чтобы они знали, как направлять трафик в другие подсети.
Вот пример того, как может выглядеть директива push в вашем файле конфигурации:
push "route 192.168.254.0 255.255.255.0"
Эта директива сообщает серверу OpenVPN о необходимости проложить маршрут клиентам, указав им направлять трафик в 192.168.254.0/24
подсеть через сервер OpenVPN.
Вам также нужно убедиться, что client-to-client
директива включена в конфигурации вашего сервера. Эта директива сообщает серверу OpenVPN, что клиенты должны общаться друг с другом напрямую, без маршрутизации их трафика через сервер.
После внесения этих изменений в конфигурацию вы сможете подключать своих клиентов к серверу OpenVPN и взаимодействовать друг с другом через разные подсети.
Стоит отметить, что client-to-client
директива позволяет клиентам общаться друг с другом, только если они используют одну и ту же подсеть. Например, если у клиента есть IP-адрес в диапазоне 192.168.255.X
, он сможет общаться только с другими клиентами, у которых также есть IP-адреса в этом 192.168.255.X
диапазоне. Чтобы клиенты в разных подсетях могли общаться друг с другом, вам нужно будет использовать директиву push, как описано выше.