Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

Редактирование /etc/eltex-radius/proxy.conf в этом случае не требуется.

Проксирование

...

одного SSID на сторонний RADIUS-сервер

...

Для проксирования аккаунтинг-запросов также, как и запросов авторизации необходимо внести изменения в файле этого нужно отредактировать файл /etc/eltex-radius/proxylocal.conf.В секции home_server изменить значение параметра type на auth+acctследующим образом:

Блок кода
languageapplescript
themeRDark
titleчасть конфигурационного файла /etc/eltex-radius/local.conf
# Proxy SSID (for example to eltex-eap-tls) #139679
proxy_ssid_enabled=1
proxy_ssid_value="SSID_NAME"
proxy_ssid_host="10.10.10.11"
proxy_ssid_port=18122
proxy_ssid_secret="eltex"

В такой конфигурации все запросы авторизации на ssid  SSID_NAME будут проксироваться на сервер с адресом 10.10.10.11 на порт 18122 (уникальный порт) при этом в качестве secret будет использована фраза eltex.

Примечание

Аккаунтинг в такой конфигурации будет по прежнему обрабатываться локально, т. е. eltex-radius.

Редактирование /etc/eltex-radius/proxy.conf в этом случае не требуется.

Проксирование авторизации и аккаунтинга на сторонний RADIUS-сервер

...

Для проксирования аккаунтинг-запросов также, как и запросов авторизации необходимо внести изменения в файле /etc/eltex-radius/proxy.conf.

В секции home_server изменить значение параметра type на auth+acct:

Блок кода
languageapplescript
themeRDark
home_server auth_proxy {home_server auth_proxy {
        type = auth+acct
        ipaddr = "${proxy_host}"
        port = "${proxy_port}"
        secret = "${proxy_secret}"

        response_window = 20

        #
        #  Start "zombie_period" after this many responses have
        #  timed out.
        #
#       response_timeouts = 1
        zombie_period = 40
        revive_intervaltype = 120
auth+acct
        status_checkipaddr = status-server"${proxy_host}"
        check_intervalport = 30"${proxy_port}"
        check_timeoutsecret = 4"${proxy_secret}"

        num_answers_to_aliveresponse_window = 3
20

        #
     max_outstanding = 65536
}

В секции realm auth proxy заменить параметр auth_pool на pool, значение оставить тем же:

Блок кода
languageapplescript
themeRDark
realm auth_proxy {
		pool = auth_proxy_failover
}

А также, в файле /etc/eltex-radius/servers/default в секцию preacct после preprocess добавить строку proxy_auth:

Блок кода
languagebash
themeRDark
preacct {
        preprocess
        proxy_auth #  Start "zombie_period" after this many responses have
        #  timed out.
        acct_counters64#
#        acct_uniqueresponse_timeouts = 1
        acctzombie_ciscoavpair

period = 40
      # Parse common cisco-avp ('domain' for example)revive_interval = 120

        commonstatus_ciscoavpair
check       rewrite_called_station_id
= status-server
       if (${pcrf_enabled}check_interval == 0) {30
        check_timeout   fill_ap_domain= 4
           fill_ssid_securitynum_answers_to_alive = 3
       }

 max_outstanding = 65536
}

В секции realm auth proxy заменить параметр auth_pool на pool, значение оставить тем же:

Блок кода
languageapplescript
themeRDark
realm auth_proxy {
		pool = files
}

Проксирование авторизации и аккаунтинга на группу сторонних RADIUS-серверов

Этот вариант требует значительной модификации конфигурационных файлов. Будет рассмотрено проксирование на 2 сторонних RADIUS-сервера, но предложенным методом можно масштабировать и далее.

...

auth_proxy_failover
}

А также, в файле /etc/eltex-radius

...

/servers/default в секцию preacct после preprocess добавить строку proxy_auth:

Блок кода
languageapplescriptbash
themeRDark
#preacct Proxying
proxy_auth=1
proxy_domain_regex="^(.+\.)?root$"

