Показаны сообщения с ярлыком ufanet. Показать все сообщения
Показаны сообщения с ярлыком ufanet. Показать все сообщения

четверг, 2 апреля 2009 г.

VPN-подключение к Уфанет и локальные ресурсы через Ethernet

Примерно в середине февраля стало известно, что Уфанет плавно модернизирует свою сеть и теперь у некоторых абонентов локальные ресурсы стали доступны без VPN-подключения. По неофициальной информации от сотрудников Уфанет локальные ресурсы доступны без VPN-подключения тем абонентам, которые по DHCP получают адреса из диапазона 10.160.0.0-10.191.255.255 (10.160.0.0/11). Проверьте адрес, который вам выдаёт DHCP-сервер, возможно вы один из счастливчиков :)

У меня стали спрашивать, как бы переделать два VPN-подключения на новую схему, чтобы можно было обойтись одним подключением, а локальный трафик направить через Ethernet. Я решил написать второй вариант настройки, однако проверить я его не могу, поэтому работоспособность не гарантирую (впрочем, как и раньше). Если что не получается - вам придётся приложить усилия к наладке самостоятельно, я по мере возможности постараюсь помочь.

Для настройки двух VPN-соединений нам понадобятся пакеты pptp-linux, resolvconf, iproute, ifupdown, bind9-host. Их можно установить командой:
# aptitude install pptp-linux resolvconf iproute bind9-host
ifupdown входит в минимальную поставку системы, поэтому в установке не нуждается.

1. Настроим сетевые интерфейсы.

Настроим локальный петлевой интерфейс, Ethernet-интерфейс Уфанет, и автоматическое подключение внешнего VPN-соединения.

/etc/network/interfaces:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto iunlim
iface iunlim inet ppp
provider iunlim

Добавляем в файл конфигурации DHCP-клиента /etc/dhcp3/dhclient.conf новую секцию, связанную с интерфейсом eth0:
interface "eth0" {
  script "/root/bin/dhclient-ufanet";
}
Вам может понадобиться заменить в файлах инициализации интерфейс eth0 (выше он выделен жирным шрифтом) на тот, к которому подключен Ethernet-кабель Уфанет.

Копируем сценарий, выполняющийся по умолчанию, в каталог /root/bin/ под именем dhclient-ufanet:
# mkdir /root/bin/
# cp /sbin/dhclient-script /root/bin/dhclient-ufanet
Заменяем в скопированном сценарии строчки следующего вида в двух местах:
for router in $new_routers; do
  route add default dev $interface gw $router $metric_arg
done
на блок:
for router in $new_routers; do
  ip route add 81.30.176.0/20 via $router dev $interface src $new_ip_address table main
  ip route add 81.30.192.0/19 via $router dev $interface src $new_ip_address table main
  ip route add 89.189.128.0/19 via $router dev $interface src $new_ip_address table main
  ip route add 77.79.128.0/18 via $router dev $interface src $new_ip_address table main
  ip route add 92.50.128.0/18 via $router dev $interface src $new_ip_address table main
  ip route add 94.41.0.0/18 via $router dev $interface src $new_ip_address table main
  ip route add 94.41.128.0/21 via $router dev $interface src $new_ip_address table main
  ip route add 94.41.136.0/22 via $router dev $interface src $new_ip_address table main
  ip route add 94.41.140.0/23 via $router dev $interface src $new_ip_address table main
  ip route add 79.140.24.0/22 via $router dev $interface src $new_ip_address table main
  ip route add 79.140.16.0/21 via $router dev $interface src $new_ip_address table main
  ip route add 172.16.0.0/12 via $router dev $interface src $new_ip_address table main
  ip route add 10.0.0.0/8 via $router dev $interface src $new_ip_address table main

  ip route add default via $router dev $interface src $new_ip_address table lunlim
  ip rule add from $new_ip_address table lunlim
done
2. Настроим приоритеты DNS-серверов.

