У меня проблема с маршрутизацией на linux.
Мой интернет-провайдер дал мне 2 диапазона публичных адресов, скажем:
192.168.11.0/30 (4 адреса) - роутер
192.168.33.0/29 (8 адресов) - серверы
дополнительно у меня на маршрутизаторе (192.168.11.2) второй интерфейс eth1, за NAT - LAN 10.0.0.0/8
Сеть 192.168.11.0/30 имеет адреса сети (192.168.11.0), бегства (192.168.11.1), хоста (192.168.11.2) и широковещательной рассылки (192.168.11.3). Сеть 192.168.33.0/29 имеет адрес сети (192.168.33.0), 6 адресов хоста (192.168.33.1-6) и широковещательный (192.168.33.7) - никакого выхода.
Хост из сети 192.168.11.0/30 - 192.168.11.2 - это своего рода мой маршрутизатор для локальной сети 10.0.0.0/8 и маршрутизирующий трафик для 192.168.33.0/29.
Трассировка от некоторого программного обеспечения в Интернете на любой адрес из сети 192.168.33.0/29 приведет к хосту 192.168.11.2 (а не к выходу 192.168.11.1).
Моя конфигурация:
На 192.168.11.2
$ route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.11.1 0.0.0.0 UG 0 0 0 eth0
192.168.11.0 0.0.0.0 255.255.255.252 U 0 0 0 eth0
10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth1
192.168.33.0 0.0.0.0 255.255.255.248 U 0 0 0 eth0
Например, 192.168.33.6
$ route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.11.2 0.0.0.0 UG 0 0 0 eth0
192.168.11.0 0.0.0.0 255.255.255.252 U 0 0 0 eth0
192.168.33.0 0.0.0.0 255.255.255.248 U 0 0 0 eth0
На 192.168.11.2 в iptables нет записи об этом трафике, примерно так:
iptables -A FORWARD -i eth0 -o eth0 -s 192.168.33.0/29 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth0 -d 192.168.33.0/29 -j ACCEPT
Интернет-провайдер говорит, что я должен маршрутизировать трафик 192.168.33.0/29 через 192.168.11.2 (хост), и это работает, но моя проблема в том, что весь трафик, который приходит, например, на 192.168.33.6, в iptables на 192.168.33.6 всегда имеет источник хост из первой сети - 192.168.11.2 (хост, который является gw для сети 192.168.33.0/29), а не исходный IP-адрес источника трафика.
Это создает проблему, потому что я хочу, чтобы на хосте, например, 192.168.33.6 в брандмауэре разрешалось только ssh из локальной сети маршрутизатора (10.0.0.1, где gw - 192.168.33.2) и Мой дом (скажем, 192.168.231.15). Наконец, весь трафик разрешен, потому что адрес источника, отображаемый iptables, 192.168.33.2 ...
Я понимаю, что могу оставить брандмауэр на 192.168.33.6 пустым и фильтровать трафик на маршрутизаторе 192.168.11.2, но по нескольким причинам я не могу сделать это таким образом.