Я не новичок в никсах, но далеко и не гуру - чуть больше чем пользователь.
Встала передо мной такая задача:
Дано:
сервак Ubuntu за NATом, на него редиректится порт 1194.
локальный адрес у него 192.168.1.254(несложно догадаться, что сетка 192.168.1.0/24).
Цель:
Забриджить через этот сервачок клиентов подрубленных через VPN, чтобы они могли видеть локальную офисную сетку(та самая 192.168.1.0/24).
Ход решения:
Поставил на сервачок openvpn и bridge-utils.
Прописал /etc/network/interfaces
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
address 192.168.1.254
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.3
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 192.168.1.3
dns-search soglasie
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
Настройки vpn сервера
mode server
tls-server
local 192.168.1.254 ##ip/hostname of server
port 1194 ## default openvpn port
proto tcp
dev tap0 ## If you need multiple tap devices, add them here
up "/etc/openvpn/up.sh br0"
down "/etc/openvpn/down.sh br0"
persist-key
persist-tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key # This file should be kept secret
dh /etc/openvpn/dh1024.pem
tls-auth /etc/openvpn/ta.key 0 # This file is secret
cipher BF-CBC # Blowfish (default)
comp-lzo
ifconfig-pool-persist ipp.txt
server-bridge 192.168.1.254 255.255.255.0 192.168.1.200 192.168.1.210
push "route 192.198.1.3"
max-clients 10 ## set this to the max number of clients that should be connected at a time
user nobody
group nogroup
keepalive 10 120
status openvpn-status.log
verb 3
В up.sh
#!/bin/sh
BR=$1
DEV=$2
MTU=$3
/sbin/ifconfig $DEV mtu $MTU promisc up
/usr/sbin/brctl addif $BR $DEV
В down.sh
#!/bin/sh
BR=$1
DEV=$2
/usr/sbin/brctl delif $BR $DEV
/sbin/ifconfig $DEV down
У клиента настройки соответствующие.
Пока что пробовал только на виртуальной машине(winxp) внутри того же офиса.
Вот таблица маршрутизации до коннекта к VPN
Активные маршруты:
Сетевой адрес Маска сети Адрес шлюза Интерфейс Метрика
0.0.0.0 0.0.0.0 10.0.2.2 10.0.2.15 20
10.0.2.0 255.255.255.0 10.0.2.15 10.0.2.15 20
10.0.2.15 255.255.255.255 127.0.0.1 127.0.0.1 20
10.255.255.255 255.255.255.255 10.0.2.15 10.0.2.15 20
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
224.0.0.0 240.0.0.0 10.0.2.15 10.0.2.15 20
255.255.255.255 255.255.255.255 10.0.2.15 10004 1
255.255.255.255 255.255.255.255 10.0.2.15 10.0.2.15 1
Основной шлюз: 10.0.2.2
А это уже после
Активные маршруты:
Сетевой адрес Маска сети Адрес шлюза Интерфейс Метрика
0.0.0.0 0.0.0.0 10.0.2.2 10.0.2.15 20
10.0.2.0 255.255.255.0 10.0.2.15 10.0.2.15 20
10.0.2.15 255.255.255.255 127.0.0.1 127.0.0.1 20
10.255.255.255 255.255.255.255 10.0.2.15 10.0.2.15 20
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
192.168.1.0 255.255.255.0 192.168.1.200 192.168.1.200 30
192.168.1.200 255.255.255.255 127.0.0.1 127.0.0.1 30
192.168.1.255 255.255.255.255 192.168.1.200 192.168.1.200 30
224.0.0.0 240.0.0.0 10.0.2.15 10.0.2.15 20
224.0.0.0 240.0.0.0 192.168.1.200 192.168.1.200 30
255.255.255.255 255.255.255.255 10.0.2.15 10.0.2.15 1
255.255.255.255 255.255.255.255 192.168.1.200 192.168.1.200 1
Основной шлюз: 10.0.2.2
С сертификатами все норм. Подключение происходит успешно.
Вывод ifconfig с сервака(eth1 пока не юзается)
br0 Link encap:Ethernet HWaddr 00:21:91:8d:19:8a
inet addr:192.168.1.254 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::221:91ff:fe8d:198a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:89068 errors:0 dropped:0 overruns:0 frame:0
TX packets:17532 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:8442904 (8.4 MB) TX bytes:3634126 (3.6 MB)
eth0 Link encap:Ethernet HWaddr 00:21:91:8d:19:8a
inet6 addr: fe80::221:91ff:fe8d:198a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:90629 errors:0 dropped:0 overruns:0 frame:0
TX packets:17532 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10398550 (10.3 MB) TX bytes:3745204 (3.7 MB)
Interrupt:22
eth1 Link encap:Ethernet HWaddr 00:40:f4:b4:c2:47
BROADCAST 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:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:21 Base address:0xa000
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:393096 errors:0 dropped:0 overruns:0 frame:0
TX packets:393096 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1242341393 (1.2 GB) TX bytes:1242341393 (1.2 GB)
tap0 Link encap:Ethernet HWaddr 32:a0:c7:b8:93:dc
inet6 addr: fe80::30a0:c7ff:feb8:93dc/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:15716 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:1455281 (1.4 MB)
После коннетка перекашивается маршрутизация к 192.168.1.0(к той самой сетке, для доступа к которой и поднимался VPN).
Вопрос:
где мне нужно прописывать маршрутизацию(я так понимаю, надо править это где-то в /etc/network/interfaces, чтобы пакеты проходили через мостик как надо) и что именно нужно прописывать. Буду особо благодарен, если кроме строчек необходимых для правки архивов подкинете еще и линки на мануалы.
Еще раз уточняю, маршрутизацию "во внешний мир" на клиентах трогать не нужно, нужно лишь чтобы пакеты проходили в офисную сетку по указанным локальным офисным ipшникам.
после 21.00 МСК буду пробовать дома.
Заранее спасибо!
PS Мне нужно еще какие либо порты открыватьи редиректить со шлюза на серв, кроме 1194.
PPS То, что сетка 192.168.1.0 может конфликтовать с внутренними сетками удаленных VPNклиентов мне известно. Сетку скорее всего поменяю, но это будет уже после поднятия DHCP, а это случится, когда у меня будет время и в офисе никого не будет=)
Пользователь решил продолжить мысль 22 Марта 2010, 07:11:16:
Чуть не забыл! Заранее спасибо!!!=)
Пользователь решил продолжить мысль 22 Марта 2010, 14:44:29:
Из дома все таки не коннектится...

На telnet <внешний_IP_щфисного_шлюза> 1194 (тот с которого редиректится на 192.168.1.254)
сервак отвечает
telnet: Unable to connect to remote host: Connection refused
Логи с клиента:
Mon Mar 22 20:40:54 2010 NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables
Mon Mar 22 20:40:54 2010 Re-using SSL/TLS context
Mon Mar 22 20:40:54 2010 LZO compression initialized
Mon Mar 22 20:40:54 2010 Control Channel MTU parms [ L:1574 D:166 EF:66 EB:0 ET:0 EL:0 ]
Mon Mar 22 20:40:54 2010 Data Channel MTU parms [ L:1574 D:1450 EF:42 EB:135 ET:32 EL:0 AF:3/1 ]
Mon Mar 22 20:40:54 2010 Local Options hash (VER=V4): '13a273ba'
Mon Mar 22 20:40:54 2010 Expected Remote Options hash (VER=V4): '360696c5'
Mon Mar 22 20:40:54 2010 Socket Buffers: R=[8192->8192] S=[8192->8192]
Mon Mar 22 20:40:54 2010 UDPv4 link local: [undef]
Mon Mar 22 20:40:54 2010 UDPv4 link remote: <ip_сервака>:1194
Mon Mar 22 20:41:54 2010 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
Mon Mar 22 20:41:54 2010 TLS Error: TLS handshake failed
Mon Mar 22 20:41:54 2010 TCP/UDP: Closing socket
Mon Mar 22 20:41:54 2010 SIGUSR1[soft,tls-error] received, process restarting
Mon Mar 22 20:41:54 2010 Restart pause, 2 second(s)
И это крутится по циклу.
Нид хелп!

Пользователь решил продолжить мысль 22 Марта 2010, 19:52:04:
Подключился из дома. Очень долго и сильно до этого тупил. Из дома не получалось подключится к серверу, по той просто причине, что порт был 1194 прописан в конфигах udp, а форвардился на tcp... Сейчас все работает как нужно, и маршруты как нужно прописались.
Короче, все работает как и нужно было!)