Назад | Перейти на главную страницу

Nginx geoip блокирует и разрешает IP-адреса LAN

Я бы хотел заблокировать IP-адреса с помощью geoip, кроме стран из белого списка И локальной сети. Первая часть работает безупречно, вторая - нет. Где-то в Интернете я нашел коды LH (локальный хост) и LN (локальная сеть), но они оба не работают.

Я использую стандартный практический код для блокировки.

Соответствующая часть http {} в nginx.conf:

geoip_country /usr/share/GeoIP/GeoIP.dat;
   map $geoip_country_code $allowed_country {
    default no;                              
    US yes;
   }

Соответствующая часть сервера {} в sites-available / default:

block countries
      if ($allowed_country = no) {
        return 444;
      }

Любые предложения будут высоко ценится!

Обновить:

Переменная $ geoip_country_code возвращает "-" при доступе к LAN IP, но добавляет "- да;" в блок geoip_county тоже не работает.

Я нашел решение - не знаю, «чистый» ли он. Просто перезапишите переменную $ allowed_country, если ранее выполнялось условие IP-адреса локальной сети.

geo $ lan-ip {
по умолчанию нет;
192.168.1.0/24 да;
}

и этот блок перед частью "# блокировать страны"

if ($ lan-ip = yes) {
установить $ allowed_country yes;
}

Вы также можете сделать следующее:

map $geoip_country_code $allowed_country {
    default no;
    '' yes;
    US yes;
}

Хотя это относится не только к IP-адресам LAN / частной сети, но и ко всем адресам, которые не обрабатываются вашей базой данных GeoIP.