Настройка pptpd VPN на linux для выхода в интернет через шлюз.
В качестве VPN сервера воспользуемся пакетом pptpd
итак приступим:
1
|
apt-get install pptpd
|
редактируем файл:
/etc/pptpd.conf
в нем убираем комментарии со строк:
1
2
3
4
|
# IP-адрес сервера в VPN-сети:
localip 192.168.1.1
# Диапазон адресов для выдачи VPN-клиентам:
remoteip 192.168.1.102-154,192.168.1.101
|
Остальное не трогаем. после соединения с сервером вам присвоиться IP из этого диапазона , а локальный ip сервера станет 192.168.1.1.
Теперь правим файл: /etc/ppp/pptpd-options
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# Требовать от клиента обязательное авутентификации:
auth
# Укажем файл, в который писать лог:
logfile /var/log/pptpd.log
# Адрес DNS-сервера, указываемого клиентам:
ms-dns 8.8.8.8
ms-dns 192.168.1.1
# Чтобы не сбивался маршрут по умолчанию:
nodefaultroute
# Опция proxyarp имеет смысл только если вы VPN-клиентам выделяете адреса
# из вашей реальной Ethernet-сети. У нас все VPN-клиенты находятся в другой VPN-подсети,
# поэтому эту опцию закомментируем:
#proxyarp
|
8.8.8.8 – это всем извесный DNS от google.
192.168.1.1 – это локальный DNS у меня на сервере он поднят.
Создаем пользователей, для этого добавляем в файл /etc/ppp/chap-secrets.
1
2
3
|
# Secrets for authentication using CHAP
# client<——>server<>secret<><——><——>IP addresses
userlogin pptpd password *
|
# применим настройки файрвола через rc.local, можно сделать иначе, но я остановился на этом варианте.
nano /etc/rc.local
# добавляем строки до exit 0
iptables -A FORWARD -s 10.1.0.0/24 -j ACCEPT
iptables -A FORWARD -m state —state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.1.0.0/24 -o eth0 -j MASQUERADE
для openvz
iptables -t nat -A POSTROUTING -o venet0 -s 10.0.0.1/24 -j SNAT —to x.x.x.x
Where x.x.x.x is your server’s outgoing IP.
перезапускам сервис, чтобы параметры вступили в силу:
1
|
/etc/init.d/pptpd restart
|
пробуйте присоединиться к серверу, для этого в Windows ищите создание нового соединения там в комментариях указано VPN. Там указываете IP сервера, после появится окошко в нем указываете имя и пароль. Если все правильно сделали то Соединение пройдет успешно. Пробуйте интернет. Если интернет работает, то на этом все и закончилось для вас.
Если не работает делаете следущее:
в командной строке Windows (cmd) пишите:
tracert -d google.com
и смотрите что происходит, если одни звезды значит проблемы на сервере, ваши пакеты не проходят.
идем на сервер и прописываем следущее:
1
|
echo 1 >/proc/sys/net/ipv4/ip_forward
|
Если появился интернет на этом заканчиваем.
Если нет продолжаем
tracert -d google.com
Смотрите первым хостом пройденым должнен стать ваш сервис и появятся циферки вместо звезд.
но до конца всеравно ничего не доходит, значит на сервере надо настроить трансляцию адресов тоесть NAT:
идем на сервер и прописываем следущее
(разрешаем обращаться в интернет)
1
|
iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT
|
(разрешаем интернету отдавать пакеты)
1
|
iptables -A FORWARD -d 192.168.1.0/24 -m state —state ESTABLISHED,RELATED -j ACCEPT
|
(ethX заменить на внешний интерфейс, 123.123.123.123 заменить на внешний ip, с этого ип пользователи будут ходить в интернет)
узнать eth[0/1/2/3/4] и внешний IP, можно так:
1
|
ifconfig
|
она вам выдаст все интерфейсы и IP к ним привязанные. веберите нужный и укажите в командной строке
1
|
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ethX -j SNAT —to-source 123.123.123.123
|
все правила iptables живут до перезагрузки по этому либо вы их кудато записываете и при каждой перезагрузке вводите, либо создаете батник который будет это все выполнять при старте сервера.
vps
также возможно большое MTU
узнать какое MTU максимально
ping ya.ru -f -l 1500