Registrando clientes de rede local usando iptables

2

Eu coloquei um pi de framboesa agindo como um roteador, para me sentar entre meu modem DSL e meu roteador sem fio Netgear interno. Meu pensamento era que eu seria capaz de usar o iptables para registrar as conexões dentro e fora da minha LAN. Parece funcionar bem para os endereços na Internet, mas os endereços dos clientes aparecem como o roteador Netgear que fica entre meu roteador pi framboesa e os clientes na LAN. A seguir, mostramos a rede e a conexão de um cliente em minha LAN para www.cnn.com. Não há como ver o verdadeiro endereço IP de origem do tráfego de entrada, ou você sempre verá apenas o último salto que procedeu ao roteador executando o iptables?

LAN Client

10.0.100.17

Netgear Router

eth0 10.0.100.1 (LAN)
eth1 10.0.200.1 (WAN)

Raspberry Pi Router

eth0 10.0.200.10 (LAN)
eth1 192.168.0.3 (WAN)

Gateway DSL

eth0 192.168.0.1 (LAN)
eth1 13.10.1.39 (WAN)

www.cnn.com

151.101.189.67

Estou usando as seguintes regras do iptables:

-A PREROUTING -m limit --limit 3/min -j LOG --log-prefix "PreRouting: "
-A POSTROUTING -m limit --limit 3/min -j LOG --log-prefix "PostRouting: "
-A POSTROUTING -o eth1 -j MASQUERADE
-A INPUT -m limit --limit 3/min -j LOG --log-prefix "Input: "
-A FORWARD -m limit --limit 3/min -j LOG --log-prefix "Forward: "
-A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o eth1 -j ACCEPT
-A OUTPUT -m limit --limit 3/min -j LOG --log-prefix "Output: "

No exemplo acima, nunca verei o endereço IP do cliente na rede local. Em vez disso, só verei o endereço do roteador entre o cliente e o raspberry pi (10.0.200.1) e nunca o endereço IP para www.cnn.com (151.101.1.67).

    
por Disco Trader 19.06.2018 / 16:07

2 respostas

1

O roteador usa a conversão de endereços de rede (NAT) para mapear os endereços IP de seus clientes para o endereço IP de si mesmo (ou seja, o mapeamento de 10.0.100.17 a 10.0.100.1). O Raspberry Pi não tem acesso a essas informações, portanto, todo o tráfego parece ter origem no roteador. Não é possível ver os endereços IP dos clientes nessa configuração, consulte esta questão para mais informações.

No entanto, se o Raspberry Pi e o roteador estiverem na mesma sub-rede, o Pi poderá ver os endereços IP dos clientes da LAN. Para fazer isso, você pode instalar um servidor DHCP no Raspberry Pi, como o dnsmasq, e configurar seu roteador para o modo "bridge" (desativando o NAT e o DHCP). Aqui está um bom tutorial para configurar o dnsmasq no Linux .

    
por 19.06.2018 / 17:02
0

Existe uma ferramenta parecida com o netstat para o Linux chamada netstat-nat que deve fazer o truque para você. Para instalar (no Raspberry Pi):

apt-get install netstat-nat

Para ler as conexões NAT ativas:

netstat-nat

Eu não sei como integrá-lo com algum tipo de sistema de registro, talvez tenha um script que seja ativado a cada dois minutos e grave a saída desse comando em um arquivo?

Infelizmente, na sua configuração, não funcionará. Você terá que trocar as posições do roteador Netgear e do Raspberry Pi para que isso funcione. O NAT modifica especificamente o endereço IP de origem em qualquer pacote de entrada para deixar o roteador NAT aparecendo como se viesse dele. A menos que você possa identificar os clientes usando outro campo em um pacote (talvez User-Agent?)

    
por 19.06.2018 / 21:15