Ipv6 + Radius 3 Development

Матеріал з NoDeny
Перейти до навігації Перейти до пошуку

Это процесс разработки!

Установка Radius

apt install freeradius-mysql
rm /etc/freeradius/3.0/sites-enabled/default
cp /usr/local/nodeny/etc/raddb/clients.conf /etc/freeradius/3.0/

Конфигурирование

nano /etc/freeradius/3.0/sites-enabled/nodeny

Вставляем следующий текст:

server default {
    listen {
        type = auth
        ipaddr = *
        port = 1812
    }
    listen {
        type = acct
        ipaddr = *
        port = 0
    }
    authorize {
        sql
        update control {
          Auth-Type := Accept
        }
    }
    authenticate {
    }
    preacct {
        acct_unique
        preprocess
    }
    accounting {
        sql
    }
    session {
        radutmp
        sql
    }
    post-auth {
        sql
    }
    Post-Auth-Type ACCEPT {
        sql
    }
}

Sql конфиг

В консоли:

nano /etc/freeradius/3.0/mods-enabled/sql

Вставляем следующий текст:

sql {
    driver = "rlm_sql_mysql"
    mysql {
        warnings = auto
    }
    server = "localhost"
    port = 3306
    login = "nodeny"
    password = "hardpass"
    radius_db = "nodeny"

    read_groups = no
    authorize_reply_query = "call radreply('%{User-Name}', '%{NAS-IP-Address}')"
    accounting {
        reference = "%{tolower:type.%{Acct-Status-Type}.query}"
        type {
            start {
                query = "call radupdate('%{ERX-Dhcp-Mac-Addr}','%{Framed-IP-Address}',\
                        'nas=%{NAS-IP-Address};ses=%{Acct-Session-Id}')"
            }
            interim-update {
                query = "${..start.query}"
            }
            stop {
                query = "call radstop('%{Framed-IP-Address}', '%{NAS-IP-Address}')"
            }
        }
    }
    post-auth {
        query = "call radupdate('%{ERX-Dhcp-Mac-Addr}','%{reply:Framed-IP-Address}',\
                'nas=%{NAS-IP-Address};ses=%{Acct-Session-Id};first_response=1')"
    }
    pool {
      start = 5
      min = 5
      max = 130
      spare = 30
      uses = 0
      retry_delay = 30
      lifetime = 0
      idle_timeout = 60
    }
}

Докер Микротика

docker pull hossein3piol/mikrotik-routeros
nano docker-compose.yml

Вставляем:

version: '3.9'

services:
   routers:
       container_name: "mikrotik"
       image: hossein3piol/mikrotik-routeros:latest
       privileged: true
       ports:
           - "2222:22"    # ssh
           - "8888:80"    # http
           - "8291:8291"  # winbox
       cap_add:
           - NET_ADMIN
       devices:
           - /dev/net/tun
       extra_hosts:
           - "host.docker.internal:host-gateway"

В конфиге проброс на хостовую машину портов 22, 80 и 8291. host.docker.internal:host-gateway - добавдяем в днс хостовую машину (не сработало, придется по ip)

Запускаем контейнер:

docker-compose up

Первый запуск был очень долгим. Коннектимся:

ssh admin@172.17.0.1 -p 2222

По умолчанию пароль пустой

/ip dhcp-server
add disabled=no interface=ether1 name=dhcp1 use-radius=yes
/radius
add address=172.17.0.1 secret=hardpass5 service=dhcp

На хостовой машине добавим в радиус микротик:

nano /etc/freeradius/3.0/clients.conf
client 172.19.0.2 {
        secret      = hardpass5
        shortname   = NoDenyDB
        nastype     = cisco
}

172.19.0.2 - ip микротика, почему именно такой пока не знаю. Кстати, я его получил из лога freeradius:

Ignoring request to acct address * port 1813 bound to server default from unknown client 172.19.0.2 port 40012 proto udp

А в микротике:

/ip address/print