DNS-серверы на интерфейсе ppp должны быть приоритетнее DNS-серверов на интерфейсе Ethernet, поэтому в файле /etc/resolvconf/interface-order строчку ppp* поместим перед eth*.

/etc/resolvconf/interface-order:
# interface-order(5)
lo.inet*
lo.dnsmasq
lo.pdnsd
lo.!(pdns|pdns-recursor)
lo
tun*
tap*
ppp*
eth*
ath*
wlan*
*
3. Создадим таблицы маршрутизации.

Добавим две таблицы с именами lunlim и iunlim, которые будут содержать маршруты ответственные за работу ответного трафика соединений устанавливаемых снаружи.

/etc/iproute2/rt_tables:
#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep

201     iunlim
202     lunlim
4. Настроим VPN-соединение.

Зададим опции для PPP-соединения.

/etc/ppp/options:
asyncmap 0
auth
crtscts
lock
hide-password
modem
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
noipx
usepeerdns
Зададим опции для PPTP-соединения.

/etc/ppp/options.pptp:
lock
noauth
nobsdcomp
nodeflate
persist
maxfail 0
В файле /etc/ppp/chap-secrets пропишем логин и пароль на подключение к VPN-серверу Уфанет.

/etc/ppp/chap-secrets:
# Secrets for authentication using CHAP
# client           server          secret     IP addresses
freedom_login      vpn.ufanet.ru   password   *
freedom_login - это логин на подключение по тарифу "Свобода".
password - это соответствующий пароль на подключение.

Ваш логин необходимо прописать также в файле /etc/ppp/peers/iunlim далее по тексту (он выделен жирным шрифтом).

Файл /etc/ppp/peers/iunlim задаёт настройки подключения по безлимитному тарифу "Свобода" и привязывает его к интерфейсу ppp0.

/etc/ppp/peers/iunlim:
pty "pptp vpn.ufanet.ru --nolaunchpppd"
name freedom_login
remotename vpn.ufanet.ru
file /etc/ppp/options.pptp
ipparam iunlim
unit 0
В скрипте /etc/ppp/ip-up.d/route происходит добавление маршрутов маршрутов к нелокальным узлам на внешнем соединении.

/etc/ppp/ip-up.d/route:
#!/bin/sh

case "$PPP_IPPARAM" in
  iunlim)
    ip route add 81.30.199.50 dev $PPP_IFACE src $PPP_LOCAL table main
    ip route add 81.30.199.69 dev $PPP_IFACE src $PPP_LOCAL table main
    ip route add 81.30.199.238 dev $PPP_IFACE src $PPP_LOCAL table main
    ip route add 81.30.197.10 dev $PPP_IFACE src $PPP_LOCAL table main
    ip route add default dev $PPP_IFACE src $PPP_LOCAL table main

    ip route add default dev $PPP_IFACE src $PPP_LOCAL table iunlim
    ip rule add from $PPP_LOCAL table iunlim
    ;;
  *)
    echo "No PPP_IPPARAM defined"
    ;;
esac
Не забудьте сделать скрипт исполняемым, например командой:
# chmod +x /etc/ppp/ip-up.d/route
В скрипте /etc/ppp/ip-down.d/route происходит удаление маршрутов к нелокальным узлам на внешнем соединении.

/etc/ppp/ip-down.d/route:
#!/bin/sh

case "$PPP_IPPARAM" in
  iunlim)
    ip route del 81.30.199.50 dev $PPP_IFACE src $PPP_LOCAL table main
    ip route del 81.30.199.69 dev $PPP_IFACE src $PPP_LOCAL table main
    ip route del 81.30.199.238 dev $PPP_IFACE src $PPP_LOCAL table main
    ip route del 81.30.197.10 dev $PPP_IFACE src $PPP_LOCAL table main
    ip route del default dev $PPP_IFACE src $PPP_LOCAL table main

    ip route del default dev $PPP_IFACE src $PPP_LOCAL table iunlim
    ip rule del from $PPP_LOCAL table iunlim
    ;;
  *)
    echo "No PPP_IPPARAM defined"
    ;;
