Установка VPN-сервера PPTP для FreeBSD
Содержание |
portsnap fetch extractПосле того как порты будут установлены необходимо произвести установку mpd5
cd /usr/ports/net/mpd5 make install cleanОпции на стадии configure (вернуться к ним можно потом можно используя команду make config) оставьте по-умолчанию (все галочки сняты)
cp /usr/local/etc/mpd5/mpd.conf.sample /usr/local/etc/mpd5/mpd.confи отредактируйте его в текстовом редакторе
vi /usr/local/etc/mpd5/mpd.confВ самом начала есть секция которая начинается с параметра default:
default: load dialupИзменим load dialup на load pptp_server
set ippool add pool1 <первыйIPдиапазона> <последнийIPдиапазона>Например так:
set ippool add pool1 192.168.1.50 192.168.1.99пул адресов который назначается клиентам (тут можно указать внешние IP). У меня используются уже адреса из сети 192.168.1.0/24 так как я подключен к интернет через ADSL-модем и он выдает такой адрес (большинство использует эту сеть по-умолчанию). Меняем на другую сеть для частных IP-адресов (из RFC 1918)
set ippool add pool1 172.17.0.2 172.17.0.50Далее внесите также правки изменив на свои адреса адрес который будет являться шлюзом и DNS-сервером
set ipcp ranges 172.17.0.1/32 ippool pool1 set ipcp dns 172.17.0.1Строку
set ipcp nbns 192.168.1.4просто удалите или закомментируйте
set pptp self 149.154.10.10
31c31 < load dialup --- > load pptp_server 184c184 < set ippool add pool1 192.168.1.50 192.168.1.99 --- > set ippool add pool1 172.17.0.2 172.17.0.50 193,195c193,194 < set ipcp ranges 192.168.1.1/32 ippool pool1 < set ipcp dns 192.168.1.3 < set ipcp nbns 192.168.1.4 --- > set ipcp ranges 172.17.0.1/32 ippool pool1 > set ipcp dns 172.17.0.1 220c219 < set pptp self 1.2.3.4 --- > set pptp self 149.154.10.10Теперь отредактируйте файл паролей и добавьте пользователей:
vi /usr/local/etc/mpd5/mpd.secret
vpnuser password vpnuser1 password1Можно также указывать статический внешний адрес добавив его 3м параметром в строке так:
vpnuser1 password1 <внешнийIPдляПользователя1> vpnuser2 password2 <внешнийIPдляПользователя2>Также поправьте права на файлы для большей безопасности c 644 на 600 (владелец файлов root:wheel)
chmod 600 /usr/local/etc/mpd5/*Добавьте mpd в автозапуск в файл /etc/rc.conf
echo 'mpd_enable=YES' >> /etc/rc.confи пропишите туда же необходимые опции:
echo 'mpd_flags="-b"' >> /etc/rc.conf echo 'gateway_enable="YES"' >> /etc/rc.confЗапустите VPN-сервер:
/usr/local/etc/rc.d/mpd5 start
vi /etc/namedb/named.confи закомментируйте символами // строку или удалите
listen-on { 127.0.0.1; };и добавьте
allow-recursion { 127.0.0.1; 172.17.0.0/24;};После чего добавьте в автозапуск и запустите
echo "named_enable=YES" >> /etc/rc.conf && /etc/rc.d/named start
C:\>ping 172.17.0.1 Обмен пакетами с 172.17.0.1 по с 32 байтами данных: Ответ от 172.17.0.1: число байт=32 время=100мс TTL=64 Ответ от 172.17.0.1: число байт=32 время=100мс TTL=64 Ответ от 172.17.0.1: число байт=32 время=100мс TTL=64 Ответ от 172.17.0.1: число байт=32 время=101мс TTL=64 Статистика Ping для 172.17.0.1: Пакетов: отправлено = 4, получено = 4, потеряно = 0 (0% потерь) Приблизительное время приема-передачи в мс: Минимальное = 100мсек, Максимальное = 101 мсек, Среднее = 100 мсек
C:\>nslookup yandex.ru Server: UnKnown Address: 172.17.0.1 Неофициальный ответ: Name: yandex.ru Addresses: 213.180.193.11 213.180.204.11 77.88.21.11 87.250.250.11И на самом сервере будет видно командой ifconfig поднятный тунель.
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1396 inet 172.17.0.1 --> 172.17.0.2 netmask 0xffffffffВсе пакеты будут отправляться в туннель (так как в настройках TCP/IP-протокола в windows в свойствах VPN-подключения по-умолчанию стоит флажок Использовать основной шлюз в удаленной сети и пропадать оставаться там, так как нет трансляции адресов.
echo 'gateway_enable=YES' >> /etc/rc.conf echo 'firewall_enable=YES' >> /etc/rc.conf echo 'firewall_type="/etc/firewall.conf"' >> /etc/rc.confИ, собственно, сам firewall - отредактируйте /etc/firewall.conf чтобы он содержал строки
nat 1 config if re0 reset same_ports add nat 1 ip from any to any via re0 add allow ip from any to anyТеперь включите forward между интерфейсами и перечитайте правила firewall
sysctl net.inet.ip.forwarding=1 nohup /etc/rc.d/ipfw restart &Внимание. Если вы где-либо ошиблись в firewall, то будет правило по-умолчанию deny from any и вам придется подключаться к локальной консоли VDS-сервера через VNC-протокол чтобы исправить это.
sh /usr/share/examples/ipfw/change_rules.shгде в окне редактора vi который будет запущен через данный скрипт установить нужные правила и применить их. При этом если в течение 30 секунд не будет нажато y (отключился терминал), то правила не будут установлены и будут восстановлена предыдущая конфигурация.
C:\>tracert ya.ru Трассировка маршрута к ya.ru [77.88.21.3] с максимальным числом прыжков 30: 1 155 ms 100 ms 102 ms 172.17.0.1 2 102 ms 102 ms 102 ms gw.webdc.ru [188.120.247.254] 3 104 ms 101 ms 101 ms xe200-40.webdc.ru [92.63.108.89] 4 103 ms 104 ms 103 ms msk-ix-m10.yandex.net [193.232.246.93] 5 104 ms 102 ms 105 ms l3-s3500-marionetka.yandex.net [213.180.213.76] 6 * * * Превышен интервал ожидания для запроса. 7 104 ms 104 ms 105 ms www.yandex.ru [77.88.21.3]
ipfw nat 1 showНа этом установка и настройка закончена.
# apt-get install pptpdвыполнение этой нехитрой команды установит все необходимое ПО для организации VPN-туннеля, которое останется только настроить.
option /etc/ppp/pptpd-options # файл опций logwtmp # логирование pptp-сессий в wtmp localip 172.16.0.1 # внутренний IP VPN-сервера remoteip 172.16.0.2-5 # внтуренние IP клиентовтеперь файл с опциями /etc/ppp/pptpd-options
name pptpd # имя туннеля refuse-pap # отвергать авторизацию PAP refuse-chap # отвергать авторизацию CHAP refuse-mschap # отвергать авторизацию MSCHAP require-mschap-v2 # требовать вторую версию авторизации MSCHAP require-mppe-128 # требовать 128-битное шифрование ms-dns 8.8.8.8 # адрес DNS-сервера, лучше указать IP VDS logfile /var/log/pptpd.log # куда писать логи lock # ставить лочку nobsdcomp # отключить компрессию bsdдальше нужно завести юзера, которым мы будем авторизовываться, можно даже нескольких в /etc/ppp/chap-secrets
# Secrets for authentication using CHAP # client server secret IP addresses user pptpd password *
# echo 1 > /proc/sys/net/ipv4/ip_forwardи настраиваем трансляцию IP-адресов
# iptables -A POSTROUTING -s 172.16.0.0/24 -o eth0 -j MASQUERADE # iptables -A POSTROUTING -o ppp0 -j SNAT --to-source 172.16.0.1собственно все.