Соединяем сети между Debian и OpenBSD средствами OpenVPN

Без всяких вступлений и тп перейду сразу к делу! Соединяю 2 маршрутизатора. Один под управлением OpenBSD 4.6, а второй с Debian Lenny.
Задача:
увидеть внутреннюю сеть за сервером OpenBSD

Настройки сети на OpenBSD:

root@openek:~# ifconfig
lo0: flags=8049 mtu 33200
priority: 0
groups: lo
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
xl0: flags=8843 mtu 1500
lladdr 00:50:04:00:44:8d
description: INET
priority: 0
groups: egress
media: Ethernet autoselect (100baseTX full-duplex)
status: active
inet6 fe80::250:4ff:fe00:448d%xl0 prefixlen 64 scopeid 0x1
inet 10.0.1.111 netmask 0xffffff00 broadcast 10.0.1.255
nfe0: flags=8843 mtu 1500
lladdr 00:13:8f:9a:c4:52
description: LAN
priority: 0
media: Ethernet autoselect (100baseTX full-duplex)
status: active
inet 192.169.100.2 netmask 0xffffff00 broadcast 192.169.100.255
inet6 fe80::213:8fff:fe9a:c452%nfe0 prefixlen 64 scopeid 0x2
enc0: flags=0<> mtu 1536
priority: 0
pflog0: flags=141 mtu 33200
priority: 0
groups: pflog
root@openek:~#

За OpenBSD есть клиенты, тестить будем на некоем 192.169.100.10 — тоесть всеми силами пытаемся попасть в сетку 192.169.100.0/24 и в частности …. проверить работоспособность соединения на некоей внутресетевой машине 192.169.100.10

Убедимся что машинка видна с OpenBSD сервера:

root@openek:~# ping 192.169.100.10
PING 192.169.100.10 (192.169.100.10): 56 data bytes
64 bytes from 192.169.100.10: icmp_seq=0 ttl=128 time=0.282 ms
64 bytes from 192.169.100.10: icmp_seq=1 ttl=128 time=0.287 ms
64 bytes from 192.169.100.10: icmp_seq=2 ttl=128 time=0.261 ms
--- 192.169.100.10 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.261/0.276/0.287/0.022 ms
root@openek:~#

Итак, подготавливаем все необходимое для создания VPN на OpenBSD.

  • конечно же должно быть включено forwarding …. на всяк случай проверяем:
root@openek:/etc/openvpn# sysctl |grep forward
net.inet.ip.forwarding=1
net.inet.ip.mforwarding=0
net.inet6.ip6.forwarding=0
net.inet6.ip6.mforwarding=0
root@openek:/etc/openvpn#

Если не включено (net.inet.ip.forwarding=0) то разкомментировать эту опцию в /etc/sysctl.conf  и присвоить значение 1. После перезагрузки опция применится. Без перезагрузки эта опция включается от рута командой:

root@openek:/etc/openvpn# sysctl net.inet.ip.forwarding=1
net.inet.ip.forwarding: 1 -> 1
root@openek:/etc/openvpn#
  • OpenVPN я собирал из исходников (если необходимо — установите/обновите порты!)
root@openek:~# cd /usr/ports/net/openvpn
root@openek:/usr/ports/net/openvpn# make install clean
  • Создал директорию для конфигов и ключей /etc/openvpn
root@openek:~# mkdir /etc/openvpn
  • Перешел в эту директорию и сгенерил ключ для авторизации:
root@openek:~# cd /etc/openvpn

root@openek:/etc/openvpn# openvpn --genkey --secret /etc/openvpn/auth.key

Ключ должен получиться в таком духе:

root@openek:/etc/openvpn# cat auth.key
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
4e36924d67c8c75df3481776cafc1214
6f9d1ca10858ef708c05d7ef437b7f94
5c0d5d012c1c1467f20355448752e08f
6e64ed241898b6b345e3e75efb64fe76
4224b349bea70c341900ff2b3c259232
5a816deaa7ce3c7dece4edd42edc5585
294e941550b5eb14a6aabf0ba56c9edb
cbea81590f3fdf29b5867eda66b43175
5a8db2d381b027e977e17b76ee215777
fc360af042c515f916634751f9e021e6
7cbc386ac9a71d24cef5127c697a3087
e6702d813c12da1c48d49724b968f7a8
1b910bf4e4f8347df773d2de8d35c988
d0bdec0c80e093a8c8e7f6b5aa41ec4c
d99b2fd1882ec4f83ed8ef1866c74950
84816d6338662618eb72da9506eab493
-----END OpenVPN Static key V1-----
root@openek:/etc/openvpn#
  • рихтуем конфиг до вида:
