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

Два IP-адреса - один экземпляр OpenVPN, невозможно?

У меня есть debian 64bit vps, OpenVZ, с отлично работающим сервером openvpn.

У меня есть ДОПОЛНИТЕЛЬНЫЙ IP-адрес, который я хочу использовать на том же сервере openvpn, и я не могу заставить его работать. Это работает, только если я укажу директиву local ADDITIONAL-IP в openvpn.conf, но тогда первый IP не работает. Если я дважды укажу директиву local, ни одна из них не сработает.

root@deal1:/etc/openvpn# ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:12 errors:0 dropped:0 overruns:0 frame:0 TX packets:12 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1338 (1.3 KiB) TX bytes:1338 (1.3 KiB)

tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.186.35.1 P-t-P:10.186.35.2 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

tun1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.186.36.1 P-t-P:10.186.36.2 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:127.0.0.2 P-t-P:127.0.0.2 Bcast:0.0.0.0 Mask:255.255.255.255 inet6 addr: 2607:ff28:0:12::c4e:18e5/128 Scope:Global inet6 addr: 2607:ff28:0:12::2ad7:f2b1/128 Scope:Global inet6 addr: 2607:ff28:0:12::86d5:56d4/128 Scope:Global inet6 addr: 2607:ff28:0:12::9d21:aba3/128 Scope:Global UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1 RX packets:38904 errors:0 dropped:0 overruns:0 frame:0 TX packets:20408 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:53671396 (51.1 MiB) TX bytes:1712747 (1.6 MiB)

venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:X.2.39.161 P-t-P:X.2.39.161 Bcast:0.0.0.0 Mask:255.255.255.255 UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1

venet0:5 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:X.2.39.162 P-t-P:X.2.39.162 Bcast:0.0.0.0 Mask:255.255.255.255 UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1

iptables:

-A POSTROUTING -s 10.186.35.0/24 -j SNAT --to-source X.2.39.161   
-A POSTROUTING -s 10.186.35.0/24 -j SNAT --to-source X.2.39.162

Конфигурация openvpn:

server 10.186.35.0 255.255.255.0
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
ifconfig-pool-persist ipp.txt
#push "route 0.0.0.0 0.0.0.0"
#push "redirect-gateway"
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.220.220"
push "dhcp-option DNS 208.67.222.222"
keepalive 10 120
comp-lzo
user nobody
group users
persist-key
persist-tun
status openvpn-status.log
verb 3
script-security 3
auth-user-pass-verify /etc/openvpn/auth-chap via-env
client-cert-not-required
duplicate-cn
management 127.0.0.1 51194

Есть идеи, что мне не хватает? Я пробовал довольно много вещей и много искал, в Интернете для Google просто нет решения.

человек openvpn:

--местный
host Имя локального хоста или IP-адрес для привязки. Если указано, OpenVPN будет привязываться только к этому адресу. Если не указано иное, OpenVPN будет связываться со всеми интерфейсами.

Итак, если вы не укажете никакой «локальной» директивы, сервер openvpn будет прослушивать все интерфейсы. Вы можете проверить это с помощью netstat -nlp. Вы должны увидеть что-то вроде:

UDP 0 0 0.0.0.0:1194 0.0.0.0:* СЛУШАТЬ 2005 / openvpn

Измените протокол на tcp и попробуйте подключиться к порту 1194 для обоих адресов. Если у вас есть проблемы, ошибка где-то в правилах маршрутизации.

Вам нужен --multihome вариант.

Не использовать --local потому что это несовместимо с многодомной ситуацией.

Кроме того, вы должны быть на 100% уверены, что ваша таблица маршрутизации подходит для установки с несколькими домами. Пользователи Linux должны проверить детали своего дистрибутива, в частности:

/sbin/ip rule list

Вы должны увидеть хотя бы одно правило для каждого конкретного IP-адреса, к которому могут подключаться ваши клиенты. Если все правила «от всех» и в качестве таблиц маршрутизации у вас есть только local, main, default, этого недостаточно.