Итак, настройка VPN для работы с vpn.bigtelecom.ru в RPM-семействе Linux.Данная инструкция справедлива для дистрибутивов, построенных на основе
RedHat и ее клонов, а именно:
Fedora Core, CentOS, ASPLinux.
С некоторыми оговорками и поправками этот мануал можно применять в "идеологически близких" к RedHat (
RPM-based) дистрибутивах, а именно:
Mandriva, SuSe.
Данная инструкция
НЕ применима к Deb-based дистрибутивам и дистрибутивам типа "Linux-from-scratch", а именно:
Debian, *ubuntu, runtu, Gentoo.
Шаг 1.Убеждаемся что в конфигурационных файлах прописаны
статические маршруты до сервера vpn.bigtelecom.ru. В консоли даём команду
# route -n
и смотрим что на выходе. Должно быть что-то вроде вот этого:
Код
Destination Gateway Genmask Flags Metric Ref Use Iface
87.255.0.139 10.10.xxx.1 255.255.255.255 UGH 0 0 0 ethY
87.255.4.195 10.10.xxx.1 255.255.255.255 UGH 0 0 0 ethY
87.255.0.192 10.10.xxx.1 255.255.255.248 UG 0 0 0 ethY <----
87.255.0.160 10.10.xxx.1 255.255.255.224 UG 0 0 0 ethY
87.255.0.128 10.10.xxx.1 255.255.255.224 UG 0 0 0 ethY
10.10.xxx.0 0.0.0.0 255.255.255.0 U 0 0 0 ethY
10.0.0.0 10.10.xxx.1 255.0.0.0 UG 0 0 0 ethY <----
Здесь
xxx - номер Вашего сегмента,
Y - номер сетевого интерфейса, который "смотрит" в сеть himki.net. Стрелочками отмечены два самых важных маршрута. Первый - до сервера "vpn.bigtelecom.ru", второй - внутренняя адресация сети himki.net. Если эти два маршрута у вас имеются, можете сразу переходить к шагу №2. Если нет - читайте дальше.
Повторяю, самыми главными являются маршруты до vpn.bigtelecom.ru (на момент написания этого поста 87.255.0.192/29) и на внутреннюю подсеть himki.net (10.0.0.0/8). Без всех остальных, в-принципе, можно жить.
Важно: в списке маршрутов
НЕ ДОЛЖНО быть дефолтного (0.0.0.0). Об этом смотри чуть ниже.
Как прописАть эти маршруты если их нет.
1. Идём в /etc/sysconfig/network-scripts
2. Создаём в этой директории файл с названием route-eth
Y , где
Y - номер сетевой карты, "смотрящей" в сеть himki.net.
3. Пишем в этом файле что-то вроде того:
Код
10.0.0.0/8 via 10.10.xxx.1 <----
87.255.0.160/27 via 10.10.xxx.1
87.255.0.192/29 via 10.10.xxx.1 <----
87.255.0.128/27 via 10.10.xxx.1
87.255.4.195/32 via 10.10.xxx.1
87.255.0.139/32 via 10.10.xxx.1
где
xxx - номер Вашего сегмента.
Стрелочками отмечены самые важные маршруты, без которых ничего работать не будет.
4. Даём команды
ifdown ethY
ifup ethY
(что такое ethY уже писАл выше)
После этого смотрим
route -n
там должны появиться необходимые маршруты.
ВНИМАНИЕ, ВАЖНО!!!В списке маршрутов
НЕ ДОЛЖНО быть машрута по-умолчанию. Это маршрут вида
Код
0.0.0.0 10.10.xxx.1 0.0.0.0 UG 0 0 0 ethY
Если в выводе команды "route -n" таковой присутствует - убирайте его. Проверяйте настройки сетевых интерфейсов /etc/sysconfig/network-scripts/ifcfg-eth* и файл /etc/sysconfig/network . Там
НЕ ДОЛЖНО быть никаких упоминаний типа "GATEWAY=бла-бла-бла".
Далее, проверяем работоспособность всего это хозяйства.
а) Пробуем пинговать DNS-серверы himki.net :
ping 10.10.250.250 -c5
(должно пинговаться)
б) Пробуем пинговать vpn.bigtelecom.ru :
ping 87.255.0.194 -c5
(должно пинговаться)
в) Пробуем пинговать Yandex:
ping 213.180.204.8 -c5
Должен быть ответ вида "CONNECT: Network unreachable"
Если все правильно, то переходим к следующему шагу. Если нет, то проверяем все еще раз очень внимательно.
Шаг 2.
Проверяем работу DNS.
Даём команду
host vpn.bigtelecom.ru
либо
nslookup vpn.bigtelecom.ru
Если вы увидите что-нибудь вроде
Код
vpn.bigtelecom.ru has address 87.255.0.194
или (что то же самое)
Код
Non-authoritative answer:
Name: vpn.bigtelecom.ru
Address: 87.255.0.194
значит всё в порядке, можете переходить к следующему шагу.
В противном случае идём ковырять /etc/resolv.conf (если не используется named), либо /etc/named.conf (если используется named), либо на худой конец /etc/hosts (если ну уж совсем ничего не помогло).
Примечание.В современных дистрибутивах Linux механизм разрешения имен с помощью файла resolv.conf заменен на демон
resolvconfd, который каждый раз при запуске/останове отдельных интерфейсов может подменять содержимое файла resolv.conf. Есть два варианта решения:
1. Отключить/удалить
resolvconfd.
2. ПрописАть DNS не в файле resolv.conf, а в /etc/resolvconfd/resolv.conf.d/base, после чего (пере)запустить
resolvconfd.
Если у Вас в директории
/etc имеется поддиректория
resolvconf*, значит это примечание для Вас как раз актуально.
Шаг 3.Проверяем, установлены ли пакеты ppp и pptp (или собраны ли соответствующие демон и библиотека).
Для этого даём команды
rpm -q ppp
rpm -q pptp
либо
rpm -qa | grep ppp
rpm -qa | grep pptp
Если увидим что-то в духе:
Код
ppp-2.4.2-7asp
pptp-1.7.0-2.110asp
то всё в порядке.
Если нет, идём ставить/собирать необходимые пакеты. Владельцев CentOS 5 могу "обрадовать" сразу - pptp в дистрибутиве отсутствует как класс, даже и не ищите его там. В 8-й федоре - то же самое. Но можете собрать pptp сами из исходников, поискать rpm-ку на rpmfind-е либо у Dag-а или попросить у меня - я поделюсь.
Шаг 4.Пишем конфиги.
Идём в /etc/ppp, там создаём файл под названием options.big (к примеру) следующего содержания:
Код
lock
+chap
noauth
defaultroute
noipdefault
nomppe
nomppc
noproxyarp
nodeflate
nobsdcomp
noipx
local
persist
maxfail 0
mtu 1476
mru 1476
logfile /var/log/ppp/ppp-big.log
linkname big
name ZZZZZZZ
remotename vpn
sync
pty "pptp vpn.bigtelecom.ru --nolaunchpppd --sync --nobuffer --loglevel 0"
где
ZZZZZZZ - номер Вашего договора с БигТелекомом.
Затем редактируем файл /etc/ppp/chap-secrets, добавив в него следующую строку:
Код
ZZZZZZZ vpn PPPPPPP *
где
ZZZZZZZ - номер Вашего договора с БигТелекомом,
PPPPPPP - Ваш пароль от личного кабинета (статистики).
Затем пишем маленький скриптик вида:
Код
#!/bin/bash
/usr/sbin/pppd file /etc/ppp/options.big
и кладём его в любую удобную директорию. При запуске этого скриптика будет устанавливаться VPN-соединение с провайдером до тех пор, пока Вы сами его не разорвёте командой
killall pppd
При случайной потере пакетов соединение восстановится автоматически благодаря опциям "persist" и "maxfail 0" в вышеприведенном конфиге.
Если что-то пошло не так, читаем логи в файле /var/log/ppp/ppp-big.log
В них должна быть информация, которая позволит понять в чем именно возникли проблемы.
Дополнения (опции).
Если необходимо, чтобы VPN-соединение автоматически устанавливалось при запуске системы,
смотри сюда.
Если Ваш компьютер является роутером (т.е. обеспечивает связь между интернетом и несколькими домашними компьютерами), то дополнительно нужно сделать следующее.
В файле /etc/sysctl.conf находим строчку
Код
net.ipv4.ip_forward = 0
Заменяем 0 на 1, сохраняем файл, после чего даем команду
Код
/etc/init.d/network restart
Затем разрешаем NAT и форвард пакетов в FireWall-е:
Код
iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD -i ethINT -o ethY -j ACCEPT
iptables -t nat -A POSTROUTING -o ethY -j SNAT --to-source 10.10.ваш.ip_адрес
iptables -t nat -A POSTROUTING -o ppp+ -j MASQUERADE
где
ethINT - интерфейс "смотрящий" внутрь квартирной подсети,
ethY - интерфейс в химки_нет
Если хочется еще и смотреть ipTV при включенном VPN, то
смотри сюда.
P.S. Ненавижу Invision!