proxy1_host="10.10.10.11"
proxy1_port=1812
proxy1_secret="topsecret"

proxy2_host="10.10.10.12"
proxy2_port=1812
proxy2_secret="topsecret"

Согласно этим настройкам модифицировать /etc/eltex-radius/local.conf. Для каждого сервера должна быть добавлена и описана секция home_server с уникальным именем.

Все home_server должны быть добавлены в пул home_server_pool, который, в свою очередь, должен быть указан в realm auth_proxy. Так как проксировать предполагается и аккаунтинг, и авторизацию - параметр, указывающий на пул, должен называться pool.

Блок кода
languageapplescript
themeRDark
home_server auth_proxy1 {
{
        preprocess
        proxy_auth
        acct_counters64
        acct_unique
        acct_ciscoavpair

        # Parse common cisco-avp ('domain' for example)
        common_ciscoavpair
       rewrite_called_station_id

       if (${pcrf_enabled} == 0) {
           fill_ap_domain
          type = auth+acct fill_ssid_security
       }

 ipaddr = "${proxy1_host}"
     files
}

Проксирование авторизации и аккаунтинга на группу сторонних RADIUS-серверов

...

Этот вариант требует значительной модификации конфигурационных файлов. Будет рассмотрено проксирование на 2 сторонних RADIUS-сервера, но предложенным методом можно масштабировать и далее.

Отредактировать /etc/eltex-radius/local.conf, добавив индивидуальные параметры host, port и secret для каждого из серверов, на которые осуществляется проксирование:

Блок кода
languageapplescript
themeRDark
# Proxying
proxy_auth=1
proxy_domain_regex="^(.+\.)?root$"

proxy1_host="10.10.10.11"
proxy1_port=1812
proxy1_secret="topsecret"

proxy2_host="10.10.10.12"
proxy2_port=1812
proxy2_secret="topsecret"

Согласно этим настройкам модифицировать /etc/eltex-radius/local.conf. Для каждого сервера должна быть добавлена и описана секция home_server с уникальным именем.

Все home_server должны быть добавлены в пул home_server_pool, который, в свою очередь, должен быть указан в realm auth_proxy. Так как проксировать предполагается и аккаунтинг, и авторизацию - параметр, указывающий на пул, должен называться pool.

Блок кода
languageapplescript
themeRDark
home_server auth_proxy1 {   port = "${proxy1_port}"
        secret = "${proxy1_secret}"

        response_window = 20

        #
        #  Start "zombie_period" after this many responses have
        #  timed out.
        #
#       response_timeouts = 1
        zombie_period = 40
        revive_interval = 120

        status_check = status-server
        check_interval = 30
        check_timeout = 4
        num_answers_to_alive = 3
        max_outstandingtype = 65536
}

home_server auth_proxy2 {
        type = auth+acct
auth+acct
         ipaddr = "${proxy2proxy1_host}"
        port = "${proxy2proxy1_port}"
        secret = "${proxy2proxy1_secret}"

        response_window = 20

        #
 zombie_period = 40
     #  Start revive_interval = 120

"zombie_period" after this many responses have
        status_check = status-server#  timed out.
        check_interval = 30
#
#        checkresponse_timeouttimeouts = 41
        num_answers_to_alivezombie_period = 340
        maxrevive_outstandinginterval = 65536
}
120

home_server_pool auth_proxy_failover {
      status_check  type = failstatus-overserver
        homecheck_serverinterval = auth_proxy130
        homecheck_servertimeout = auth_proxy2
}

realm auth_proxy {
4
        num_answers_to_alive  pool= 3
        max_outstanding = auth_proxy_failover
}

В файле /etc/eltex-radius/servers/default в секцию preacct после preprocess добавить строку proxy_auth, как описано в предыдущем разделе.

65536
}

home_server auth_proxy2 {
        type = auth+acct
        ipaddr = "${proxy2_host}"
        port = "${proxy2_port}"
        secret = "${proxy2_secret}"

        response_window = 20

        zombie_period = 40
        revive_interval = 120

        status_check = status-server
        check_interval = 30
        check_timeout = 4
        num_answers_to_alive = 3
        max_outstanding = 65536
}


