FreeBSD

Материал из wiki.sacura.net
Перейти к: навигация, поиск

Настройка подключения к интернету через PPPoE во FreeBSD при помощи mpd5

user_anonymous:

В помощь новичкам решил описать, как настроить подключение к интернету во FreeBSD, если провайдер раздает интернет через PPPoE. Впрочем, если провайдер раздает интернет через PPtP - разница в настройках mpd будет небольшой. Что нам понадобится для работы: данные от провайдера с вашим логином, паролем и серверами ДНС, умение пользоваться текстовым редактором, права суперпользователя, установленный mpd5. На последнем пункте остановлюсь подробнее. Дело в том, что есть две программы, называемые mpd. Одна из них - это музыкальный плеер, и нам она не нужна. Вторая граздо более интересна - это основанный на подсистеме NetGraph демон для организации PPP каналов. Этот демон отличается низким потреблением ресурсов и прекрасным быстродействием. В качестве сервера PPPoE и PPtP он очень активно используется интернет-провайдерами как эффективное решение для предоставления доступа в интернет. В нашем случае он будет работать как клиент. Вообще-то с mpd в комплекте идет довольно объемистый мануал, но, к сожалению, он больше подходит тем, кто уже имеет опыт конфигурирования mpd. Поэтому я привожу тут готовый конфигурационный файл для клиента Васи Пупкина, которому провайдер предоставил учетную запись с логином vpupkin и паролем 123456


- команды, выполняющиеся при запуске - должно начинаться со startup

       startup:
       # Установим параметры пользователя
       # имя пароль роль_пользователя
       set user vpupkin 123456 admin
       # Разрешим консоль на локалхосте
       set console self 127.0.0.1 5005
  

- Это настройки по умолчанию - они будут вызваны при обычном запуске

       default:
       load    pppoe_client
         

pppoe_client:


- PPPoE client: только исходящие соединения, автоматический реконнект, - адреса получаются по ipcp, односторонняя аутентификация, - маршрут по умолчанию смотрит на шлюз провайдера

  create bundle static B1
  set iface route default
  set ipcp ranges 0.0.0.0/0 0.0.0.0/0
  #   Запросим ДНС у удаленного сервера
  #   Это не всегда работает :(
  set ipcp enable req-pri-dns
  set ipcp enable req-sec-dns
  
  create link static L1 pppoe
  set link action bundle B1
  #   Надо указать свои логин и пароль
  set auth authname vpupkin
  set auth password 123456
  set link max-redial 0
  set link mtu 1412
  set link keep-alive 10 60
  #   Тут надо прописать свой интерфейс
  set pppoe iface nfe0
  #    Не устанавливать имя сервиса, так как мы - клиент
  set pppoe service ""
  #   Запустить соединение
  open

Как видим, ничего особо сложного нет. Файл надо назвать mpd.conf и поместить в /usr/local/etc/mpd5 Теперь, когда у нас все готово для соединения с внешним миром, нелишне будет внести ряд ограничений на возможность внешнего мира нам нагадить. Создадим простой файервол, дабы затруднить жизнь всяческим букам и бякам. Для этого перейдите в каталог /etc и создайте файл под названием pf.conf с вот таким содержанием:

- Очень простой файервол - блокируется весь входящий трафик кроме - пинга и разрешается весь исходящий - Замените nfe0 на название вашего сетевого интерфейса

   ext_if = "nfe0"
   pppoe_if = "ng0"
   set   skip on lo0
   set   block-policy return
   scrub   in all fragment reassemble
   #pass   quick on lo0
   block   in all
   #   Исходящий трафик
   pass   out proto tcp from ($ext_if) to any modulate state
   pass   out proto udp from ($ext_if) to any keep state
   pass   out proto icmp from ($ext_if) to any keep state
   pass   out proto tcp from ($pppoe_if) to any modulate state
   pass   out proto udp from ($pppoe_if) to any keep state
   pass   out proto icmp from ($pppoe_if) to any keep state
   #   входящий трафик
   pass   in inet proto icmp from any to ($ext_if) icmp-type echoreq keep state
   pass   in inet proto icmp from any to ($pppoe_if) icmp-type echoreq keep state (max 10, source-track rule, max-src-nodes 10, max-src-states 10)

Маленькая тонкость, без которой будут большие проблемы - это круглые скобки вокруг имени интерфейса. Если их не поставить, то запись $ext_if раскроется в IP-адрес, присвоеный этому интерфейсу. Скобки же говорят, что в качестве параметра надо взять адрес с указанного в них интерфейса. А проблемы будут потому что правила файервола загружаются перед запуском mpd5, когда интерфейса ng0 еще не существует и, следовательно, взять адрес неоткуда.

Теперь надо отредактировать файл /etc/resolv.conf и занести туда надпись: nameserver <ip-адрес ДНС-сервера провайдера>

Последний штрих - занесение записей в rc.conf:

      # активизация файервола
      pf_enable="YES"         # Это включит нам пакетрый фильтр pf.
      pf_rules="/etc/pf.conf"      # Тут хранятся правила файервола
      pf_program="/sbin/pfctl"   # А это программа, которая управляет файерволом
      # Запуск mpd5 при старте системы. Контролирующий скрипт - /usr/local/etc/rc.d/mpd5
      mpd_enable="YES"


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

Nast:

Спасибо за пост - очень помог при подключении к моему прову. Немного покопался и переделал скрипт под подключение к pptp. Мож кому и пригодится.

ee /usr/local/etc/mpd5/mpd.conf

startup:

       set user nast 1234 admin
       set console self 127.0.0.1 5005
       set console open
       set web self 127.0.0.1 5006
       set web open

default:

       load pptp_client

pptpt_client:

       create bundle static B1
       set iface route default
       create link static L1 pptp
       set link action bundle B1
       set auth authname "name"
       set auth password "password"
       set pptp peer xxx.xxx.xxx.xxx
       set link max-redial 0
       set link mtu 1460
       set link yes acfcomp protocomp
       set link keep-alive 60 180
       open

Также изменим /etc/dhclient.conf

       timeout 60;
       reboot 10;
       retry 60;
       select-timeout 5;
       initial-interval 2;
       interface "xl0" {
            request subnet-mask, broadcast-address, host-name;
       }

В строке set pptp peer xxx.xxx.xxx.xxx прописывается адрес шлюза провайдера. xl0 - интерфейс к которому подключена линия прова.

Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты