BSDPORTAL.RU

На этом сайте обсуждаются вопросы использования ОС FreeBSD
 Портал  •  Статьи  •  Форум  •  Wiki  •  Поиск  •  FAQ  •  Обои  •   Официальная документация  •  Новые темы 

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
СообщениеДобавлено: Ср 20 окт, 2004 11:58 am 
Не в сети

Зарегистрирован: Пн 03 май, 2004 8:36 pm
Сообщения: 53
Цель статьи как можно проще и доступнее описать насущную проблему для неопытных админей и юзераф ( таких как я ) описать процесс настройки VPN сервера под управлением FreeBSD с использованием MPD и FreeRadius.

В будующем хочу рассмотреть вопросы:
- Билинг
- Поднятие сириусов ( или любых других модемов ) с помощью MPD
- Ну и всякие там еще штуки которые могут понадобиться

Со статьей требуется сделать следующие вещи:
- Причесать
- Дополнить
- Ну и поправить если что где не так

--- СОБСНО СТАТЬЯ ---
Настроил raddb следующим образом:
attrs
Код:
   DEFAULT
       Service-Type == Framed-User,
      Service-Type == Login-User,
      Login-Service == Telnet,
      Login-Service == Rlogin,
      Login-Service == TCP-Clear,
      Login-TCP-Port <= 65536,
      Framed-IP-Address == 255.255.255.254,
      Framed-IP-Netmask == 255.255.255.255,
      Framed-Protocol == PPP,
      Framed-Protocol == SLIP,
      Framed-Compression == Van-Jacobson-TCP-IP,
      Framed-MTU >= 576,
      Framed-Filter-ID =* ANY,
      Reply-Message =* ANY,
      Proxy-State =* ANY,
      Session-Timeout <= 28800,
      Idle-Timeout <= 600,
      Port-Limit <= 2


clients.conf
Код:
   client 127.0.0.1 {
      secret          = mypasswd
      shortname       = localhost
      nastype     = other
   }


radiusd.conf

Код:
   prefix = /usr/local
   exec_prefix = ${prefix}
   sysconfdir = ${prefix}/etc
   localstatedir = /var
   sbindir = ${exec_prefix}/sbin
   logdir = /var/log
   raddbdir = ${sysconfdir}/raddb
   radacctdir = ${logdir}/radacct
   confdir = ${raddbdir}
   run_dir = ${localstatedir}/run/radiusd
   log_file = ${logdir}/radius.log
   libdir = ${exec_prefix}/lib
 
   pidfile = ${run_dir}/radiusd.pid
   max_request_time = 5
   delete_blocked_requests = no
   cleanup_delay = 5
   max_requests = 1024
   bind_address = *
   port = 1812
   hostname_lookups = no
   allow_core_dumps = no
   regular_expressions     = yes
   extended_expressions    = yes
   log_stripped_names = yes
   log_auth = yes
   log_auth_badpass = yes
   log_auth_goodpass = no
   usercollide = no
   lower_user = yes
   lower_pass = no
   nospace_user = yes
   nospace_pass = no
   checkrad = ${sbindir}/checkrad
 
   security {
       max_attributes = 200
      reject_delay = 1
      status_server = no
   }
 
   proxy_requests  = yes
   $INCLUDE  ${confdir}/proxy.conf
 
   $INCLUDE  ${confdir}/clients.conf
   $INCLUDE  ${confdir}/snmp.conf
 
   thread pool {
       start_servers = 2
      max_servers = 10
      min_spare_servers = 2
       max_spare_servers = 10
      max_requests_per_server = 0
   }
 
   modules {
      pap {
         encryption_scheme = clear
      }
      chap {
         authtype = CHAP
      }
      unix {
         cache = no
         cache_reload = 600
         radwtmp = ${logdir}/radwtmp
      }
      mschap {
         authtype = MS-CHAP
      }
      realm suffix {
         format = suffix
         delimiter = "@"
      }
      realm realmslash {
         format = prefix
         delimiter = "/"
      }
      realm realmpercent {
         format = suffix
         delimiter = "%"
      }
      preprocess {
         with_cisco_vsa_hack = no
      }
      files {
         usersfile = ${confdir}/users
         acctusersfile = ${confdir}/acct_users
         compat = no
      }
      detail {
         detailfile = ${logdir}/radius-detail.log
         detailperm = 0644
      }
      acct_unique {
      key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port-Id"
      }
      $INCLUDE  ${confdir}/sql.conf
      radutmp {
         filename = ${logdir}/radutmp
         perm = 0600
         callerid = "yes"
      }
      radutmp sradutmp {
         filename = ${logdir}/sradutmp
         perm = 0644
         callerid = "no"
      }
      attr_filter {
         attrsfile = ${confdir}/attrs
      }
      counter {
         filename = ${raddbdir}/db.counter
         key = User-Name
         count-attribute = Acct-Session-Time
         reset = daily
         counter-name = Daily-Session-Time
         check-name = Max-Daily-Session
         allowed-servicetype = Framed-User
         cache-size = 5000
      }
      always fail {
         rcode = fail
      }
      always reject {
         rcode = reject
      }
      always ok {
         rcode = ok
         simulcount = 0
         mpp = no
      }
      expr {
      }
   }
   instantiate {
      expr
   }
   authorize {
      preprocess
      suffix
      sql
      mschap
   }
 
   authenticate {
       authtype MS-CHAP {
         mschap
      }
   }
   preacct {
       preprocess
      suffix
   }
 
   accounting {
      acct_unique
      detail
      unix            # wtmp file
      sql
      radutmp
   }
   session {
      sql
   }
 
   post-auth {
   }


