Я сделал, чтобы соединенный мостом OpenVPN установил. Это - моя конфигурация сервера:
port 1194
proto udp
dev tap0
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh2048.pem
# brtctl upscript
script-security 2
up /etc/openvpn/up.sh
tls-server
server-bridge
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
Сервер работает на машине Debian, работающей в сети A, клиент работает на маршрутизаторе OpenWRT в сети B. В сети A интерфейс tap0 соединяется мостом с локальной сетью, содержа сервер DHCP и шлюз к Интернету. В сети B интерфейс tap0 соединяется мостом с отдельной сетью без сервера DHCP или доступа в Интернет. Идея состоит в том, что туннель OpenVPN обеспечивает доступ в Интернет для сети B.
В этой установке сервер OpenVPN не выделяет IP-адреса для использования клиентами. Вместо этого это просто позволяет серверу DHCP в соглашении о локальной сети с этим. Это работает, потому что это - соединенный мостом (TAP), не направленный (БОЧКА) установка.
Так, DHCP действительно работает по туннелю. Клиенты на сетевой стороне B получают свои IP-адреса непосредственно от сервера DHCP на сетевой стороне A. Проблема состоит в том, что похоже, что шлюз по умолчанию разделяется от ответа DHCP, потому что это пусто на машинах в сети B.
Например, это - то, что я вхожу в клиент Windows, подключенный к сети B:
Ethernet adapter Ethernet:
DHCP Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IPv4 Address. . . . . . . . . . . : 192.168.2.123(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Lease Obtained. . . . . . . . . . : vrijdag 25 juli 2014 22:49:38
Lease Expires . . . . . . . . . . : zaterdag 26 juli 2014 10:49:38
Default Gateway . . . . . . . . . :
DHCP Server . . . . . . . . . . . : 192.168.2.1
DNS Servers . . . . . . . . . . . : 8.8.8.8
NetBIOS over Tcpip. . . . . . . . : Enabled
Я нашел это: https://community.openvpn.net/openvpn/ticket/312#comment:3
Это предполагает, что это - зарегистрированное поведение, но я не знаю, как отключить это. Я пытался использовать директиву route-nopull
на клиентском, но это, кажется, не имеет эффекта.
Кроме того, я не могу использовать redirect-gateway
директивы, так как я должен разобраться в шлюзе на машинах, соединенных мостом с tap0 адаптером клиента OpenVPN, не на клиенте OpenVPN самим.
Моя клиентская конфигурация следующим образом:
config openvpn sample_client
option enabled 1
option client 1
option dev tap
option proto udp
list remote "server.com 1194"
option resolv_retry infinite
option nobind 1
option persist_key 1
option persist_tun 1
option ca /etc/openvpn/ca.crt
option cert /etc/openvpn/client.crt
option key /etc/openvpn/client.key
option ns_cert_type server
option comp_lzo yes
option verb 3
option route-nopull 1
Следует иметь в виду, что это находится в формате OpenWRT UCI.
Править:
Просто найденный этим в журналах:
daemon.notice openvpn(sample_client)[5062]: Extracted DHCP router address: 192.168.2.1
Это - точно поведение, которое я хочу отключить.
Также найденный этим:
Если - мост сервера будет использоваться без каких-либо параметров, то он включит режим прокси DHCP, где соединение клиентов OpenVPN получит IP-адрес для их адаптера TAP с сервера DHCP, работающего на серверной стороне OpenVPN LAN. Обратите внимание, что только клиенты, которые поддерживают привязку клиента DHCP с адаптером TAP (таким как Windows) могут поддерживать этот режим. Дополнительный (усовершенствованный) флаг nogw указывает, что информация о шлюзе не должна быть продвинута клиенту.
Интересный. Я не установил nogw
. Это могло быть, это, неявно установлен или что-то? Я могу 'сбросить' его явно?
Править: Найденный этим: https://forums.openvpn.net/topic13494.html
Кто-то с той же проблемой, распараллельте по сравнению с предыдущим годом. Никакие ответы.
опции openvpn server-bridge используются для режима моста, у вас есть две опции используйте отдельный dhcp сервер или опцию server-bride
https://openvpn.net/index.php/open-source/documentation/miscellaneous/76-ethernet-bridging.html
Если у меня есть openvpn сервер в подсети 192.168.122.0/24, я могу использовать серверный мост таким образом
#ip of my vpn server 192.168.122.9
#vpn client ip pool
server-bridge 192.168.122.9 255.255.255.0 192.168.122.20 192.168.122.40
Таким образом, мой vpn клиент получает ip адрес в удаленной подсети без использования удаленного dhcp сервера
.Используйте это для DHCP через OpenVPN (в server.conf):
server-bridge 172.18.100.100 255.255.0.0 172.18.100.105 172.18.100.250
Где:
И вам это также понадобится в OpenVPN (server.conf):
push "route 172.18.0.0 255.255.0.0"
Вот и все. После этого, вам нужно будет переадресовать весь трафик через один шлюз (IP сервера) только в том случае, если вы хотите выйти из частной сети (на клиенте).
.Я сам столкнулся с этой проблемой и нашел ее без полезного решения. Через несколько часов я понял это!
Просто используйте это:
сервер в режиме
tls-server
и удалите:
server-bridge
И DHCP перейдет непосредственно к клиент!
Согласно документации OpenVPN
server-bridge
является сокращенным выражением для
mode server
tls-server
push "route-gateway dhcp"
и
server-bridge nogw
является сокращенным выражением для
mode server
tls-server
Интересно push "route -gateway dhcp "
активирует DHCP-прокси, который удаляет параметр шлюза по умолчанию в ответе DHCP от исходного DHCP-сервера. Это можно увидеть в журнале OpenVPN
daemon.notice openvpn [4879]: Извлеченный адрес DHCP-маршрутизатора: abcd
Решением будет использование server-bridge nogw , а ответ DHCP будет содержать значение по умолчанию. снова вариант маршрута.