![Фильтрация MAC-адресов OpenVPN — добавление нескольких MAC-адресов?](https://rvso.com/image/1601188/%D0%A4%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F%20MAC-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%BE%D0%B2%20OpenVPN%20%E2%80%94%20%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%B8%D1%85%20MAC-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%BE%D0%B2%3F.png)
Я следил за этимДокумент OpenVPN, и мне удалось включить функцию фильтрации MAC-адресов. Как добавить несколько MAC-адресов для одного пользователя в базу данных?
Пример команды, которую я бы использовал для замены зарегистрированного MAC-адреса:
# ./sacli -u "exampleuser" -k "pvt_hw_addr" -v "00:01:02:ab:cd:12" UserPropPut
решение1
Читая скрипт, который выполняет проверку MAC, в его текущем состоянии это, похоже, невозможно сделать. Однако, для включения этого поведения потребуется лишь небольшая модификация, поскольку на самом деле скрипт просто считывает значение и сравнивает с ним локальный MAC:
if hw_addr:
hw_addr_save = proplist.get('pvt_hw_addr') # saved MAC addr property
if hw_addr_save:
if hw_addr_save != hw_addr:
error = "The hardware MAC address reported by this VPN client does not match the registered MAC address."
Вы можете просто сохранить список, разделенный запятыми, в этом свойстве и изменить эту часть скрипта, чтобы разделить сохраненное pvt_hw_addr
свойство на список, и проверить, содержится ли в нем локальный MAC-адрес.
При этом OpenVPN разработан для поддержки аутентификации на основе сертификатов, что хорошо справляется с аутентификацией оборудования. MAC-адреса легко подделываются, так что это может не стоить усилий.
решение2
cd /usr/local/openvpn_as/scripts
#./sacli -u "примерпользователя" -k "pvt_hw_addr2" -v "ef:cd:ba:03:02:01" UserPropPut