sql.conf

Код:
   sql {
       driver = "rlm_sql_postgresql"
      server = "localhost"
      login = "freeradius"
      password = ""
      radius_db = "freeradius"
      acct_table1 = "radacct"
      acct_table2 = "radacct"
      authcheck_table = "radcheck"
      authreply_table = "radreply"
      groupcheck_table = "radgroupcheck"
      groupreply_table = "radgroupreply"
      usergroup_table = "usergroup"
      deletestalesessions = yes
      sqltrace = no
      sqltracefile = ${logdir}/sqltrace.sql
      num_sql_socks = 5
      connect_failure_retry_delay = 60
      sql_user_name = "%{User-Name}"
 
authorize_check_query = "SELECT id,UserName,Attribute,Value,op \
      FROM ${authcheck_table} WHERE Username = '%{SQL-User-Name}' ORDER BY id"
 
authorize_reply_query = "SELECT id,UserName,Attribute,Value,op FROM \
            ${authreply_table} WHERE Username = '%{SQL-User-Name}' ORDER BY id"
authorize_group_check_query = "SELECT ${groupcheck_table}.id, \
   ${groupcheck_table}.GroupName,${groupcheck_table}.Attribute, \
   ${groupcheck_table}.Value,${groupcheck_table}.op  FROM \
   ${groupcheck_table},${usergroup_table} WHERE ${usergroup_table}.Username \
   = '%{SQL-User-Name}' AND ${usergroup_table}.GroupName = \
   ${groupcheck_table}.GroupName ORDER BY ${groupcheck_table}.id"
 
authorize_group_reply_query = "SELECT ${groupreply_table}.id, \
   ${groupreply_table}.GroupName,${groupreply_table}.Attribute, \
   ${groupreply_table}.Value,${groupreply_table}.op  FROM \
   ${groupreply_table},${usergroup_table} WHERE ${usergroup_table}.Username \
   = '%{SQL-User-Name}' AND ${usergroup_table}.GroupName = \
   ${groupreply_table}.GroupName ORDER BY ${groupreply_table}.id"
 
accounting_onoff_query = "UPDATE ${acct_table1} SET AcctStopTime='%S', \
   AcctSessionTime=unix_timestamp('%S') - unix_timestamp(AcctStartTime), \
   AcctTerminateCause='%{Acct-Terminate-Cause}', AcctStopDelay = \
   %{Acct-Delay-Time} WHERE AcctSessionTime=0 AND AcctStopTime=0 AND \
   NASIPAddress= '%{NAS-IP-Address}' AND AcctStartTime <= '%S'"
 
accounting_update_query = "UPDATE ${acct_table1} SET FramedIPAddress = \
   '%{Framed-IP-Address}' WHERE AcctSessionId = '%{Acct-Session-Id}' \
   AND UserName = '%{SQL-User-Name}' AND NASIPAddress= \
   '%{NAS-IP-Address}' AND AcctStopTime = 0"
 
accounting_start_query = "INSERT into ${acct_table1} (RadAcctId, \
   AcctSessionId, AcctUniqueId, UserName, Realm, NASIPAddress, NASPortId, \
   NASPortType, AcctStartTime, AcctStopTime, AcctSessionTime, AcctAuthentic, \
   ConnectInfo_start, ConnectInfo_stop, AcctInputOctets, AcctOutputOctets, \
   CalledStationId, CallingStationId, AcctTerminateCause, ServiceType, \
   FramedProtocol, FramedIPAddress, AcctStartDelay, AcctStopDelay) \
   values('', '%{Acct-Session-Id}', '%{Acct-Unique-Session-Id}', \
   '%{SQL-User-Name}', '%{Realm}', '%{NAS-IP-Address}', '%{NAS-Port}', \
   '%{NAS-Port-Type}', '%S', '0', '0', '%{Acct-Authentic}', '%{Connect-Info}', \
   '', '0', '0', '%{Called-Station-Id}', '%{Calling-Station-Id}', '', \
   '%{Service-Type}', '%{Framed-Protocol}', '%{Framed-IP-Address}', \
   '%{Acct-Delay-Time}', '0')"
 
accounting_start_query_alt  = "UPDATE ${acct_table1} SET AcctStartTime = \
   '%S', AcctStartDelay = '%{Acct-Delay-Time}', ConnectInfo_start = \
   '%{Connect-Info}' WHERE AcctSessionId = '%{Acct-Session-Id}' AND UserName = \
   '%{SQL-User-Name}' AND NASIPAddress = '%{NAS-IP-Address}' AND AcctStopTime = 0"
 
accounting_stop_query = "UPDATE ${acct_table2} SET AcctStopTime = '%S', \
   AcctSessionTime = '%{Acct-Session-Time}', AcctInputOctets = \
   '%{Acct-Input-Octets}', AcctOutputOctets = '%{Acct-Output-Octets}', \
   AcctTerminateCause = '%{Acct-Terminate-Cause}', AcctStopDelay = \
   '%{Acct-Delay-Time}', ConnectInfo_stop = '%{Connect-Info}' WHERE \
   AcctSessionId = '%{Acct-Session-Id}' AND UserName = '%{SQL-User-Name}' \
   AND NASIPAddress = '%{NAS-IP-Address}' AND AcctStopTime = 0"
 
 accounting_stop_query_alt = "INSERT into ${acct_table2} (RadAcctId, \
    AcctSessionId, AcctUniqueId, UserName, Realm, NASIPAddress, NASPortId, \
   NASPortType, AcctStartTime, AcctStopTime, AcctSessionTime, AcctAuthentic, \
   ConnectInfo_start, ConnectInfo_stop, AcctInputOctets, AcctOutputOctets, \
   CalledStationId, CallingStationId, AcctTerminateCause, ServiceType, \
   FramedProtocol, FramedIPAddress, AcctStartDelay, AcctStopDelay) \
   values('', '%{Acct-Session-Id}', '%{Acct-Unique-Session-Id}', \
   '%{SQL-User-Name}', '%{Realm}', '%{NAS-IP-Address}', '%{NAS-Port}', \
   '%{NAS-Port-Type}', DATE_SUB('%S',INTERVAL (%{Acct-Session-Time:-0} + \
   %{Acct-Delay-Time:-0}) SECOND), '%S', '%{Acct-Session-Time}', \
   '%{Acct-Authentic}', '', '%{Connect-Info}', '%{Acct-Input-Octets}', \
   '%{Acct-Output-Octets}', '%{Called-Station-Id}', '%{Calling-Station-Id}', \
   '%{Acct-Terminate-Cause}', '%{Service-Type}', '%{Framed-Protocol}', \
   '%{Framed-IP-Address}', '0', '%{Acct-Delay-Time}')"
 
simul_verify_query = "SELECT RadAcctId, AcctSessionId, UserName, NASIPAddress, \
   NASPortId, FramedIPAddress, CallingStationId, FramedProtocol FROM \
   ${acct_table1} WHERE UserName='%{SQL-User-Name}' AND AcctStopTime = 0"
 
group_membership_query = "SELECT GroupName FROM ${usergroup_table} WHERE \
   UserName='%{SQL-User-Name}'"


users
Код:
DEFAULT         Auth-Type := MS-CHAP


Затем MPD:

mpd.conf
Код:
default:
      load pptp0
   pptp0:
      new -i ng00 pptp0 pptp0
      set ipcp ranges <local ip>/32 <remote ip>/32
      load pptp_standart
 
   pptp_standart:
      set iface disable on-demand
      set link yes acfcomp protocomp
      set link no pap chap
      set link enable chap
      set link keep-alive 60 180
      set ipcp yes vjcomp
      set ipcp dns <dns server ip>
      set iface enable proxy-arp
      set pptp self <vpn server ip>
      set pptp enable incoming
      set pptp disable originate
      set iface mtu 1500
      set link mtu 1500
      set radius server localhost <passw to radius> 1812 1813
      set radius timeout 10
      set radius config /etc/radius.conf
      set radius retries 3
      set bundle enable radius-auth
      set ipcp yes radius-ip
      set ccp yes mppc
      set ccp yes mpp-e40
      set ccp yes mpp-e56
      set ccp yes mpp-e128
      set ccp yes mpp-stateless


Где:
<local ip> - Это диапазон локальных IP-адресов
<remote ip> - Это диапазон IP-адресов, которые будут выдаваться клиентам
<dns server ip> - Это IP-адрес сервера имен
<vpn server ip> - Это IP-адрес сервера ВЧС
<passw to radius> - Это пароль для доступа к radius-серверу.

mpd.links
Код:
   pptp0:
      set link type pptp


/etc/radius.conf
Код:
acct <radius IP> <passw to radius>
auth <radius IP> <passw to radius>

Где:
<passw to radius> - Это пароль для доступа к radius-серверу.
<radius IP> - IP-адрес Radius-сервера

В ядро добавил следующие строчки
Код:
options         NETGRAPH
   options         NETGRAPH_ASYNC
   options         NETGRAPH_BPF
   options         NETGRAPH_ECHO
   options         NETGRAPH_ETHER
   options         NETGRAPH_HOLE
   options         NETGRAPH_IFACE
   options         NETGRAPH_KSOCKET
   options         NETGRAPH_L2TP
   options         NETGRAPH_LMI
   options         NETGRAPH_MPPC_ENCRYPTION
   options         NETGRAPH_ONE2MANY
   options         NETGRAPH_PPP
   options         NETGRAPH_PPTPGRE
   options         NETGRAPH_RFC1490
   options         NETGRAPH_SOCKET
   options         NETGRAPH_TEE
   options         NETGRAPH_TTY
   options         NETGRAPH_UI
   options         NETGRAPH_VJC
   options         IPFIREWALL
   options         IPDIVERT
   options         IPFIREWALL_VERBOSE
   options         IPFIREWALL_DEFAULT_TO_ACCEPT
   options         DUMMYNET


В файл /etc/defaults/rc.conf добавил следующие строчки:
Код:
gateway_enable="YES"
   firewall_enable="YES"
   firewall_type="OPEN"
   natd_enable="YES"
   natd_interface="<интерфейс, который смотрит в интернет>"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 20 окт, 2004 12:04 pm 
Не в сети
Site Admin

Зарегистрирован: Вс 07 мар, 2004 9:45 am
Сообщения: 1060
Откуда: Московская область
> В файл /etc/defaults/rc.conf добавил следующие строчки

Если мы еще раз напишем про изменение файла /etc/defaults/rc.conf, нас забросают тухлыми яйцами :-) Давайте все-таки /etc/rc.conf