home_server_pool auth_proxy_failover {
        type = fail-over
        home_server = auth_proxy1
        home_server = auth_proxy2
}

realm auth_proxy {
        pool = auth_proxy_failover
}

В файле /etc/eltex-radius/servers/default в секцию preacct после preprocess добавить строку proxy_auth, как описано в предыдущем разделе.

Информация

Приведенная конфигурация настраивает проксирвоание в режиме failover, что задается параметром type в секции home_server_pool. Также

Информация

Приведенная конфигурация настраивает проксирвоание в режиме failover, что задается параметром type в секции home_server_pool. Также доступен режим балансировки нагрузки между серверами, о чем подробнее можно узнать по второй ссылке из раздела Источники.

...

Блок кода
languageapplescript
titlepolicy.d/proxy
# Proxy Domain
proxy_auth {
        if ("${proxy_auth}" == 1) {
                if (&Eltex-Domain && &Eltex-Domain =~ /${proxy_domain_regex}/) {
                        update control {
                                Proxy-To-Realm = "auth_proxy"
                        }

                        # If request is going to be proxied, local processing is pointless
                        handled
                }
                if (&Eltex-Domain && &Eltex-Domain =~ /${proxy_domain_regex_2}/) {
                        update control {
                                Proxy-To-Realm = "auth_proxy_2"
                        }

                        # If request is going to be proxied, local processing is pointless
                  }

      handled
                }
  # If request is going to be proxied, local processing is pointless
                        handled
                }
        }
}

После этого остается только перезапустить eltex-radius.

Проверить, как отработает проксирование можно, заглянув в отладку. В приведенном примере видим, как авторизация на SSID South в домене South.root проксируется на home server 2.2.2.2.

 }
}

После этого остается только перезапустить eltex-radius.

Проверить, как отработает проксирование можно, заглянув в отладку. В приведенном примере видим, как авторизация на SSID South в домене South.root проксируется на home server 2.2.2.2.

Блок кода
languageapplescript
titleeraddebug
sudo eraddebug

(0) Wed Jun 16 14:35:15 2021: Debug: Starting proxy to home server 2.2.2.2 port 1812
(0) Wed Jun 16 14:35:15 2021: Debug: Sent Access-Request Id 232 from 0.0.0.0:32770 to 2.2.2.2:1812 length 221
Блок кода
languageapplescript
titleeraddebug
sudo eraddebug

(0) Wed Jun 16 14:35:15 2021: Debug: Starting proxy toUser-Name home server 2.2.2.2 port 1812= "test"
(0) Wed Jun 16 14:35:15 2021: Debug:  Sent AccessNAS-IP-RequestAddress Id 232 from 0.0.0.0:32770 to 2.2.2.2:1812 length 221= 10.25.96.115
(0) Wed Jun 16 14:35:15 2021: Debug:   UserNAS-NameIdentifier = "test "A8-F9-4B-B2-48-EA"
(0) Wed Jun 16 14:35:15 2021: Debug:   NAS-IPPort-AddressId = 10.25.96.115"10"
(0) Wed Jun 16 14:35:15 2021: Debug:   NAS-IdentifierPort = "A8-F9-4B-B2-48-EA"0
(0) Wed Jun 16 14:35:15 2021: Debug:   NASCalled-PortStation-Id = "10A8-F9-4B-B2-48-E0:South"
(0) Wed Jun 16 14:35:1518 2021: Debug:   NASEltex-PortDomain = 0
(0) Wed Jun 16 14:35:15 2021: Debug:   Called-Station-Id = "A8-F9-4B-B2-48-E0:South"
(0) Wed Jun 16 14:35:18 2021: Debug:   Eltex-Domain = "South.root"

Подмена (добавление) атрибутов RADIUS при проксировании запросов на сторонний сервер

...

"South.root"


Подмена (добавление) атрибутов RADIUS при проксировании запросов на сторонний сервер

