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 часа


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

Зарегистрированные пользователи: нет зарегистрированных пользователей


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

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