Ниже представлена топология моей сети openVPN. Это пример из кулинарной книги openvpn. вот мой файл конфигурации сервера (Fedora - это сервер):
proto udp
port 1194
dev tun
server 192.168.200.0 255.255.255.0
ca /etc/openvpn/cookbook/ca.crt
cert /etc/openvpn/cookbook/openvpnserver.crt
key /etc/openvpn/cookbook/openvpnserver.key
dh /etc/openvpn/cookbook/dh2048.pem
tls-auth /etc/openvpn/cookbook/ta.key 0
keepalive 10 60
push "route 192.168.4.0 255.255.255.0"
topology subnet
daemon
log-append /home/mazimi/Desktop/openvpn.log
client-config-dir /etc/openvpn/cookbook/clients
route 192.168.2.0 255.255.255.0 192.168.200.1
Вот это /etc/openvpn/cookbook/clients
файл:
iroute 192.168.2.0 255.255.255.0
Это мой клиент openvpn (ubuntu):
client
proto udp
remote 192.168.3.1
port 1194
dev tun
ca /etc/openvpn/cookbook/ca.crt
cert /etc/openvpn/cookbook/client1.crt
key /etc/openvpn/cookbook/client1.key
tls-auth /etc/openvpn/cookbook/ta.key 1
daemon
log-append /root/openvpn.log
ns-cert-type server
Эта конфигурация работает нормально. Но почему для следующего перехода установлено значение 192.168.200.1? (Это локальный интерфейс, а не следующий переход). Разве это не должно быть 192.168.200.2? Поменял на 192.168.200.2. Единственная разница в том, что:
Может кто-нибудь объяснить?
Я считаю, что IP-адреса 192.168.200. * Являются артефактами того, как на самом деле работают туннели OpenVPN. OpenVPN в этой конфигурации по сути является двухточечным, и каждая точка получает свой собственный IP-адрес. При прокладке маршрута через туннель необходимо указать ближний конец туннеля. Думайте об этих IP-адресах как о внутренних для способа работы OpenVPN (для моего собственного пояснения я назначаю совершенно другой немаршрутизируемый блок, например, 10.0.0.0/8, если моя сеть 192.168.0.0/16; 10.0.0.0 Насколько я понимаю, IP-адреса / 8 существуют только для OpenVPN).
Напротив, с интерфейсом TAP вы фактически получите IP-адрес локальной сети, к которой вы подключаетесь, назначенный для OpenVPN.
Я уверен, что это где-то в Вопросы-Ответы, но я не вижу этого с первого взгляда.
Я считаю, что вам нужно использовать client-to-client
директиве, и вам не хватает запросов маршрутизации для 192.168.3.0
и 192.168.4.0
На самом деле это урезанная версия моей собственной реализации OpenVPN, которая у меня есть. На самом деле вы не указываете это в своих деталях, но вам, вероятно, понадобится следующее, включенное в ваш /etc/sysctl.conf
или под /etc/sysctl.d
как на вашем сервере Fedora 16, так и на вашем клиенте Ubuntu 11.10, чтобы направлять трафик через них в качестве шлюза.
net.ipv4.ip_forward = 1
После того, как ты бежишь sysctl -a
после того, как строка была введена, вы должны быть готовы к работе над конфигурацией OpenVPN. Я бы предложил попробовать следующее для конфигурации вашего сервера:
proto udp
port 1194
dev tun
ca /etc/openvpn/cookbook/ca.crt
cert /etc/openvpn/cookbook/openvpnserver.crt
key /etc/openvpn/cookbook/openvpnserver.key
dh /etc/openvpn/cookbook/dh2048.pem
tls-auth /etc/openvpn/cookbook/ta.key 0
server 192.168.200.0 255.255.255.0
topology subnet
client-config-dir /etc/openvpn/cookbook
client-to-client
route 192.168.2.0 255.255.255.0 192.168.200.2
route 192.168.4.0 255.255.255.0 192.168.200.1
keepalive 10 60
push "route 192.168.4.0 255.255.255.0"
topology subnet
daemon
log-append /home/mazimi/Desktop/openvpn.log
Затем, предполагая, что ваш сертификат клиента Ubuntu CN является клиентом, добавьте следующее в /etc/openvpn/cookbook/client1
:
ifconfig-push 192.168.200.2 255.255.255.0
iroute 192.168.2.0 255.255.255.0
Затем, наконец, для вашего файла конфигурации клиента Ubuntu:
client
proto udp
remote 192.168.3.1 1194
dev tun
persist-key
persist-tun
ca /etc/openvpn/cookbook/ca.crt
cert /etc/openvpn/cookbook/client1.crt
key /etc/openvpn/cookbook/client1.key
tls-auth /etc/openvpn/cookbook/ta.key 1
daemon
log-append /root/openvpn.log
ns-cert-type server
Как я уже сказал, это урезанная версия того, что я использую. В моих конфигурациях несколько больше опций, чем у вас, но значений по умолчанию для них должно быть достаточно. Для меня мой client1 имеет 2 подсети (192.168.1.0/24 и 172.16.20.0/24). Мой corp OpenVPN сервер работает 10.20.30.0/24 и мой клиентский сервер OpenVPN работает на 10.8.0.0/24 с подключенными к нему клиентами. корпоративный сервер ovpn присвоено 10.20.30.1, а клиентский сервер овпн получает 10.20.30.2 и client1 получает 10.20.30.3 при подключении к корпоративный сервер ovpn.
Итак, конфигурация моего корпоративного сервера включает в себя следующее:
route 172.16.20.0 255.255.255.0 10.20.30.3
route 192.168.1.0 255.255.255.0 10.20.30.3
route 10.8.0.0 255.255.255.0 10.20.30.2
Пока файл CCD для client1 содержит следующее:
ifconfig-push 10.20.30.3 255.255.255.0
iroute 172.16.20.0 255.255.255.0
iroute 192.168.1.0 255.255.255.0
push "route 10.8.0.0 255.255.255.0"
И файл CCD для клиентский сервер овпн содержит следующее:
ifconfig-push 10.20.30.2 255.255.255.0
iroute 10.8.0.0 255.255.255.0
push "route 192.168.1.0 255.255.255.0"
push "route 172.16.20.0 255.255.255.0"
push "route 10.20.30.0 255.255.255.0"
Тем не менее ... С моего ноутбука на моем Wi-Fi, который получает IP 192.168.1.140, если я трассирую свой клиент, подключенный к клиентский сервер овпн как 10.8.0.30 я получаю следующее:
traceroute to 10.8.0.30 (10.8.0.30), 30 hops max, 60 byte packets
1 192.168.1.1 2.108 ms 2.078 ms 2.460 ms
2 192.168.1.2 3.370 ms 3.340 ms 3.671 ms
3 10.20.30.2 20.250 ms 20.220 ms 20.518 ms
4 10.8.0.30 33.505 ms 34.326 ms 34.809 ms
Вы можете игнорировать первый прыжок (192.168.1.1), так как это точка доступа / маршрутизатор, для которой настроены статические маршруты для 10.0.0.0/8 и 172.16.0.0/12, направленные на 192.168.1.2. client1IP-адрес. Просто для полноты, вот обратный маршрут от этого клиента (10.8.0.30).
traceroute to 192.168.1.140 (192.168.1.140), 64 hops max, 52 byte packets
1 10.8.0.1 8 ms 8 ms 8 ms
2 10.20.30.3 21 ms 22 ms 24 ms
3 192.168.1.140 24 ms 24 ms 23 ms