Объединение двух сетей через VPN

Появилась такая простая задача объеденить две сети: домашнюю и рабочую

дома: нужные репозитории, подборка аудиокниг на nfs, быстрый и дешёвый интернет, а на работе: работа, принтеры, доступ к рабочим столам сотрудников, файлопомойка и прочее. В общем это весьма удобно

Так как на работе и дома я использую только Linux и у нас общая сеть через провайдера РТелеком решил не заморачивать с сертификатами OpenVPN и сделал просто, через pptpd vpn. Домашний сервер будет сервером vpn, рабочий сервер клиентом. В обоих сетях есть собственные dns зоны и раздача адресов происходит через DHCP с привязкой имени к mac адресу. Вот такая у меня получилась картинка

объединение двух сетей через интернет с помощью VPN

Выглядит довольно сложно и страшно, но на самом деле всё просто. Для наглядность настройки клиента и сервера буду использовать таблицу

настройка маршрутизаторов для объединения сетей через VPN
клиент сервер

# установка VPN клиента

apt-get install pptp-linux

# установка VPN сервера

apt-get install pptpd

# файл интерфейса, только указать адрес свого vpn сервера, обратите внимание на PPTP(региср), эта метка затем используется при выборе учётной записи

cat /etc/ppp/peers/vpn

pty "pptp ffsdmad.homelinux.org --nolaunchpppd"
remotename PPTP
file /etc/ppp/options.pptp.vpn
ipparam vpn

# файл настроек VPN сервера, тут можно указать свой адрес сети

cat /etc/pptpd.conf

option /etc/ppp/pptpd-options
logwtmp
localip 192.168.100.1
remoteip 192.168.100.2-255

#настройки интерфейса, user заменить на имя своего юзера записанного в /etc/ppp/chap-secrets

cat  /etc/ppp/options.pptp.vpn

lock
noauth
refuse-eap
refuse-chap
refuse-mschap
require-mppe-128
user user
mtu 1452
mru 1452
noipdefault

# настройки VPN сервера, здесь включеные все протоколы шифрования, подключаться можно даже с винды, но отключено сжатие, опять же следует обрати внимание на PPTPD, этот ключ используется для отбора учётных записей

/etc/ppp/pptpd-options-myvpn

name PPTPD
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
nodefaultroute
lock
nobsdcomp
cat /etc/ppp/chap-secrets
"user"    PPTP    "password"    "*"
cat /etc/ppp/chap-secrets
"user" PPTPD "password" 192.168.100.0/24

# подключение к VPN серверу

pon vpn

# запуск VPN сервера

/etc/init.d/pptpd restart

Для проверки соединения смотрим вывод ifconfig, должны появится новые ppp[0-9] интерфейсы
ppp у сервера должен иметь адрес 192.168.100.1, а у клиента скорее всего 192.168.100.2
пропингуем адреса из другой сети

ping -c1 -q 192.168.100.1 && echo Ok
ping -c1 -q 192.168.80.76 || echo No
ping -c1 -q 192.168.100.2 && echo Ok
ping -c1 -q 192.168.0.78 || echo No

Видим, что связь появилась, но пока в пределах тунеля
Теперь проверить и включить маршрутизацию на обоих компьютерах

sysctl net.ipv4.conf.all.forwarding=1

и прописать маршруты

тут мы заставляем ядро пересылать пакеты для сети 192.168.80.0/24 через 192.168.100.2

route add -net 192.168.80.0/24 gw 192.168.100.2

тут мы заставляем ядро пересылать пакеты для сети 192.168.0.0/24 через 192.168.100.1

route add -net 192.168.0.0/24 gw 192.168.100.1
ping -c1 -q 192.168.80.76 && echo Yes || echo No
ping -c1 -q 192.168.80.77 && echo Yes || echo No
ping -c1 -q 192.168.0.77 && echo Yes || echo No
ping -c1 -q 192.168.0.76 && echo Yes || echo No

