Появилась такая простая задача объеденить две сети: домашнюю и рабочую
дома: нужные репозитории, подборка аудиокниг на nfs, быстрый и дешёвый интернет, а на работе: работа, принтеры, доступ к рабочим столам сотрудников, файлопомойка и прочее. В общем это весьма удобно
Так как на работе и дома я использую только Linux и у нас общая сеть через провайдера РТелеком решил не заморачивать с сертификатами OpenVPN и сделал просто, через pptpd vpn. Домашний сервер будет сервером vpn, рабочий сервер клиентом. В обоих сетях есть собственные dns зоны и раздача адресов происходит через DHCP с привязкой имени к mac адресу. Вот такая у меня получилась картинка
Выглядит довольно сложно и страшно, но на самом деле всё просто. Для наглядность настройки клиента и сервера буду использовать таблицу
клиент | сервер |
# установка VPN клиента apt-get install pptp-linux | # установка VPN сервера apt-get install pptpd |
# файл интерфейса, только указать адрес свого vpn сервера, обратите внимание на PPTP(региср), эта метка затем используется при выборе учётной записи cat /etc/ppp/peers/vpn | # файл настроек VPN сервера, тут можно указать свой адрес сети cat /etc/pptpd.conf |
#настройки интерфейса, user заменить на имя своего юзера записанного в /etc/ppp/chap-secrets cat /etc/ppp/options.pptp.vpn | # настройки VPN сервера, здесь включеные все протоколы шифрования, подключаться можно даже с винды, но отключено сжатие, опять же следует обрати внимание на PPTPD, этот ключ используется для отбора учётных записей /etc/ppp/pptpd-options-myvpn |
cat /etc/ppp/chap-secrets | cat /etc/ppp/chap-secrets |
# подключение к VPN серверу pon vpn | # запуск VPN сервера /etc/init.d/pptpd restart |
Для проверки соединения смотрим вывод ifconfig, должны появится новые ppp[0-9] интерфейсы | |
ping -c1 -q 192.168.100.1 && echo Ok | ping -c1 -q 192.168.100.2 && echo Ok |
Видим, что связь появилась, но пока в пределах тунеля 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.0.77 && 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