Я поместил 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).