Efendy
|
|
« Ответ #255 : 13 Сентября 2017, 17:44:39 » |
|
|
|
|
Записан
|
|
|
|
fet4
|
|
« Ответ #256 : 10 Ноября 2017, 19:07:59 » |
|
Есть неприятная ситуация. Есть клиенты на pon у которых стоит один на порту+фиксированное подключение, авторизация по mac свича + порт. Сигментировали сеть, сменили vlan и подсеть. У клиента не проходит авторизаци 10.11.2017 19:04:00 Duplicate entry 'e894f6b07995' for key 'mac'
{ 'sql' => 'UPDATE mac_uid SET time=UNIX_TIMESTAMP(), ip=INET_ATON(?), mac=? WHERE device_mac=? AND device_port=? AND oneconnect>0', 'param' => [ '10.194.132.19', 'e894f6b07995', 'e067b31533b2', 1 ] };
UPDATE mac_uid SET time=UNIX_TIMESTAMP(), ip=INET_ATON('10.194.132.19'), mac='e894f6b07995' WHERE device_mac='e067b31533b2' AND device_port='1' AND oneconnect>0 10.11.2017 19:04:00 Connecting to DBI:mysql:database=nodeny;host=localhost;port=3306;mysql_connect_timeout=5 : 0.000274 sec 10.11.2017 19:04:00 INSERT INTO mac_uid SET uid=0, mac='e894f6b07995', device_mac='e067b31533b2', device_port='1', ip=INET_ATON('10.194.132.19'), time=UNIX_TIMESTAMP() ON DUPLICATE KEY UPDATE device_mac='e067b31533b2', device_port='1', ip=INET_ATON('10.194.132.19'), time=UNIX_TIMESTAMP() Строк: 1. Время выполнения sql: 0.0003 сек 10.11.2017 19:04:00 SELECT uid FROM mac_uid WHERE mac='e894f6b07995' AND device_mac='e067b31533b2' AND device_port='1' Строк: 1. Время выполнения sql: 0.0001 сек 10.11.2017 19:04:00 UPDATE ip_pool SET uid=0 WHERE ip=INET_ATON('10.194.132.19') AND type='dynamic' Строк: 1. Время выполнения sql: 0.0002 сек
10.11.2017 19:04:00 [commit] ip=10.194.132.19, mac=e8:94:f6:b0:79:95, mac_ok=e894f6b07995, port=e067b31533b2[1] | Необходима регистрация мака
Почему так? и как побороть? Вроде один на порту, всеравно какой ip и vlan, авторизуем по маку свича и порта. Заранее спасибо.
|
|
|
Записан
|
|
|
|
cojiict
|
|
« Ответ #257 : 04 Января 2018, 12:40:16 » |
|
при ручному корегуванні/створенні нової mac_uid потрібна історія (хоча б id адміна який робив і час коли). Як реалізувати?
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #258 : 04 Января 2018, 17:00:58 » |
|
select * from changes where tbl='mac_uid'\G
|
|
|
Записан
|
|
|
|
pala
|
|
« Ответ #259 : 04 Января 2018, 21:57:29 » |
|
Есть неприятная ситуация. Есть клиенты на pon у которых стоит один на порту+фиксированное подключение, авторизация по mac свича + порт. Сигментировали сеть, сменили vlan и подсеть. У клиента не проходит авторизаци 10.11.2017 19:04:00 Duplicate entry 'e894f6b07995' for key 'mac'
{ 'sql' => 'UPDATE mac_uid SET time=UNIX_TIMESTAMP(), ip=INET_ATON(?), mac=? WHERE device_mac=? AND device_port=? AND oneconnect>0', 'param' => [ '10.194.132.19', 'e894f6b07995', 'e067b31533b2', 1 ] };
UPDATE mac_uid SET time=UNIX_TIMESTAMP(), ip=INET_ATON('10.194.132.19'), mac='e894f6b07995' WHERE device_mac='e067b31533b2' AND device_port='1' AND oneconnect>0 10.11.2017 19:04:00 Connecting to DBI:mysql:database=nodeny;host=localhost;port=3306;mysql_connect_timeout=5 : 0.000274 sec 10.11.2017 19:04:00 INSERT INTO mac_uid SET uid=0, mac='e894f6b07995', device_mac='e067b31533b2', device_port='1', ip=INET_ATON('10.194.132.19'), time=UNIX_TIMESTAMP() ON DUPLICATE KEY UPDATE device_mac='e067b31533b2', device_port='1', ip=INET_ATON('10.194.132.19'), time=UNIX_TIMESTAMP() Строк: 1. Время выполнения sql: 0.0003 сек 10.11.2017 19:04:00 SELECT uid FROM mac_uid WHERE mac='e894f6b07995' AND device_mac='e067b31533b2' AND device_port='1' Строк: 1. Время выполнения sql: 0.0001 сек 10.11.2017 19:04:00 UPDATE ip_pool SET uid=0 WHERE ip=INET_ATON('10.194.132.19') AND type='dynamic' Строк: 1. Время выполнения sql: 0.0002 сек
10.11.2017 19:04:00 [commit] ip=10.194.132.19, mac=e8:94:f6:b0:79:95, mac_ok=e894f6b07995, port=e067b31533b2[1] | Необходима регистрация мака
Почему так? и как побороть? Вроде один на порту, всеравно какой ip и vlan, авторизуем по маку свича и порта. Заранее спасибо. Покажите пожалуйста конфиг вашего DHCP сервера и секцию dhcp snooping на OLT
|
|
|
Записан
|
|
|
|
Gosha
|
|
« Ответ #260 : 05 Января 2018, 09:12:11 » |
|
Может кому понадобится. У меня работает и модуль DHCP, и make_config. Сам конфиг генерирует dhcp.tmpl . На каждую ветку PON выделяется подсетка /24 в отдельном влане. Первые 64 IP для статики, 254 - шлюз. Остальные динамика. При подключении клиента он получает динамику, оператор по данным в биллинге сохраняет мак устроуства и порт устройства, а также галочка один на порту. После чего меняет динамику на статику. IP выдаются 10.А.В.С А - OLT, B-порт OLT(vlan), C-номер ONU. Часть конфига - это для PON (bdcom 3608, bdcom 3616) log-facility local7; option domain-name-servers 1.1.1.1; authoritative; allow unknown-clients;
.........................
shared-network vlan501 {
{% for user in users %} {% if user.ips.0.ipa && user.ips.0.type eq 'static' && user.connection.0 && user.connection.0.oneconnect && user.ips.0.ip >= inet.aton('10.1.1.1') && user.ips.0.ip <= {% one_line %} class "host{{user.ips.0.ipa}}" { match if binary-to-ascii(10,8,"",suffix(option agent.circuit-id,2))="{{user.connection.0.device_port}}" and suffix(option agent.remote-id,6)={{user.connection.0.device_mac|pretty_mac}}; } {% one_line_end %} {% endif %} {% endfor %}
subnet 10.1.1.0 netmask 255.255.255.0 { pool { {% for user in users %} {% if user.ips.0.ipa && user.ips.0.type eq 'static' && user.connection.0 && user.connection.0.oneconnect && user.ips.0.ip >= inet.aton('10.1.1.1') && user.ips.0.ip <= {% one_line %} deny members of "host{{user.ips.0.ipa}}"; {% one_line_end %} {% endif %} {% endfor %} range 10.1.1.65 10.1.1.250; } interface vlan501; option routers 10.1.1.254; default-lease-time 28800; min-lease-time 10000; max-lease-time 128800; on commit { set ClientIP = binary-to-ascii(10, 8, ".", leased-address); set ClientMac = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6)); set SwitchMac = ""; set SwitchPort =""; if exists agent.circuit-id { set SwitchMac = binary-to-ascii(16, 8, ":", suffix(option agent.remote-id, 6)); set SwitchPort = binary-to-ascii(10, 8, "", suffix(option agent.circuit-id, 2)); } execute("/usr/bin/perl", "/usr/local/nodeny/modules/dhcp/events.pl", "commit", ClientIP, ClientMac, SwitchMac, SwitchPort); } on expiry { set ClientIP = binary-to-ascii(10, 8, ".", leased-address); execute("/usr/bin/perl", "/usr/local/nodeny/modules/dhcp/events.pl", "expiry", ClientIP); } on release { set ClientIP = binary-to-ascii(10, 8, ".", leased-address); execute("/usr/bin/perl", "/usr/local/nodeny/modules/dhcp/events.pl", "release", ClientIP); }
{% for user in users %} {% if user.ips.0.ipa && user.ips.0.type eq 'static' && user.connection.0 && user.ips.0.ip >= inet.aton('10.1.1.1') && user.ips.0.ip <= inet.aton('10.1.1.64') %} {% if user.connection.0.oneconnect %} pool { range {{user.ips.0.ipa}}; allow members of "host{{user.ips.0.ipa}}"; } {% else %} host host{{user.ips.0.ipa}} { hardware ethernet {{user.connection.0.mac|pretty_mac}}; fixed-address {{user.ips.0.ipa}}; } {% endif %} {% endif %} {% endfor %}
} } ......................... Динамика нужна только для регистрации абонентов, все остальные на статике. Включено ip-source Все работает стабильно. Из плохого. В данном конфиге порт, это портOLT + номер ONU. А надо бы просто порт ONU - буду переделывать. Проблема с переключальщиками решена костылем, раз в десть минут по крону обнуляется лиза. Патч на dhcp, чесно говоря не нашел. Хоть надо подумать с временем аренды поиграть.
|
|
|
Записан
|
|
|
|
tom
|
|
« Ответ #261 : 05 Марта 2018, 19:28:57 » |
|
Вітаю. є такий ньюанс. В білінг заведений користувач, в розділі мак - поставив галочку oneconnect=1. Коли новий користувач авторизується по вебу, oneconnect затирається і ставиться значення 0. Це можна виправити?
|
|
|
Записан
|
|
|
|
Gosha
|
|
« Ответ #262 : 05 Марта 2018, 21:46:22 » |
|
Вітаю. є такий ньюанс. В білінг заведений користувач, в розділі мак - поставив галочку oneconnect=1. Коли новий користувач авторизується по вебу, oneconnect затирається і ставиться значення 0. Це можна виправити?
Якщо стоїть один на порту(oneconnect=1), то це означає, що у клієнта встановлений статичний IP, і незалежно від мака він одержить свій IP без регістрації, по маку і порту обладнання. Можливо проблеми з конфігом dhcp?
|
|
|
Записан
|
|
|
|
tom
|
|
« Ответ #263 : 06 Марта 2018, 05:08:04 » |
|
Ну наскільки я розібрався, це означає зовсім інше. І до типу ір відношення не має. 2) Если создать допполе: имя в БД: _oneconnect тип: Да/Нет имя: один на порту
и у определенного клиента(тов) установить в значение "да", то после того как клиент авторизует свое подключение, у этого подключения будет поставлена галка "один клиент на порту". Это означает, что при смене мак-адреса (т.е при подключении другого компьютера, ноута, роутера и т.д.) у клиента пароль спрашиваться не будет. Естественно, это имет смысл только для ситуации если к текущему порту подключен только один клиент, т.е в биллинге запоминается "на этом свиче и порту клиент Иванов, неважно какой мак". При авторизацій - заноситься обладнання і порт. І перезаписуєтсья oneconnect=0, а мало б не чіпати цей параметр.
|
|
|
Записан
|
|
|
|
Gosha
|
|
« Ответ #264 : 06 Марта 2018, 14:05:19 » |
|
Тоді навіщо Вам ставити "один на порту", якщо адреси на цей порт віддаються динамічно? Наскільки я розумію, весь смисл в тому, щоб на порту X обладнання , і Y порту, був завжди один IP, не залежно від обладнання , яке в нього вставлене.
|
|
|
Записан
|
|
|
|
tom
|
|
« Ответ #265 : 06 Марта 2018, 15:18:31 » |
|
В мене інше розуміння. Один на порту - щоб авторизувати будького, хто є на цьому порту. Тобто провірки по маку вже не має, лише пристрій-порт. А філософія Н+, як казав Стас, пофіг який ір. Паролем для авторизації є або мак, або в даному випадку - пристрій-порт.
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #266 : 06 Марта 2018, 15:38:45 » |
|
Вітаю. є такий ньюанс. В білінг заведений користувач, в розділі мак - поставив галочку oneconnect=1. Коли новий користувач авторизується по вебу, oneconnect затирається і ставиться значення 0. Це можна виправити?
Когда он попадает на заглушку и с нее в личный кабинет чтоб зарегать свое подключение?
|
|
|
Записан
|
|
|
|
Gosha
|
|
« Ответ #267 : 06 Марта 2018, 20:16:59 » |
|
В мене інше розуміння. Один на порту - щоб авторизувати будького, хто є на цьому порту. Тобто провірки по маку вже не має, лише пристрій-порт. А філософія Н+, як казав Стас, пофіг який ір. Паролем для авторизації є або мак, або в даному випадку - пристрій-порт.
Це получається, що в кабінеті клієнта нема IP, але є мак(де встановлений мак і порт обладнання, а також один на порту). І коли клієнт одержує динаміку , він автоматично , без регістрації попадає в інет. Не знав про таку функцію модуля.
|
|
|
Записан
|
|
|
|
tom
|
|
« Ответ #268 : 06 Марта 2018, 22:42:52 » |
|
Вітаю. є такий ньюанс. В білінг заведений користувач, в розділі мак - поставив галочку oneconnect=1. Коли новий користувач авторизується по вебу, oneconnect затирається і ставиться значення 0. Це можна виправити?
Когда он попадает на заглушку и с нее в личный кабинет чтоб зарегать свое подключение? Ага
|
|
|
Записан
|
|
|
|
tom
|
|
« Ответ #269 : 06 Марта 2018, 22:43:51 » |
|
В мене інше розуміння. Один на порту - щоб авторизувати будького, хто є на цьому порту. Тобто провірки по маку вже не має, лише пристрій-порт. А філософія Н+, як казав Стас, пофіг який ір. Паролем для авторизації є або мак, або в даному випадку - пристрій-порт.
Це получається, що в кабінеті клієнта нема IP, але є мак(де встановлений мак і порт обладнання, а також один на порту). І коли клієнт одержує динаміку , він автоматично , без регістрації попадає в інет. Не знав про таку функцію модуля. Абсолютно вірно. Так зараз працює
|
|
|
Записан
|
|
|
|
|