Объединение двух сетей через 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

 

Комментариев 0
Нужна авторизация с помощью
Об авторе
Илья Илья

меня можно найти тут

Тут можно посмотреть список VPN серверов.