Настройки vpn-сервера (PPTPD) | |
Обновлено 21 Мая 2013
Основная задача: есть офисная сеть которая соединена с миром посредством сервера, нужно обеспечить чтобы сотрудники которые находятся на выезде или работают из дома, получили возможность безопасно подключиться к офисной сети, пользоваться ресурсами офисной сети (сетевые паки и т.д.), собственно чтобы компьютер удаленного сотрудника стал частью офисной сети, что и обеспечивает технология VPN
PPTP– это Point-to-Point Tunelling Protocol, используется чаще всего для организации защищенного подключения удаленных пользователей во внутреннюю сеть компании через публичные сети, такие как Интернет, а также некоторыми Интернет-провайдерами с ограниченным адресным пространством для экономии честных IP-адресов при предоставлении услуги доступа в Интернет.
Порядок настройки vpn-сервера:
- Качаем и устанавливаем пакет pptpd, подходящий для нашей системы. Для моей CentOS 5.5 i386 это выглядело так:
rpm -ivh http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-2.rhel5.i386.rpm - В файл /etc/ppp/chap-secrets дописываем информацию о пользователях, которым необходим удаленный доступ:
- $ cat/etc/ppp/chap-secrets
- # Secrets for authentication using CHAP
- # client server secret IP addresses
- user1 pptpd passwOrD1 10.0.10.2
- user2 pptpd qWeRPDW2a 10.0.10.3
- Проверяем, что в ядре включен форфардинг пакетов между интерфейсами, если нет – включаем:
- echo1>/proc/sys/net/ipv4/ip_forward
- sysctl -w net.ipv4.ip_forward=1
- Проверяем, что в firewall-е открыты подключения извне на TCP-порт 1723 и что разрешен протокол #47:
- /sbin/iptables -I INPUT -p tcp --dport 1723 -j ACCEPT
- /sbin/iptables -I INPUT -p 47 -j ACCEPT
- Проверяем, что в файле /etc/ppp/options.pptpd присутствуют следующие опции:
- name pptpd
- refuse-pap
- refuse-chap
- refuse-mschap
- require-mschap-v2
- require-mppe-128
- ms-dns 10.0.0.253
- ms-dns 10.0.0.252
- proxyarp
- lock
- nobsdcomp
- novj
- novjccomp
- nologfd
Опции ms-dns – это те DNS-сервера, которые выдаются клиенту. Нужно изменить на те, которые реально используются в Вашей сети. Если клиент в состоянии использовать DNS-сервера (по умолчанию клиент получит в качестве шлюза свой IP-адрес, который прописан в файле chap-secrets и DNS-сервера по этой причине могут стать недоступны), которые он использовал до установки vpn-подключения, эти опции можно убрать.
- Редактируем /etc/pptpd.conf, нужно чтобы в нем были следующие строки:
- option /etc/ppp/options.pptpd
- logwtmp
- localip 10.0.0.1
- remoteip 10.0.0.2-20
Параметры localip и remoteip изменяем в соответствии с IP-адресацией в Вашей сети.
- Запускаем сервис:
- /etc/init.d/pptpd start
- Включаем автозагрузку сервиса при старте системы:
- /sbin/chkconfig pptpd on
- Пробуем подключаться. Если в качестве клиента Windows XP и имеются проблемы с подключением, то в настройках подключения на вкладке «Безопасность» нужно снять галочку «Требуется шифрование данных».
Возможные проблемы:
- 1. Если какая-то машинка за NAT-ом испытывает трудности с подключением к внешнему VPN-серверу и винда показывает ошибку №619, то стоит попробовать включить модуль ядра ip_nat_pptp на linux-роутере, который исполняет NAT:
- modprobe ip_nat_pptp
- Если в логе (/var/log/messages) сервера с pptpd имеется нечто такое
Feb 17 08:09:29 zeon pppd[28671]: Plugin /usr/lib64/pptpd/pptpd-logwtmp.so is for pppd version 2.4.3, this is 2.4.4
то наиболее простым решением является убирание опции logwtmp из файла /etc/pptpd.conf. Это приведёт к тому, что сеансы связи клиентов не будут отбражаться командой last (которая как раз и работает с /var/log/wtmp). Ну а правильным решением будет найти rpm-ку соответсвующую вашей системе или пересобрать pptpd руками из исходников.
- Если в логе (/var/log/messages) сервера с pptpd наблюдается
Feb 17 11:18:12 zeon kernel: pptpctrl[30130]: segfault at 00000000 rip 005a34b0 rsp ffe60810 error 4
а клиенты на windows-машинках при подключении получают ошибку 800, то, скорей всего, исчерпался лимит одновременных подключений, который задаётся опцией remoteip в файле /etc/pptpd.conf. Такой segfault у меня был когда в /etc/pptpd.conf я сдуру втулил строчку «remoteip 192.168.0.2-192.168.0.254″ (пускало только первого юзера, а все последующие получали ошибку 800 и segfault в логе сервера). После того, как заменил на «remoteip 192.168.0.2-254″ всё заработало как надо.
Источник: avz.org.ua