LINUX.ORG.RU
ФорумAdmin

Несколько подключений OpenVPN на Ubuntu.

 


0

1

В общем, возникла задача организовать несколько клиентов OpenVPN работающие параллельно. Опыта у меня не так много, поэтому тема мне не помогла.

Конфиг первого соединения:

client

#connect to VPN server
remote XX.XX.XX.XX 443
proto tcp

#DNS server to use
dhcp-option DNS 8.8.8.8

#remove to use your ISP's gateway
redirect-gateway def1

#your access keys
ca /etc/openvpn/first_ca.crt
cert /etc/openvpn/first.crt
key /etc/openvpn/first.key
ns-cert-type server

#use virtual interface 'tap'
dev tap

#keep trying indefinitely to resolve the host name of the OpenVPN server.
resolv-retry infinite

#most clients don't need to bind to a specific local port number.
nobind

#try to preserve some state across restarts
persist-key
persist-tun

#enable compression on the VPN link
comp-lzo

#set log file verbosity.
verb 4

#silence repeating messages
mute 20

Конфиг первого соединения:

client

#connect to VPN server
remote YY.YY.YY.YY 443
proto tcp

#DNS server to use
dhcp-option DNS 8.8.8.8

#remove to use your ISP's gateway
redirect-gateway def1

#your access keys
ca /etc/openvpn/second_ca.crt
cert /etc/openvpn/second.crt
key /etc/openvpn/second.key
ns-cert-type server

#use virtual interface 'tap'
dev tap

#keep trying indefinitely to resolve the host name of the OpenVPN server.
resolv-retry infinite

#most clients don't need to bind to a specific local port number.
nobind

#try to preserve some state across restarts
persist-key
persist-tun

#enable compression on the VPN link
comp-lzo

#set log file verbosity.
verb 4

#silence repeating messages
mute 20

Первое соединение запускается без проблем, а вот при запуске второго командой

openvpn --config client2.ovpn --writepid /var/run/openvpn/client2.pid

в консоле проскакивает следующее:

Fri Nov 14 04:08:42 2014 us=513310 ERROR: Linux route add command failed: external program exited with error status: 2 Fri Nov 14 04:08:42 2014 us=514053 Initialization Sequence Completed

Fri Nov 14 04:08:42 2014 us=499865 /sbin/ip addr add dev tap1 10.113.196.181/11 broadcast 10.127.255.255 Fri Nov 14 04:08:42 2014 us=503509 /sbin/ip route add 185.29.8.155/32 via 192.168.9.2 Fri Nov 14 04:08:42 2014 us=507119 /sbin/ip route add 0.0.0.0/1 via 10.113.192.1 RTNETLINK answers: File exists

Причём, если второе соединение будет UDP (порт 1194), то всё равно не поднимется. Как собственно правильно поднимать последующие соединения? Заранее благодарен за помощь.

$EDITOR /etc/default/openvpn

Указываешь, какие именно конфиги стартовать (или all, если все).

И man LORCODE, если хочешь, чтобы твои логи кто-то захотел прочитать.

dhameoelin ★★★★★ ()

Предполагаю, что ты от юзера запускаешь

minakov ★★★★★ ()

redirect-gateway def1

Эта штука емнип правит таблицу маршруторизации так, чтобы весь траффик шёл через vpn. При запуске второго этот трюк видимо уже не проходит. О чём нам собственно и говорит лог. Кто первый встал, того и тапки.

Надо эту строчку выкинуть хотя бы из одного файла и прописать вместо неё конкретные маршруты.

anonymous ()
Ответ на: комментарий от anonymous

Надо эту строчку выкинуть хотя бы из одного файла и прописать вместо неё конкретные маршруты.

Вернее, эта строчка может быть максимум в одном файле.

anonymous ()

/sbin/ip route add 0.0.0.0/1 via 10.113.192.1 RTNETLINK answers: File exists

маршрут по умолчанию может быть только 1... Если метрики не использовать...

fjfalcon ★★★ ()
Ответ на: комментарий от fjfalcon

маршрут по умолчанию может быть только 1... Если метрики не использовать...

0.0.0.0/1 - это не маршрут по умолчанию. Но таки действительно нельзя просто взять и сделать два одинаковых маршрута. Капитан.

anonymous ()
Ответ на: комментарий от anonymous

Убрал строки из обоих конфигов - поднялись оба подключения. Интерфейс tap0 получает IP 10.113.196.192, а интерфейс tap1 получает IP 10.102.184.92. Пишу

wget -qO- http://checkip.dyndns.com/ --bind-address 10.113.196.192 wget -qO- http://checkip.dyndns.com/ --bind-address 10.102.184.92

Но пишет, что у меня IP от интерфейса eth0. Как сделать так, чтобы можно было, указывая интерфейс, выходить в инет через него?

KY1VSTAR ()
Ответ на: комментарий от KY1VSTAR

Но пишет, что у меня IP от интерфейса eth0.

Потому что маршрут до dyndns один и идёт он через eth0.

Как сделать так, чтобы можно было, указывая интерфейс, выходить в инет через него?

А фиг его знает. Есть идея, что можно сделать две дополнительные таблицы маршруторизации, в них прописать дефолтный маршрут через tap0 и tap1. В ip rule добавить правила, если from 10.113.196.192 использовать первую таблицу, если from 10.102.184.92 то вторую. Может взлетит.

http://linux-ip.net/html/routing-tables.html

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.