Для того, чтобы изменять (или обогащать) RADIUS запросы дополнительным атрибутом при проксировании их через eltex-radius необходимо изменить секцию # Proxy Domain в конфигурационном файле /etc/eltex-radius/policy.d/proxy.

Рассмотрим обогащение пакетов на примере атрибута NAS_ID. ТД Eltex в этом атрибуте передают свой MAC адрес, для изменения значения этого атрибута раскомментируйте необходимую секцию.

В примере ниже при проксировании RADIUS запросов с доменом SSID - "domain_1.root" на сторонний RADIUS сервер, значение NAS-ID будет изменено на строчку "domain1". Если на Eltex-radius от доверенной ТД придет запрос с доменом SSID "domain_2.root", то значение NAS-ID станет "domain2".

Блок кода
languageyml
themeRDark
title/etc/eltex-radius/policy.d/proxy

...

# Proxy Domain
proxy_auth {
        if ("${proxy_auth}" == 1) {
                if (&Eltex-Domain && &Eltex-Domain =~ /${proxy_domain_regex}/) {
#If you need to configure NAS-Identifier substitution when proxying requests via eltex-radius
                

Рассмотрим обогащение пакетов на примере атрибута NAS_ID. ТД Eltex в этом атрибуте передают свой MAC адрес, для изменения значения этого атрибута раскомментируйте необходимую секцию.

В примере ниже при проксировании RADIUS запросов с доменом SSID - "domain_1.root" на сторонний RADIUS сервер, значение NAS-ID будет изменено на строчку "domain1". Если на Eltex-radius от доверенной ТД придет запрос с доменом SSID "domain_2.root", то значение NAS-ID станет "domain2".

Блок кода
languageyml
themeRDark
title/etc/eltex-radius/policy.d/proxy
# Proxy Domain
proxy_auth {
        if ("${proxy_auth}"&Eltex-Domain == "domain_1.root") {

                                update request {
                             if (&Eltex-Domain && &Eltex-Domain =~ /${proxy_domain_regex}/) {
#If you need to configure NAS-Identifier substitution when proxying requests via eltex-radius
 := "domain1" 
                            if (&Eltex-Domain == "domain_1.root") { }
                        }
        update request {
                     elsif (&Eltex-Domain == "domain_2.root") {
                   NAS-Identifier := "domain1" 
           update request {
                   }
                     NAS-Identifier := "domain2" }
                        elsif (&Eltex-Domain == "domain_2.root") {
    }
                        }
    update request {
                  update control {
                    NAS-Identifier := "domain2" 
           Proxy-To-Realm = "auth_proxy" 
                  }
      }

                  }
      # If request is going to be proxied, local processing is pointless
       update control {
               handled
                }
 Proxy-To-Realm = "auth_proxy" 
    }
}

# Proxy SSID (for example to eltex-eap-tls) #139679
proxy_ssid {
        if ("${proxy_ssid_enabled}" == 1)  }{

        if (Called-Station-SSID == "${proxy_ssid_value}") {
            #update Ifcontrol request{
 is going to be proxied, local processing is pointless
       Proxy-To-Realm = "auth_ssid" 
              handled}

            # If request is }
going to be proxied, local processing is  }
}
pointless
# Proxy SSID (for example to eltex-eap-tls) #139679
proxy_ssid {
    handled
    if ("${proxy_ssid_enabled}" == 1) {
        if (Called-Station-SSID == "${proxy_ssid_value}") {
            update control {
                Proxy-To-Realm = "auth_ssid" 
            }

            # If request is going to be proxied, local processing is pointless
            handled
        }
    }
}
  • domain_1.root и domain_2.root - название домена SSID;
  • domain1 и domain2 - значения, которые будут подставляться в NAS-ID вместо MAC адреса ТД.
Информация

В случае, если условия для домена не прописаны в /etc/eltex-radius/policy.d/proxy NAS_ID изменяться не будет

}
    }
}
  • domain_1.root и domain_2.root - название домена SSID;
  • domain1 и domain2 - значения, которые будут подставляться в NAS-ID вместо MAC адреса ТД.
