У меня есть маршрутизатор OpenWRT с IP 192.168.1.1. Я хочу установить прокси-сервер (192.168.1.249) в локальной сети и перехватывать все соединения с двух устройств (192.168.1.244, 192.168.1.131). Метод, который я использую, заключается в установке прокси-сервера в качестве шлюза по умолчанию, и я настроил следующие вещи на своем маршрутизаторе OpenWRT.
iptables -t mangle -A PREROUTING -j MARK --set-mark 3 -p tcp -s 192.168.1.131
iptables -t mangle -A PREROUTING -j MARK --set-mark 3 -p tcp -s 192.168.1.244
# Set default gateway as the proxy server in table 2
ip route add default via 192.168.1.249 table 2
# Forward traffic with mark 3 to table 2
ip rule add fwmark 3 table 2
После моего теста, все WAN-соединения двух устройств прокси-сервер может перехватывать и пересылать, это хорошо.Однако я обнаружил, что эти два устройства также взаимодействуют друг с другом, и эти локальные соединения, похоже, не перенаправляются на прокси-сервер.. В чем причина? Как перенаправить этот трафик на прокси-сервер?
ТЕСТ: Чтобы выяснить, полезна ли настройка iptables, я добавил правило для тестирования:
iptables -t mangle -A PREROUTING -j DROP -s 192.168.1.131
По моему мнению, если это правило работает, то устройство с ip 244 не будет получать трафик от устройства с ip 131, и это доказывает, что iptables может работать для LAN-коммуникаций. Однако я использовал устройство 131 для отправки tcp-трафика на устройство 244, и это работает. Я сомневаюсь, что настройка iptables не поможет мне перенаправить этот LAN-трафик на мой прокси-сервер. Я прав?
решение1
Я предполагаю, что ваша IP-подсеть — это 192.168.1.0/24
, что означает, что все IP-адреса, начинающиеся с , 192.168.1
находятся в одном широковещательном домене L2, то есть подключены к одному коммутатору.
Устройства, находящиеся в одной IP-подсети, взаимодействуют друг с другом напрямую через «связь» уровня 2, маршрутизация уровня 3 не выполняется.
IPTables — это механизм, который выполняет брандмауэрирование маршрутизируемых пакетов между различными подсетями. Он не видит трафик, который хосты одной и той же подсети отправляют друг другу.
Если вы хотите установить межсетевой экран между двумя хостами, есть несколько вариантов:
- Переместите хосты в разные подсети (например,
192.168.1.0/24
и192.168.2.0/24
) и настройте маршрут маршрутизатора между двумя подсетями. - Установите два разных сегмента Ethernet и настройте маршрутизатор как мост между сегментами. Затем можно настроить IPTables для фильтрации пакетов между двумя сегментами Ethernet.