Madjack, а что текста сопроводительного нет ??? Типа "устанавливаем такую-то версию такой-то программы (если из портов, то с такими-то опциями)".


Последний раз редактировалось SleepyBrain Ср 20 окт, 2004 12:10 pm, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 20 окт, 2004 12:07 pm 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: Вт 24 дек, 2002 3:55 pm
Сообщения: 3958
Откуда: Россия, Ростов-на-Дону
блин, я это то же промаргал


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 20 окт, 2004 12:17 pm 
Не в сети
Site Admin

Зарегистрирован: Вс 07 мар, 2004 9:45 am
Сообщения: 1060
Откуда: Московская область
Еще вопрос.
Вот это "options IPFIREWALL_DEFAULT_TO_ACCEPT" и вот это "firewall_type="OPEN"" - это правильно ???

А вообще я бы с удовольствием помог, но я в этих вопросах не разбираюсь. Но причесать текст помогу.
Или эпиграф придумать. :-) :-) :-) Шутка.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 20 окт, 2004 12:33 pm 
Не в сети
Newsmaker

Зарегистрирован: Пн 19 апр, 2004 6:26 pm
Сообщения: 413
Откуда: SPb
Даже в /etc/rc.conf не стал бы вставлять пробелы перед опциями. Народ ведь будет просто копи-пастом вставлять.

_________________
Жизнь - это движение. Только кто-то шевелит мозгами, а кто-то хлопает ушами.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 20 окт, 2004 12:33 pm 
Не в сети

Зарегистрирован: Пн 03 май, 2004 8:36 pm
Сообщения: 53
SleepyBrain писал(а):
> В файл /etc/defaults/rc.conf добавил следующие строчки

Если мы еще раз напишем про изменение файла /etc/defaults/rc.conf, нас забросают тухлыми яйцами :-) Давайте все-таки /etc/rc.conf

Madjack, а что текста сопроводительного нет ??? Типа "устанавливаем такую-то версию такой-то программы (если из портов, то с такими-то опциями)".


Как бы defaults хорош для изменения глобальных настроек. Это помоему в статье Федорчука обсуждалось. А сиюминутные настройки типо squid_enable="YES" лучше всего в /etc/rc.conf делать. Воть. Причем это касается 5й ветки.

По поводу сопроводительного текста - Он был... но его забраковали=) Скажу лишь что mpd ставил по умолчанию. А freeradius с поддержкой snmp ( для mrtg. Так как у меня mrtg на другом серваке считается ) и с pgsql + mysql.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 20 окт, 2004 12:36 pm 
Не в сети

Зарегистрирован: Пн 03 май, 2004 8:36 pm
Сообщения: 53
SleepyBrain писал(а):
Еще вопрос.
Вот это "options IPFIREWALL_DEFAULT_TO_ACCEPT" и вот это "firewall_type="OPEN"" - это правильно ???

