Nginx geoipblocking e permissão de IPs de LAN

2

Gostaria de bloquear os IPs com o geoip, exceto os países da lista de desbloqueio E a rede local. A primeira parte funciona impecável, a segunda não. Em algum lugar pesquisando na internet eu encontrei os códigos LH (host local) e LN (rede local), mas ambos não estão funcionando.

Estou usando o código howto padrão para o bloqueio.

A parte http {} relevante no nginx.conf:

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

A parte {} do servidor relevante nos sites disponíveis / padrão:

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

Qualquer sugestão seria muito apreciada!

Atualização:

A variável $ geoip_country_code retorna "-" no acesso IP da LAN, mas adicionando "- sim;" para o bloco geoip_county também não funciona.

    
por john 28.03.2014 / 17:50

2 respostas

3

Encontrei uma solução - não faço ideia se é "limpa". Basta sobrescrever a variável $ allowed_country se uma condição de lan IP tiver sido correspondida antes.

geo $lan-ip {
default no;
192.168.1.0/24 yes;
}

e este bloco antes da parte "#block countries"

if ($lan-ip = yes) {
set $allowed_country yes;
}

    
por 29.03.2014 / 11:29
0

Você também pode fazer o seguinte:

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

Embora isso não se aplique apenas a endereços IP de redes locais / privadas, mas a todos os endereços que não são gerenciados pelo seu banco de dados GeoIP.

    
por 30.10.2018 / 11:04