У меня 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