А вообще я бы с удовольствием помог, но я в этих вопросах не разбираюсь. Но причесать текст помогу.
Или эпиграф придумать. :-) :-) :-) Шутка.


Это мне СИС полсказал чтобы работал natd. Я поставил - работает. За сим усе=)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 20 окт, 2004 12:56 pm 
Не в сети
Site Admin

Зарегистрирован: Вс 07 мар, 2004 9:45 am
Сообщения: 1060
Откуда: Московская область
Madjack писал(а):
Как бы defaults хорош для изменения глобальных настроек. Это помоему в статье Федорчука обсуждалось. А сиюминутные настройки типо squid_enable="YES" лучше всего в /etc/rc.conf делать. Воть. Причем это касается 5й ветки.


Не может такого быть. В одном файле - дефолтные настройки, в другом - пользовательские. А иначе каша получится. Причем defaults/rc.conf постоянно меняется (в смысле от версии к версии).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 20 окт, 2004 12:57 pm 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: Вт 24 дек, 2002 3:55 pm
Сообщения: 3958
Откуда: Россия, Ростов-на-Дону
firewall_type="OPEN" включает открытый фаер - удобно для отладки
в дальнейшем можно написать правила для своего фаера и включить его


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 20 окт, 2004 12:59 pm 
Не в сети
Site Admin

Зарегистрирован: Вс 07 мар, 2004 9:45 am
Сообщения: 1060
Откуда: Московская область
sys писал(а):
firewall_type="OPEN" включает открытый фаер - удобно для отладки
в дальнейшем можно написать правила для своего фаера и включить его


В тексте так и надо написать, в качестве примечания. А то у нас тут народ зоркий и придирчивый.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт 21 окт, 2004 12:03 pm 
Не в сети

Зарегистрирован: Пн 03 май, 2004 8:36 pm
Сообщения: 53
Вобщем ждем от СлипиБрэйна готовый причесаный вариант=)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт 21 окт, 2004 8:11 pm 
Не в сети
Site Admin

Зарегистрирован: Вс 07 мар, 2004 9:45 am
Сообщения: 1060
Откуда: Московская область
Причесать-то я причешу, но я не вижу текста. Если бы я разбирался в этом вопросе - то добавил бы.
Я даже не имею ни малейшего представления о том, в каких каталогах все эти файлы должны находится.
Если бы я знал, что такое mpd, snmp и прочие вещи - работал бы админом, а не мелким чиновником. :-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт 22 окт, 2004 11:42 am 
Не в сети

Зарегистрирован: Пн 03 май, 2004 8:36 pm
Сообщения: 53
Ну тогда попросим Сиса найти компетентного человека=)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт 22 окт, 2004 12:05 pm 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: Вт 24 дек, 2002 3:55 pm
Сообщения: 3958
Откуда: Россия, Ростов-на-Дону
по данной теме ты достаточно компетентен
посмотри как я оформлял статью по dhcp и AD


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн 23 янв, 2006 7:28 pm 
Не в сети
Newsmaker
Аватара пользователя

Зарегистрирован: Вт 08 фев, 2005 3:25 pm
Сообщения: 135
Откуда: Донецк
Что-то подобное я уже встречал в инете - даже имена линков те же... Хммм... :evil:


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Зарегистрированные пользователи: Bing [Bot], Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
Яндекс.Метрика