root@openek:/etc/openvpn# cat openbsd-debian.conf
proto udp
dev tun3
port 5000
comp-lzo
ping 15
verb 3
user _openvpn
group _openvpn
remote 10.0.1.13
ifconfig 10.3.0.2 10.3.0.10
#route 192.168.0.0 255.255.255.0 10.3.0.10
secret /etc/openvpn/auth.key
auth MD5
cipher DES-CBC
tun-mtu 1500
root@openek:/etc/openvpn#

Добавляем в /etc/rc.local такие строчки для автоматического поднятия туннеля OpenVPN:

### <- VPN to Debian -> ###
if [ -x /usr/local/sbin/openvpn ]; then
echo -n ' OpenVPN to Debian'; (sleep 3; /usr/local/sbin/openvpn --config /etc/openvpn/openbsd-debian.conf) &
fi

Ну все …. OpenBSD готов принимать гостей 🙂

Подготавливаем Debian для коннекта к OpenBSD

  • Устанавливаем OpenVPN
black:~# apt-get install openvpn
  • Добавляем пользователя openbsd
black:~# useradd openvpn -s /usr/sbin/nologin
  • Рихтуем конфиг по образу и подобию только что настроенного в OpenBSD
black:/etc/openvpn# cat debian-openbsd.conf
proto udp
dev tun
port 5000
comp-lzo
ping 15
verb 3
user openvpn
group openvpn
remote 10.0.1.111
ifconfig 10.3.0.10 10.3.0.2
route 192.169.100.0 255.255.255.0 10.3.0.2
secret /etc/openvpn/auth.key
auth MD5
cipher DES-CBC
tun-mtu 1500
black:/etc/openvpn#
  • После этого копируем ключ auth.key на Debian любым доступным вам способом. Я закинул с OpenBSD на Debian простым scp. Так как у меня открыто ходка на Debian по ssh под root то закидывал прямо в директорию /etc/openvpn
root@openek:~# scp /etc/openvpn/auth.key root@10.0.1.13:/etc/openvpn
  • Перезапускаем сервис openvpn
black:~# /etc/init.d/openvpn restart

Проверяем что поднялся интерфейс:

black:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:11:2f:63:15:1e
inet addr:10.0.1.13  Bcast:10.0.1.255  Mask:255.255.255.0
inet6 addr: fe80::211:2fff:fe63:151e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:169731145 errors:0 dropped:0 overruns:0 frame:0
TX packets:106196175 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3414915304 (3.1 GiB)  TX bytes:1627861190 (1.5 GiB)
Interrupt:17 Base address:0xc400

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:3684864 errors:0 dropped:0 overruns:0 frame:0
TX packets:3684864 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:925925961 (883.0 MiB)  TX bytes:925925961 (883.0 MiB)

tun0 Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.3.0.10  P-t-P:10.3.0.2  Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:168 (168.0 B)  TX bytes:168 (168.0 B)

black:~#

Пингуем сервер OpenBSD по адресу туннеля:

black:~# ping 10.3.0.2
PING 10.3.0.2 (10.3.0.2) 56(84) bytes of data.
64 bytes from 10.3.0.2: icmp_seq=1 ttl=255 time=0.923 ms
64 bytes from 10.3.0.2: icmp_seq=2 ttl=255 time=0.710 ms
64 bytes from 10.3.0.2: icmp_seq=3 ttl=255 time=0.904 ms
^C
--- 10.3.0.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.710/0.845/0.923/0.101 ms
black:~#

И, наконец, пингуем машину из внутрисети за OpenBSD

black:~# ping 192.169.100.10
PING 192.169.100.10 (192.169.100.10) 56(84) bytes of data.
64 bytes from 192.169.100.10: icmp_seq=1 ttl=127 time=1.08 ms
64 bytes from 192.169.100.10: icmp_seq=2 ttl=127 time=0.936 ms
64 bytes from 192.169.100.10: icmp_seq=3 ttl=127 time=0.975 ms
^C
--- 192.169.100.10 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2009ms
rtt min/avg/max/mdev = 0.936/0.997/1.080/0.060 ms
black:~#

При любых проблемах со связью, не забывайте о настройках pf/iptables …. может чегото залочили???

Удачи!

  1. Комментов пока нет

  1. Трэкбэков пока нет.

Why ask?