esac
Не забудьте сделать скрипт исполняемым, например командой:
# chmod +x /etc/ppp/ip-down.d/route
Для ручного включения и отключения соединения можно пользоваться командами:
pon iunlim - включить безлимитный интернет,
poff iunlim - отключить безлимитный интернет,

В файле /etc/network/interfaces настроена автоматическая установка VPN-соединения. Можете изменить настройки в этом файле по своему желанию - оставить соединение или отключить его. При этом вы всегда сможете установить или разорвать соединение вручную, командами описанными выше.

Ссылка на исходную статью: Два VPN-подключения к Уфанет

Обновлено 6 апреля 2009 года.

суббота, 4 октября 2008 г.

Настраиваем VPN-соединение с Уфанетом в Debian

Дома у меня есть интернет от уфимского провайдера "Уфанет", пользуюсь системой Debian GNU/Linux. Для того, чтобы получить доступ в интернет, нужно установить VPN-соединение, а точнее - PPTP.

Первый этап предполагает настройку Ethernet-соединения, а точнее настройку интерфейса на получение настроек по DHCP.

Делается это элементарно. В файле /etc/network/interfaces нужно добавить пару строчек:
auto eth0
iface eth0 inet dhcp
eth0 - это имя сетевого интерфейса, подключенного к сети Уфанет. Узнать список доступных интерфейсов можно с помощью команды:
$ ifconfig -a
Далее установим pptp-клиент и пакет resolvconf:
# aptitude install pptp-linux resolvconf
Пакет resolvconf добавляет к клиентам dhcp и pptp специальные сценарии, которые перехватывают информацию о DNS-серверах, полученную от dhcp- и pptp-серверов соответственно. Основываясь на перехваченной информации сценарии выполняют корректное обновление списка DNS-серверов в файле /etc/resolv.conf

Процесс настройки состоял из серии проб и ошибок, но в конце концов получилось удачно скомпилировать информацию из разных источников. В результате появился работоспособный набор конфигурационных файлов и скриптов.

Краткие пояснения по файлам конфигурации:

login - логин на соединение (именно логин, а не номер договора)
password - пароль на соединения (пароль на соединение, а не на просмотр баланса)
vpn.ufanet.ru - доменное имя VPN-сервера Уфанет

Теперь сами файлы:
/etc/ppp/peers/ufanet
pty "pptp vpn.ufanet.ru --nolaunchpppd"
name login
remotename vpn.ufanet.ru
file /etc/ppp/options.pptp
ipparam ufanet   # Этот параметр передаётся в скрипты настройки
                 # маршрутизации, о которых ниже
/etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client    server           secret      IP addresses
login       vpn.ufanet.ru    password    *
/etc/ppp/options
asyncmap 0
auth
crtscts
lock
hide-password
modem
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
noipx
/etc/ppp/options.pptp
lock
noauth
nobsdcomp
nodeflate
persist    # Восстанавливать соединение при обрыве
Теперь собственно скрипты для прописывания маршрутов при поднятии линка и для удаления маршрутов при падении линка. Скрипты были почерпнуты в одной из Интернет-конференций и доработаны под наш случай (в исходном виде скрипты, увы не работали).

/etc/ppp/ip-up.d/route
#!/bin/sh

case "$PPP_IPPARAM" in
  ufanet)
    SERVER=vpn.ufanet.ru
    GW=`route -n | grep ^0\.0\.0\.0 | awk '{print $2}'`
    route del $PPP_REMOTE dev $PPP_IFACE
    route add -host $SERVER gw $GW
    route add default dev $PPP_IFACE
    ;;
  *)
    echo "No PPP_IPPARAM defined"
    ;;
