Изначальная ситуация: на компе №1 (192.168.0.11) стоит виртуалка с Ubuntu 10.10 Эта виртуалка является сервером openVPN. У виртуалки сетевой интерфейс bridge (192.168.0.2). Т.е. и комп №1 и другие компы сети могут обратиться к ней напрямую (пинги на неё идут по её локальному адресу).
Комп №2 (192.168.0.4) является клиентом openVPN. Это Ubuntu 10.10
Задача: компу №2 нужно через VPN соединиться с виртуалкой, и уже из неё получить долгожданный инет (виртуалка имеет инет через реальный комп, на котором она стоит) Прочитав краткий экскурс на тему топика сделал следущее
виртуалка:
Цитата
dev tun ifconfig 10.11.11.1 10.11.11.2 secret /etc/openvpn/static.key
log-append /var/log/openvpn.log status /var/log/openvpn-status.log
комп №2:
Цитата
remote 192.168.0.2 dev tun ifconfig 10.11.11.2 10.11.11.1 secret /etc/openvpn/static.key
# Use compression on the VPN link comp-lzo
# Make the link more resistent to connection failures keepalive 10 60 ping-timer-rem persist-tun persist-key
# Run OpenVPN as a daemon and drop privileges to user/group nobody user nobody group nogroup daemon
# Allow client to reach entire server subnet #route 10.11.11.0 255.255.255.0
# Set logging log-append /var/log/openvpn.log status /var/log/openvpn-status.log
static.key я заранее сгенерил и поставил и на клиента и на сервер
После этого проверил связь. Пинги с компа №2 на виртуалку пошли. В arp-таблице есть записи только о локальных IP. И нету об IP VPN-соединения (может, это и нормально для данной ситуации) А вот инет так и не стал доступным через этот VPN
Вот что в таблице маршрутизации компа №2:
Цитата
$ route Таблица маршутизации ядра протокола IP Destination Gateway Genmask Flags Metric Ref Use Iface 10.11.11.1 * 255.255.255.255 UH 0 0 0 tun0 192.168.0.0 * 255.255.255.0 U 2 0 0 wlan0 link-local * 255.255.0.0 U 1000 0 0 wlan0 default 10.11.11.1 0.0.0.0 UG 0 0 0 tun0
По идее, всё корректно
tcpdump на компе №2 при попытке обратиться к www.mail.ru (плюс ещё к паре ресурсов)
Цитата
#tcpdump -i tun0 -n -nn tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on tun0, link-type RAW (Raw IP), capture size 65535 bytes 20:39:13.826732 IP 10.11.11.2.55838 > 66.102.13.138.80: Flags [S], seq 3302781571, win 5840, options [mss 1460,sackOK,TS val 851616 ecr 0,nop,wscale 7], length 0 20:39:23.615400 IP 10.11.11.2.49459 > 94.100.191.201.80: Flags [S], seq 4173335806, win 5840, options [mss 1460,sackOK,TS val 852595 ecr 0,nop,wscale 7], length 0 20:39:26.624372 IP 10.11.11.2.49459 > 94.100.191.201.80: Flags [S], seq 4173335806, win 5840, options [mss 1460,sackOK,TS val 852896 ecr 0,nop,wscale 7], length 0 20:39:32.644272 IP 10.11.11.2.49459 > 94.100.191.201.80: Flags [S], seq 4173335806, win 5840, options [mss 1460,sackOK,TS val 853498 ecr 0,nop,wscale 7], length 0 20:39:38.625068 IP 10.11.11.2.47123 > 74.125.232.48.80: Flags [S], seq 2944340481, win 5840, options [mss 1460,sackOK,TS val 854096 ecr 0,nop,wscale 7], length 0 20:39:44.664336 IP 10.11.11.2.49459 > 94.100.191.201.80: Flags [S], seq 4173335806, win 5840, options [mss 1460,sackOK,TS val 854700 ecr 0,nop,wscale 7], length 0
Т.е. и имя резолвит. Но соединения нету (ни mail.ru никакие другие не открываются в браузере, и через telnet на порт 80 до них не достучаться).
На всякий случай лог VPN-сервера:
Цитата
Tue Apr 5 09:25:04 2011 OpenVPN 2.1.0 i686-pc-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] [MH] [PF_INET6] [eurephia] built on Jul 12 2010 Tue Apr 5 09:25:04 2011 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port. Tue Apr 5 09:25:04 2011 NOTE: the current --script-security setting may allow this configuration to call user-defined scripts Tue Apr 5 09:25:04 2011 /usr/sbin/openvpn-vulnkey -q /etc/openvpn/static.key Tue Apr 5 09:25:04 2011 LZO compression initialized Tue Apr 5 09:25:04 2011 TUN/TAP device tun0 opened Tue Apr 5 09:25:04 2011 /sbin/ifconfig tun0 10.11.11.1 pointopoint 10.11.11.2 mtu 1500 Tue Apr 5 09:25:04 2011 GID set to nogroup Tue Apr 5 09:25:04 2011 UID set to nobody Tue Apr 5 09:25:04 2011 UDPv4 link local (bound): [undef] Tue Apr 5 09:25:04 2011 UDPv4 link remote: [undef] Tue Apr 5 09:25:06 2011 Peer Connection Initiated with [AF_INET]192.168.0.4:1194 Tue Apr 5 09:25:07 2011 Initialization Sequence Completed
В чём трабла? Где копать?
"Красота - как специи, которые хорошую еду делают ещё вкуснее, а без еды есть невозможно."
Судя по таблице маршрутизации и попаданию нужных данных в тоннель (tcpdump) на компме №2 с маршрутами все корректно. Теперь встречный вопрос: а как бубунта должна выпускать комп №2 в интернет? Сейчас, я так понимаю, доступ к интернету посредством NAT имеет подсеть 192.168.0.0/24. Видимо NAT не включен для подсети 10.11.11.0/24 на маршрутизаторе (ты не показал таблицу маршрутов для бубунты).
Для того, чтобы выпустиь комп №2 в интернет через тоннель можно выбрать один из вариантов:
1. Прописать маршрут на маршрутизаторе, что сеть 10.11.11.0/24 находится за 192.168.0.2, включить на Ubuntu маршрутизацию (в линуксе это форвардинг вроде называется) и настроить NAT для 10.11.11.0/24 на маршрутизаторе. При этом, шлюз по умолчанию после поднятия тоннеля должен смотреть в тоннель.
или
2. Поднять NAT на Ubuntu на интерфейсе 192.168.0.2 (eth0) для подсети 10.11.11.0/24 PS: для проверки того, куда ходят пакеты, удобнее использоваться команду traceroute, а не tcpdump
Все равно не понятно у тебя есть 4 ОС, comp1, comp2, comp3 и ubuntu - верно? ubuntu является VPN сервером, к которому подключаются клиенты (изначально это был comp2). Теперь задача - перенаправить весь трафик по VPN с comp1 на comp3 через тоннель comp2->ubuntu?
Нет. Все нарисованные компы - это теперь виртуалки. На каждом из них убунта. Все они находятся под управлением реальной машины, на которой тоже убунта. Все компы подключены как bridge.
Комп №1 - это vpn клиент. Комп №3 - это vpn сервер
Необходимо настроить передачу трафика с кома №1 на комп №3 через комп №2. Силами этих виртуалок. На реальной машине ничего менять/настраивать не нужно.
"Красота - как специи, которые хорошую еду делают ещё вкуснее, а без еды есть невозможно."
Что то я тоже понять не могу, наверно что то пропустил, а разве можно на одном интерфейсе(одном IP) настроить мост(bridge)? Я по картинке вышеприведенной сужу, а сказано было - по бриджу на каждый комп.
Тут я что то недопонял – всегда думал что это истинно:
- можно поднять мост между двумя(не тремя или более) интерфейсами но на одном железе(возможно виртуальном). А судя по картинке комп 1,2,3 имеют по одному фейсу наружу.
2 Одни непонятки.
ИМХО там одна подсеть(физическая на виртуальном железе) и VPN на ней смотрится как то неоднозначно.
Ну конечно настроить можно эту ВПН но из подсети и на подсеть. А внутри это как? Какой смысл?
???
У впн столько понятий что никому это не дано понять. Вы просто опишите цель и вам подскажут.
Всё что я делал до этого - эксперименты, которые в некотором приближении отражают задачу.
Сама задача в реальности вот такая: есть 3 компьютера. Находятся в разных сетях в инете. Необходимо настроить VPN туннель с компьютера №1 до компа №3 транзитом через компьютер №2. Так, чтобы компьютер №3 "ничего не знал" про компьютер №1. А комп №1 в итоге "смотрел в интернет глазами" компа №3
lkesh На приведённом рисунке комп №1 №2 и №3 - это всё виртуалки. Они подключены в локальную сеть через bridge, любезно предоставленный Oracle VitrualBox и посему каждый имеет реальный (для сегмента этой локалки) IP (а не заНАТченный). По этим IP можно обратиться с каждой из этих виртуалок
2 TeckLord Структура то одна и та же, да вот тонкости разные. В openswan создается интерфейс ipsecX, а в openvpn я не знаю (tun вроде?). Соответственно, от этого будут зависеть правила iptables. tc опять же, если нужен.
TeckLord пишет: комп 3 - как vpn сервер. комп 2 как VPN сервер + NAT.
с компа 1 делаешь vpn подключение к компу 2, затем через этот тунель vpn подключение к компу 3.
Т.о. трафик будет расшифровываться на компе №2, потом снова шифроваться и отправляться компу №3? ХЗотелось бы, чтоб комп №3 занимался только транзитом, а не шифровкой/дешифровкой
"Красота - как специи, которые хорошую еду делают ещё вкуснее, а без еды есть невозможно."
На компе№ 2 должно быть tun0 для компа №1 и tun1 для компа №3 Так? А ключа шифрования вообще не указывать? Он будет указан только на компе №1 и компе №3?
"Красота - как специи, которые хорошую еду делают ещё вкуснее, а без еды есть невозможно."