Вот вроде бы и всё. Настроив такой VPN сервер можно создавать новые учётные записи и давать знакомым защищённый доступ в свою сеть, думаю найдётся очень много задач которые удобнее решать без применения систем контроля версий и ftp доступа. По крайней мере я собираюсь таким образом подключать к себе знакомых с ADSL, чтобы иметь возможность подключаться к их рабочим столам

Как всегда за кадром осталось самое интересное: объединение DNS зон, балансировка трафика через два прокси сервера, общие учётные записи и доступ к домашним директориями

ps: стоит отметить, что для подключения к VPN серверу не обязательно использовать IP адрес и покупать доменное имя, можно зарегистировать бесплатный домен например в http://www.dyndns.com/

Как дополнение, вполне вероятна ситуация когда VPN сервер временно стал недоступен клиент и если не принять мер, то клиент не будет автоматически переподключать, чтобы это исправить нужно добавить в /etc/ppp/options.pptp.vpn ещё две опции

persist # включатель переподключения в случае обрывов связи
maxfail 0 # количество попыток переподключения, 0 - бесконечность, попытки происходят постоянно

Для отладки соединения можно добавить опцию

debug dump logfd 2 updetach

либо наблюдать журнальные сообщения вот таким удобным образом

tail -f /var/log/messages
tail -f /var/log/syslog

Для автоматического подключения после перезагрузки нужно добавить в /etc/network/interfaces

iface vpn    inet ppp
    provider vpn

 

похожие страницы

  1. Объединение DNS зон в VPN сетях
  2. mplayer, создание видео ролика из фотографий
  3. Multiseat, Эффективное использование 2 ядерных процессоров в Linux
  4. Печать в PDF через Cups
  5. Один в поле воин! Борьба с пидорами в Испании

#1:

gre не лучший способ организации туннелей его часто закрывают/не натят провайдеры. попробуйте openvpn

ответить  2010-01-12 14:45:06 

#2:

если linux на обоих машинакх стоит, то не лучше-ли вопользоваться ipsec, гораздо более Ъ способ. И нагружать цпу не будет, в отличние от pptp.

ответить  2010-01-12 15:00:37 

#3:  Басманов:

ну вот, ещё два способа наклевались, замечательно
только у меня ещё куча задач, например как объединить dns зоны и прокси сервера

ответить  2010-01-12 15:17:18 

#4:

Хм. А через SSH слабО?

ответить  2010-01-12 15:46:03 

#5:  Басманов:

re:А через SSH слабО?
я уже намучался запускать через ssh vnc, спасибо
ssh хорошее решение для быстых и редких вылазок внутрь чужих сетей

ответить  2010-01-12 15:48:58 

#6:

я у себя делал аутентификацию в АД по членству в группе(например vpn), доустановил самбу с винбиндом, подключил к домену, в ppp/options.pptpd дописал строки
plugin winbind.so
ntlm_auth-helper "/usr/bin/ntlm_auth --require-membership-of=UZPS/vpn --helper-protocol=ntlm-server-1"

может кому пригодиться http://daevy.uzps.mh.ru/?p=113

ответить  2010-01-20 07:14:16 

#7:

2010-01-12 14:45:06

если linux на обоих машинакх стоит, то не лучше-ли вопользоваться ipsec, гораздо более Ъ способ. И нагружать цпу не будет, в отличние от pptp.

просто гений ) http://en.wikipedia.org/wiki/Ipsec

для организации vpn, наиболее простое/удобное/отказоустойчивое решение всетаки использовать openvpn

ответить  2010-01-20 13:44:26 

#8:

re:А через SSH слабО?

легко

pppd persist holdoff 13 idle 65536 connect-delay 39000 noauth nodetach debug pty "ssh -t root@79.132.112.16 "pppd persist idle 65536 noauth 172.168.13.2:172.168.13.1" "

ответить  2010-09-18 23:55:35 

#9:

в iptables нужно разрешить соединения) на обоих машинках)

ответить  2011-04-13 12:53:34 

#10:

И вообще можно и одной подсетью обойтись )

ответить  2011-11-22 15:00:57