Назад | Перейти на главную страницу

OpenVPN не может связаться с другими клиентами, ответы arp отправляются клиенту, а не серверу

У меня OpenVPN настроен на трех виртуальных машинах VirtualBox под управлением Ubuntu 16.04.

Конфигурация сети следующая: изображение конфигурации сети.

Конфигурация сервера:

local 192.168.2.2
port 1194
proto udp
dev tap0

ca ca.crt
cert server.crt
key server.key
dh dh2048.pem

ifconfig-pool-persist ipp.txt

server-bridge 192.168.0.2 255.255.255.0 192.168.0.50 192.168.0.100
client-to-client

keepalive 10 20
cipher AES-128-CBC
comp-lzo

persist-key
persist-tun
verb 3

Конфигурация клиента:

client
dev tap
proto udp

remote 192.168.2.2 1194
resolv-retry infinite

nobind
persist-key
persist-tun

ca ca.crt
cert client1.crt
key client1.key

cipher AES-128-CBC
comp-lzo
verb 3

Я использую сценарии bridge-start и bridge-stop, которые поставляются с OpenVPN, чтобы использовать мост. Подключение открывается без проблем. Я могу пинговать клиентов с сервера и сервер с клиентов. Проблема в том, что я не могу пинговать клиент-клиент, например. ping от удаленного клиента (lab3) к другому клиенту (lab2) просто получает From 192.168.0.50 icmp_seq=1 Destination Host Unreachable.

Похоже, проблема связана с ARP, потому что когда я tcpdump на br0 на сервере, я вижу, что есть вопрос ARP, Request who-has 192.168.0.1 tell 192.168.0.50, length 28. Затем на клиенте (lab2) я вижу:

ARP, Request who-has 192.168.0.1 tell 192.168.0.50, length 46
ARP, Reply 192.168.0.1 is-at 08:00:27:c8:1c:c7, length 28

Но ответы, похоже, не доходят ни до одной машины.

Когда соединение OpenVPN открыто, таблица маршрутизации кажется правильной:

Сервер:

default via 10.0.2.1 dev enp0s3 
10.0.2.0/24 dev enp0s3  proto kernel  scope link  src 10.0.2.4 
192.168.0.0/24 dev br0  proto kernel  scope link  src 192.168.0.2 
192.168.2.0/24 dev enp0s9  scope link 
192.168.2.0/24 dev enp0s9  proto kernel  scope link  src 192.168.2.2

Клиент:

default via 10.0.2.1 dev enp0s3 
10.0.2.0/24 dev enp0s3  proto kernel  scope link  src 10.0.2.7 
192.168.0.0/24 dev enp0s8  proto kernel  scope link  src 192.168.0.1 

Удаленный клиент:

default via 10.0.2.1 dev enp0s3 
10.0.2.0/24 dev enp0s3  proto kernel  scope link  src 10.0.2.6 
192.168.0.0/24 dev tap0  proto kernel  scope link  src 192.168.0.50 
192.168.2.0/24 dev enp0s8  proto kernel  scope link  src 192.168.2.1 

Есть идеи, как передать сообщения между двумя клиентами? Я что-то делаю не так или что-то не хватает в конфигурациях?

Это было решено путем установки сетевого адаптера GW, подключенного к сети 192.168.0.0/24, в беспорядочный режим в настройках VirtualBox, поэтому интерфейс, который выполняет мостовое соединение, находится в беспорядочном режиме. В общем, нигде четко не упоминается, что VirtualBox нужен неразборчивый режим для правильного подключения, но, по крайней мере, я могу упомянуть об этом здесь!

Вы должны убедиться, что на вашем VPN-сервере включена пересылка ipv4:

cat /proc/sys/net/ipv4/ip_forward

1 = включено, 0 = отключено

включить его с помощью:

echo 1 > /proc/sys/net/ipv4/ip_forward

Чтобы этот параметр сохранился после перезагрузки, убедитесь, что в /etc/sysctl.conf есть следующая строка:

net.ipv4.ip_forward = 1