Статус партнерства с 1С-Битрикс: Бизнес партнер
  • Маркетплейс
  • Софт
  • Документация
  • Блог
  • Новости
  • Профиль
  • Подключение через VPN (pptp клиент) в GNU/Linux

    01.02.2009

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

    Все описанное проверено на дистрибутива Debain Squeeze. Впрочем наверняка будет работать и в прочих дистрибутивах GNU/Linux. Мне не очень нравятся графические утилиты для настройки сети и по этому описываю, как все настроить в консоли. Все команды, приведенные ниже, необходимо выполнять с привилегиями пользователя root, т.е. вы должны либо зайти в терминал под root'ом или воспользоваться в терминале командой "su" или перед каждой командой вводить "sudo". Конфигурационные файлы редактировать надо так же от root.

    Итак имеем:

    • провайдер, предоставляющий интернет через VPN соединение.
    • <ip_prov_local> - ip адрес нашего компьютера в локальной сети провайдера
    • <ip_prov_mask> - маска подсети
    • <ip_gateway> - ip-адрес шлюза
    • <ip_dns_0> - ip-адрес предпочитаемого сервера DNS
    • <ip_dns_1> - ip-адрес альтернативного сервера DNS
    • <address_vpn> - адрес VPN сервера
    • <ip_vpn_server> - ip-адрес VPN сервера. Изначально провайдер дал только адрес vpn сервера в виде vpn.providername.ru. Если вы не знаете IP адреса, везде в настройках, где указан данный параметр, можете указать <address_vpn>. Узнать ip-адресс можно после настройки связи с локальной сетью провайдера и с указанными серверами DNS.
    • <user_name> - имя пользователя VPN соединения
    • <user_pass> - пароль пользователя VPN соединения
    • <vpn_name> - имя VPN соединения. Нужно придумать самостоятельно. Я задал по имени провайдера.
    • для правильной работы локальной сети провайдер предлагает добавить маршрут командой (синтаксис для ОС Windows !)
      route add -p <network_ip> mask <mask_ip> <ip_gateway>

    Открываем в редакторе файл /etc/network/interfaces. И редактируем секцию интерфейса, к которому подключен провайдер (в качестве примера eth1).

    iface eth1 inet static
    
    # указываем адрес нашего компьютера в локальной сети провайдера
    address <ip_prov_local>
    
    # указываем маску подсети
    netmask <ip_prov_mask>
    
    # указываем адрес шлюза
    gateway <ip_gateway>
    
    # добавляем предложенное провайдером правило маршрутизации
    up route add -net <network_ip> netmask <mask_ip> gw <ip_gateway>
    
    # добавляем правило маршрутизации до VPN сервера
    up route add -host <ip_vpn_server> gw <ip_gateway>
    
    # следующая команда заставляет подключать VPN соединение (подключение к внешке)
    # при подключении интерфейса т.е. соединение с внешним интернетом будет происходить
    # автоматически при подключении интерфейса (в т.ч. и при загрузке ОС)
    # если вам не нужно автоматическое подключение, закомментируйте или удалите эту строку
    post-up pon <vpn_name>
    
    # следующая команда заставляет отключать VPN соединение (подключение к внешке) при
    # отключении интерфейса, если вам не нужно автоматическое подключение, закомментируйте
    # или удалите эту строку
    pre-down poff <vpn_name>
    
    auto eth1
    

    Теперь необходимо задать адрес серверов DNS. Для этого открываем файл /etc/resolv.conf и добавляем следующие строки:

    nameserver <ip_dns_0>
    nameserver <ip_dns_1>
    

    Теперь при перезагрузке сети (при перезагрузке системы или по команде /etc/init.d/networking restart вам будет доступна локальная сеть провайдера. И вы можете узнать IP-адрес VPN-сервера при помощи команды ping <address_vpn>

    Теперь необходимо настроить VPN соединение.

    В систем должен быть установлен пакет pptp-linux. Для установки воспользуйтесь вашим пакетным менеджером или введите команду:

    aptitude install pptp-linux
    

    Приступаем к настройке. Создаем файл в каталоге /etc/ppp/peers/ с именем <vpn_name>. Настройки в данном файле прописаны по рекомендации моего провайдера. Однако с небольшим исправлением: на сайте провайдера указано, что имя пользователя необходимо вводить в кавычках. У меня работает и так и так. Кроме того, добавил строку noauth.

    noauth
    mtu 1492
    mru 1492
    maxfail 3
    lcp-echo-interval 10
    lcp-echo-failure 4
    name <user_name>
    #имя подключения можно задать и другое
    nremotename vpn
    pty "pptp <ip_vpn_server> --nolaunchpppd"
    require-mppe-128
    replacedefaultroute
    

    Далее редактируем файл /etc/ppp/chap-secrets. В отличии от примера на сайте провайдера добавлена звездочка в конце строки.

    # vpn - это имя подключения которое вы задали в конфигурационном файле подключения 
    # (выше)
    <user_name> vpn <user_pass> *
    

    Теперь можно пробовать установить соединение командой. Если вы отключили автоматическое подключение, то именно данной командой вы можете его устанавливать в дальнейшем.

    pon <vpn_name>
    

    Если все пройдет без ошибок, то ни каких сообщений не будет выведено. Наличие подключения можно проверить командой

    ifconfig
    

    В выводе этой команды должен появиться интерфейс "ppp0". Впрочем на конце может быть другая цифра, если у вас уже существует иное ppp-подключение.

    Если у вас есть необходимость отключить используйте команду

    poff <vpn_name>
    

    Все записи

    © 2001-2017 Воробьев Александр