Информация

В случае, если условия для домена не прописаны в /etc/eltex-radius/policy.d/proxy NAS_ID изменяться не будет

Для применения изменений конфигурации eltex-radius, необходимо перезапустить сервис командой: 

Блок кода
languagebash
themeRDark
service eltex-radius restart

Отключение проверки status-server встречного сервера

...

При работе проксирования по умолчанию работает механизм проверки статуса встречного сервера . Если до сервера, на который идет проксирование, пропала на некоторое время связь, а потом восстановилась, то требуется, чтобы этот сервер ответил на запрос status-server - только после этого проксирование возобновится.

В ходе эксплуатации может возникнуть ситуация, при которой встречный сервер не умеет отвечать на status-server, либо он не настроен должным образом. В таком случае, есть возможность отключить эту проверку на проксирующем сервере.

Для этого нужно внести следующие изменения в конфигурацию:

В файле /etc/eltex-radius/proxy.conf:
в разделе home_server auth_proxy установить:
                 значение status_check = none, по умолчанию выставлено status-server
                 значение revive_interval = 60,  по умолчанию 120

в разделе home_server_pool auth_proxy_failover установить:
                 значение type = fail-over, по умолчанию выставлено load-balance

После чегоДля применения изменений конфигурации eltex-radius, необходимо перезапустить сервис командой: 

Блок кода
languagebash
themeRDark
service eltex-radius restart

Отключение проверки status-server встречного сервера

При работе проксирования по умолчанию работает механизм проверки статуса встречного сервера . Если до сервера, на который идет проксирование, пропала на некоторое время связь, а потом восстановилась, то требуется, чтобы этот сервер ответил на запрос status-server - только после этого проксирование возобновится.

В ходе эксплуатации может возникнуть ситуация, при которой встречный сервер не умеет отвечать на status-server, либо он не настроен должным образом. В таком случае, есть возможность отключить эту проверку на проксирующем сервере.

Для этого нужно внести следующие изменения в конфигурацию:

В итоге: в случае прерывания связи между серверами, после восстановления связности сервис станет доступен в течении 60 секунд.

Отключение при инсталляции в Docker.

В файле 1)sudo docker cp eltex-radius:/etc/eltex-radius/proxy.conf /home/tester/ - копируем proxy.conf из контейнера
2)В файле 
/etc/eltex-radius/proxy.conf:
в
разделе разделе home_server auth_proxy установить:
                 значение status_check = none, по умолчанию выставлено status-server
                 значение revive_interval = 60,  по умолчанию 120
в разделе home_server_pool auth_proxy
установить_failover установить:
               
 значение status_check = none, по умолчанию выставлено status-server
                 значение revive_interval = 60,  по умолчанию 120
в разделе home_server_pool auth_proxy_failover установить:
                 значение type = fail-over, по умолчанию выставлено load-balance
После чего, необходимо перезапустить сервис  значение type = fail-over, по умолчанию выставлено load-balance
3)Файл складываем в директорию data/eltex-radius/etc/eltex-radius/proxy.conf
и в docker-compose.yml в секции volumes для сервиса eltex-radius добавляем

Блок кода
languagebash
themeRDark
- ./data/eltex-radius/etc/eltex-radius/proxy.conf:/etc/eltex-radius/proxy.conf:ro

командой: 
4)sudo chmod 664 data/eltex-radius/etc/eltex-radius/proxy.conf - даем нужные права файлу
5)Пересоздаем контейнер

Блок кода
languagebash
themeRDark
servicesudo docker compose down eltex-radius restart
sudo docker compose up -d eltex-radius

 В итоге: в случае прерывания связи между серверами, после восстановления связности сервис станет доступен в течении 60 секунд.

Источники

...

  1. https://wiki.freeradius.org/version4/upgrade/proxy
  2. https://github.com/FreeRADIUS/freeradius-server/blob/v3.0.x/raddb/proxy.conf