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

Как протолкнуть маршрут через tap0

Мне нужно отправить дополнительные маршруты моим клиентам OpenVPN. Я пытался сделать это в конфигурации сервера через

push "route 10.10.10.0 255.255.255.0"

ожидая получить от клиента маршрут через tap0. Вместо этого я получил ошибку при запуске:

Fri Jul 15 10:58:24 2016 ERROR: Linux route add command failed: external program exited with error status: 2
Fri Jul 15 10:58:24 2016 /sbin/ip route add 10.10.10.0/24 via 10.20.1.0
RTNETLINK answers: Invalid argument

IP-адрес, присвоенный tap0 является 10.01.10.1, шлюз (на другой стороне туннеля) 10.10.10.254. Следовательно, этот запрос маршрута неверен, он должен был быть

/sbin/ip route add 10.10.10.0/24 via tap0

или

/sbin/ip route add 10.10.10.0/24 via 10.10.10.1

Вопрос 1: как было 10.20.1.0 рассчитано? Могу ли я повлиять на этот расчет?

Я мог бы использовать в файле конфигурации

push "route 10.10.10.0 255.255.255.0 10.10.10.1"

(это работает) но я могу не знать, что 10.10.10.1 это правильный IP. Однако я знаю, что правильное устройство будет tap0.

Вопрос 2: есть ли способ повлиять на ip команда запущена во время инициализации клиента и передать устройство (tap0 в моем случае) к команде?


Обратите внимание, что порты на клиенте и на сервере разные - это нормально, они DNAT

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

port 1194
proto udp
dev tap0
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key  # This file should be kept secret
dh /etc/openvpn/dh2048.pem
topology subnet
server-bridge 10.20.1.0 255.255.255.0 10.20.1.2 10.20.1.200
client-config-dir /etc/openvpn/static
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
duplicate-cn
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3

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

client
dev tap
proto udp
remote myserver.example.com 1195
resolv-retry infinite
ping-restart 15
nobind
persist-key
persist-tun
remote-cert-tls server
comp-lzo
verb 3
<ca>
-----BEGIN CERTIFICATE-----
MIIEgDCCA2igAwIBAgIJAN68kwhTAMwRMA0GCSqGSIb3DQEBCwUAMIGGMQswCQYD
(...)
b4yiCAmaA8p5JRYqYBiT/fUNX6akBik2M8unm+okpdkfrP6gtzGNqv9S8cwEv0b8
p20oZw==
-----END CERTIFICATE-----
</ca>
<cert>
Certificate:
    Data:
(...)
tQTcGs5BiRmx9FcRcD7MIVO9bq1rso8T7UO5rTUilBkdo9r+QVuzwFFOSMuwrUBX
l8RQ8Q==
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCYerZMSOsMjMVV
(...)
T76lH6/nsJMaRzYUBmEZU8g=
-----END PRIVATE KEY-----
</key>