Статью писал, основываясь на личном опыте недельной е*ли с настройками сервака и поисков в гугле. В результате имеем 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 /etc/init.d/networking restart
Проверяем, чтоб все было православно:
Если вывод команды показывает, что все так, как Вы настраивали, и ошибок нет, то идем дальше.
DNS-сервер настройки для нашего случая не требует, потому сразу
# 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 все, идем дальше.
Client Server Passwd IP
geshyk <Tab> pptpd <Tab> gn1203td <Tab> "*"
stalker <Tab> pptpd <Tab> o1bp3t09 <Tab> "*"
# Пользователей создаем именно в таком формате, вместо <Tab> должно быть понятное # дело что :) Если Вы не будете закреплять за каждым пользователем отдельный IP, то
# напротив него в соответствующей графе ставим "*"
#!/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
# Делаем его исполняемым и ставим на старт при загрузке системы
# В файле /etc/sysctl.conf раскоментируем одну строчку, чтобы разрешить пересылку
# IP-пакетов в ядре.
sudo nano /etc/sysctl.conf
Перезагружаем сервер, и проверяем коннект пользователей. В винде нужно создать pptp-подключение, поставив обязательным шифрование и оставив только MS-Chap v.2. В настройках сетевой указывайте любой IP в диапазоне 192.168.137.2-99, ибо 192.168.137.100-200 раздаются vpn-соединениям, а эти вещи ни в коем случае не должны пересекаться.
Вот, собственно, и все... Удачного пользования. Надеюсь, кого-то эта статейка спасла от бесполезной траты драгоценных человекочасов на сидение перед монитором. И вместо этого человек пошел к кентам и пива попил с рыбкой.
Имеем:
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
Если вывод команды показывает, что все так, как Вы настраивали, и ошибок нет, то идем дальше.
- Ставим следующие пакеты:
DNS-сервер настройки для нашего случая не требует, потому сразу
- Настраиваем PPTPD-сервер
# 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
Вот, собственно, и все... Удачного пользования. Надеюсь, кого-то эта статейка спасла от бесполезной траты драгоценных человекочасов на сидение перед монитором. И вместо этого человек пошел к кентам и пива попил с рыбкой.
СПС, очень мне помогло, два дня перед этим мучился!
ОтветитьУдалитьБлагодарю за статью. В сумме с 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
ОтветитьУдалить