пятница, 6 июля 2012 г.

Настройка VPN-сервера PPTPD на базе Ubuntu Server 10.04 LTS для раздачи интернета в локальную сеть офиса

Статью писал, основываясь на личном опыте недельной е*ли с настройками сервака и поисков в гугле. В результате имеем 100% рабочую конфигурацию (все юзвери получают инфернет, все интернет-ресурсы доступны) без багов и подводных камней. Т.к. не обладаю достаточным опытом ни в написании статей, ни в администрировании линуксячих серверов, то опишу все "народным" языком... Итак...

Имеем:

1) Роутер, подсоединенный по PPTP к местному провайдеру. Нужен так же WiFi для отдельного круга нетбуков и ноутов, на которых не будет заводиться свое VPN, т.к. этот круг постоянно меняется. Ноуты будут получать инет из сетки роутера. Потому конфиг сети именно такой =)

2) Всежеустановленный сервер Ubuntu Server 10.04 LTS

3) 2 сетевые карты, одна из которых (eth0) смотрит во внутреннюю сеть роутера и получает из нее интернет, а вторая (eth1) - во внутреннюю сеть здания. К ней и будут коннектиться пользовательские компы.

Для таких же, как я: Прелесть PPTPD-сервера в том, что для него, в отличии от того же OpenVPN, не требуется установка отдельного VPN-клиента на пользовательские машины, достаточно встроенных средств винды или той же линухи.

Установка сервака происходит довольно просто, вот ссылка на мою же статейку. После установки самой системы дальнейшее выполняется одним скриптом. Для общения с сервером из моей винды (да, пока еще грешу этим делом чтоб в игрульки поиграть) по SSH я использовал putty. Мануалов по его настройке и установке предостаточно на просторах инфернета. Вот, как по мне, хорошо прописанная инструкция по установке. Для запуска иксов на винде (кому вдруг необходимо) рекомендую Xming. После его установки в putty, в колонке Connection - SSH - X11, поставьте галочку на Enable X11 Forvarding.

Скажем, сервер у Вас рабочий уже имеется. Тогда приступим к настройке.

  • Настраиваем сеть. У меня, как я уже говорил, две сетевухи. Вот мой конфиг: 
sudo nano /etc/network/interfaces



sudo /etc/init.d/networking restart

Проверяем, чтоб все было православно:

ifconfig -a

Если вывод команды показывает, что все так, как Вы настраивали, и ошибок нет, то идем дальше.

  • Ставим следующие пакеты:
sudo apt-get install ppp pptpd bind9

DNS-сервер настройки для нашего случая не требует, потому сразу
  • Настраиваем PPTPD-сервер
sudo nano /etc/ppp/pptpd-options

# Authentication
name pptpd
auth

# Encryption
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128

# По умолчанию для шифромания ничего менять не надо, но на всякий случай сверьтесь

# Network and Routing
ms-dns 192.168.137.1

# В качестве DNS для наших VNP-соединений указываю адрес моего eth1

#proxyarp

# Мы не раздаем пользователям IP из нашей реальной подсети, потому смело каментим 
# данный параметр

# Logging
logfile /var/log/pptpd.log

# Указываем путь к файлу, в который наш PPTPD будет писать лог подключений и т.п.
# С pptpd-options все, идем дальше.

sudo nano /etc/pptpd.conf 

bcrelay eth1 

#Широковещательные пакеты пользователям из внутреннего интерфейса


localip 192.168.137.1
remoteip 192.168.137.100-200 

# Локальный адрес - адрес внутренней сетевой, внешний адрес - группа адресов, 
# выдаваемых пользователям при подключении.
# С pptpd.conf все, идем дальше.

  • Создадим пользователей нашего VPN-сервера:
 sudo nano /etc/ppp/chap-secrets

Client              Server              Passwd                IP
geshyk <Tab>  pptpd  <Tab> gn1203td  <Tab> "*"
stalker <Tab>   pptpd <Tab> o1bp3t09  <Tab> "*"

# Пользователей создаем именно в таком формате, вместо <Tab> должно быть понятное  # дело что :) Если Вы не будете закреплять за каждым пользователем отдельный IP, то  
# напротив него в соответствующей графе ставим "*"

  • Настраиваем IPTABLES, будь он, курва, неладен:
Для этого создадим скрипт и поставим его в автозагрузку. Скрипт был скопипизжен из сети. Разберитесь и, если надо, переделайте под себя.

sudo nano /etc/init.d/firewall.sh

#!/bin/sh

# Минимальные настройки скрипта
# Внешний интерфейс
IF_EXT="eth0"
# Внутренний интерфейс
IF_INT="eth1"
# Локальная сеть
NET_INT="192.168.137.0/255.255.255.0"

# На всякий случай сбрасываем все правила
iptables -F
iptables -F -t nat

# Устанавливаем политики по умолчанию:
# Никого не пускать
#iptables -P INPUT DROP
# Всех выпускать
#iptables -P OUTPUT ACCEPT
# Мимо нас никто не ходит
#iptables -P FORWARD DROP

# Впускаем ответы на запросы, которые сами отправили
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Разрешаем весь трафик на внутреннем интерфейсе
iptables -A INPUT -i lo -j ACCEPT

# Разрешаем весь трафик со стороны локальной сети
iptables -A INPUT -i ${IF_INT} -s ${NET_INT} -j ACCEPT

# Разрешаем весь трафик, который необходим для работы PPTP-сервера
iptables -A INPUT -m tcp -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -p gre -j ACCEPT

# NAT для локальной сети на внешнем интерфейсе
iptables -t nat -A POSTROUTING -s ${NET_INT} -j MASQUERADE -o ${IF_EXT}
# Разрешаем пересылку пакетов из локальной сети наружу
iptables -A FORWARD -i ${IF_INT} -o ${IF_EXT} -s ${NET_INT} -j ACCEPT
# Разрешаем пересылку в локальную сеть ответов на исходящие запросы
iptables -A FORWARD -i ${IF_EXT} -o ${IF_INT} -d ${NET_INT} -m state --state RELATED,ESTABLISHED -j ACCEPT
# Разрешаем все пинги.
#iptables -A INPUT -p icmp -j ACCEPT
#Настройка MTU
#iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu 

# Делаем его исполняемым и ставим на старт при загрузке системы

cd /etc/init.d
sudo chmod +x firewall.sh
sudo update-rc.d firewall.sh defaults 99

# В файле /etc/sysctl.conf раскоментируем одну строчку, чтобы разрешить пересылку
# IP-пакетов в ядре.

sudo nano /etc/sysctl.conf

net.ipv4.ip_forward=1

# Перезагружаем сервер

sudo reboot 

Перезагружаем сервер, и проверяем коннект пользователей. В винде нужно создать pptp-подключение, поставив обязательным шифрование и оставив только MS-Chap v.2. В настройках сетевой указывайте любой IP в диапазоне 192.168.137.2-99, ибо 192.168.137.100-200 раздаются vpn-соединениям, а эти вещи ни в коем случае не должны пересекаться.

Вот, собственно, и все... Удачного пользования. Надеюсь, кого-то эта статейка спасла от бесполезной траты драгоценных человекочасов на сидение перед монитором. И вместо этого человек пошел к кентам и пива попил с рыбкой.
 
 
 

2 комментария:

  1. СПС, очень мне помогло, два дня перед этим мучился!

    ОтветитьУдалить
  2. Благодарю за статью. В сумме с http://imbicile.pp.ru/2013/ubuntu-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-vpn/ очень помогло. Особо дополнение к iptablse

    ОтветитьУдалить