esac
/etc/ppp/ip-down.d/route
#!/bin/sh

case "$PPP_IPPARAM" in
  ufanet)
    SERVER=vpn.ufanet.ru
    route del -host $SERVER
    route del default dev $PPP_IFACE
    ;;
  *)
    echo "No PPP_IPPARAM defined"
    ;;
esac
Для того, чтобы сценарии заработали, нужно добавить им бит исполняемости:
# chmod +x /etc/ppp/ip-up.d/route /etc/ppp/ip-down.d/route
Подключение осуществляется с помощью команды:
# pon ufanet
Отключение осуществляется с помощью команды:
# poff ufanet
Команды pon и poff нужно выполнять от пользователя root.

Чтобы соединение устанавливалось при старте системы, можно прописать в файл /etc/network/interfaces следующие строки:
auto ufanet
iface ufanet inet ppp
  provider ufanet

среда, 10 сентября 2008 г.

Кое-что об Ufanet

1. Диапазоны локальных и "белых" IP-адресов Ufanet:

192.168.0.0/16
172.16.0.0/12
10.0.0.0/8
46.191.128.0/17
81.30.176.0/20
81.30.192.0/19
89.189.128.0/19
77.79.128.0/18
79.140.16.0/20
92.50.128.0/18
94.41.0.0/16
95.105.0.0/17
136.169.128.0/17
145.255.0.0/19

Эта информация взята с сайта ufaman.ru, со страницы о локальных подсетях.

2. Cамое вкусное - сервис dyndns.

Раньше этот сервис подключался автоматически и работал всегда. Теперь его можно включить через страницу статистики, для каждого из подключенных тарифов отдельно.

Если сервис включен, то при установке VPN-подключения создаётся DNS-запись вида логин.dyn.ufanet.ru на сервере ns2.ufanet.ru.

TTL этой записи равен 10 минутам, поэтому может потребоваться 10 минут, прежде чем кеширующие DNS-серверы начнут возвращать актуальную информацию.

Подробнее.

3. DNS-серверы Ufanet имеют IP-адреса 81.30.199.5 и 81.30.199.94.

4. Локальные сети с "серыми" IP.

IP-адрес VPN-сервера vpn.ufanet.ru - 10.8.0.1.
IP-адрес локального DNS-сервера - 10.8.3.1.
IP-адрес веб-сервера ufaman.ru (или beta.ufanet.ru), доступного для просмотра без установки VPN-соединения: 81.30.199.65.

Скорее всего VPN-сервер не один, просто все VPN-серверы находятся в разных VLAN-ах.

Все "серые" сети изолированы. Внутри "серых" сетей шлюз постоянно отправляет широковещательный ARP-ответ, сообщая что широковещательный IP-адрес занят шлюзом. Из-за этого в "серых" сетях не работают все широковещательные протоколы - это безсерверные чаты, игры, сетевые папки SMB. Подключаться напрямую по IP-адресам можно, только ситуация осложняется тем, что эти адреса динамические и выдаются DHCP-сервером. Поэтому для подключения двух компьютеров нужно предварительно узнать "серый" IP-адрес сервера.

5. О локальных сервисах можно узнать на странице http://ufaman.ru/nashi-resursy/ и на сайте http://mir.ufanet.ru/.

6. В Уфе теперь можно подключаться не только по PPTP, но и по PPPoE. PPPoE лучше тем, что меньше нагружает компьютер и позволяет добиваться более высокой скорости передачи данных. А ещё - он проще настраивается, т.к. не нужно указывать адрес сервера. В Linux'ах настройка упрощается ещё больше, так как не нужно ещё и прописывать маршрут к серверу и не нужно настраивать DHCP-клиент так, чтобы он не принимал маршут по умолчанию.

Вот, пожалуй, и всё, что я хотел сказать.

Обновлено 18 декабря 2009 года.

Обновлено 30 августа 2013 года.