2

Я поместил Raspberry Pi, выступающий в качестве маршрутизатора, между моим модемом DSL и внутренним беспроводным маршрутизатором Netgear. Я думал, что смогу использовать iptables для входа и выхода из локальной сети. Кажется, это хорошо работает для адресов в Интернете, но адреса клиентов отображаются как маршрутизатор Netgear, который находится между моим маршрутизатором raspberry pi и клиентами в локальной сети. Ниже показана сеть и подключение клиента из моей локальной сети к www.cnn.com. Нет ли способа увидеть истинный исходный IP-адрес входящего трафика, или вы всегда будете просто видеть последний прыжок, после которого маршрутизатор запустил iptables?

Клиент локальной сети

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)

DSL Gateway

eth0 192.168.0.1 (LAN)
eth1 13.10.1.39 (WAN)

www.cnn.com

151.101.189.67

И я использую следующие правила 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: "

В приведенном выше примере я никогда не увижу IP-адрес клиента в локальной сети. Вместо этого я увижу только адрес маршрутизатора между клиентом и raspberry pi (10.0.200.1), но не ip-адрес для www.cnn.com (151.101.1.67).

2 ответа2

1

Маршрутизатор использует преобразование сетевых адресов (NAT) для сопоставления IP-адресов своих клиентов с IP-адресом самого себя (т. Е. Сопоставлением 10.0.100.17 и 10.0.100.1). Raspberry Pi не имеет доступа к этой информации, поэтому кажется, что весь трафик исходит от маршрутизатора. Невозможно увидеть IP-адреса клиентов в этой конфигурации, см. Этот вопрос для получения дополнительной информации.

Однако, если Raspberry Pi и маршрутизатор находятся в одной подсети, Pi сможет видеть IP-адреса клиентов локальной сети. Для этого вы можете установить DHCP-сервер на Raspberry Pi, например, dnsmasq, и настроить маршрутизатор в режим "моста" (отключив NAT и DHCP). Вот хороший учебник по настройке dnsmasq в Linux.

0

Существует netstat-подобный инструмент для Linux, называемый netstat-nat, который должен помочь вам. Чтобы установить (на Raspberry Pi):

apt-get install netstat-nat

Чтобы прочитать активные соединения NAT:

netstat-nat

Я не знаю, как интегрировать его с какой-то системой журналирования, может быть, есть скрипт, который активируется каждые пару минут и записывает вывод этой команды в файл?

К сожалению, в вашей конфигурации это не будет работать. Вам нужно поменять местами положения маршрутизатора Netgear и Raspberry Pi, чтобы это работало. NAT специально изменяет IP-адрес источника в любых входящих пакетах, чтобы маршрутизатор NAT отображался так, как если бы он пришел от него. Если только вы не можете идентифицировать клиентов, используя другое поле в пакете (может быть, User-Agent?)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .