Пересылка и маршрутизация iptables

На самом деле этот вопрос касается openwrt и CoovaAP , но я думаю, что это то же самое в других дистрибутивах Linux.

У меня есть два интерфейса: «wan» и «wlan» интерфейс.

Есть ли по умолчанию какой-либо фильтр, который ограничивает, какие пакеты пересылаются из интерфейса wlan в wan?

Особенно, если интерфейс wlan на маршрутизаторе – 192.168.1.1, и кто-то, подключенный к этому интерфейсу, входит 172.16.1.1 в качестве IP-адреса на своем компьютере. Так или иначе, его пакеты отправлены? Решение о маршрутизации принимается только IP-адресом назначения или зависит от источника?

Я думаю, проблема в том, что ответы на машину 172.16.1.1 не будут возвращаться. Могут ли правила пересылки iptables работать с интерфейсами как переключатель?

Если бы я хотел переслать 172.16.x, я мог бы настроить псевдоним на этом физическом интерфейсе. Есть ли другой способ?

По умолчанию скрипт брандмауэра Coova просто говорит

iptables -A FORWARD -i $WIFI -o $WAN -j ACCEPT 

Я отключил маскировку.

Можно ли «разделить» сети таким образом и полагаться на это? Есть ли способ, которым кто-то мог пересылать свои пакеты с адресом не 192.168.1.x?

Причина этого вопроса заключается в том, что за WAN-интерфейсом стоят машины, которые не должны быть доступны для пользователей WLAN. Эти машины полагаются на исходный IP-адрес.

Да, по умолчанию есть фильтр: по умолчанию все пакеты не пересылаются. Это, очевидно, отключено.

Существует второй фильтр, который может быть включен: фильтр обратного пути. Если включено, пакеты, входящие в интерфейс, проверяют адрес источника на таблицу маршрутизации, чтобы убедиться, что ответ выйдет из того же интерфейса. Если нет, пакет будет удален. Это настроено в /proc/sys/net/ipv4/conf/{all,default, devname }/rp_filter .

Кроме того, по умолчанию маршрутизация выполняется только на основе IP-адреса назначения.

Что касается вашего третьего вопроса … Если у вас есть машина, настроенная на 172.16.1.1/24, и попытайтесь установить свой шлюз по умолчанию на 192.168.1.1, вы, вероятно, получите сообщение об ошибке: этот шлюз по умолчанию недоступен (есть нет маршрута к нему). Если вы попросите его принять и использовать его в любом случае (например, добавив маршрут к нему), он отправит пакет вашему маршрутизатору. Если фильтр обратного пути отключен, ваш маршрутизатор примет и направит пакет. Любые ответы, вероятно, нигде не будут полезны:

  1. они могут даже не вернуться к вашему маршрутизатору. Другие маршрутизаторы знают, что отправлять пакеты для 192.168.1.0/24 на ваш маршрутизатор, но не 172.16.1.0/24. Предполагая, что вы настроили маршруты, чтобы это произошло, тогда …

  2. ваш маршрутизатор не знает, куда отправлять пакеты для 172.16.1.0/24. На самом деле – возможно, это так, и отправит их по умолчанию. Если вы настроили маршрут на своем маршрутизаторе, чтобы отправить его обратно в поле …

  3. то это, вероятно, сработает.

Альтернативы – просто добавить еще один IP-адрес в ваш интерфейс wlan. Это довольно нормально для маршрутизатора, чтобы иметь по крайней мере один IP-адрес в каждой подсети, для которой он маршрутизируется. Для этого вам не нужен интерфейс псевдонимов, просто добавьте второй IP-адрес с ip : ip addr add 172.16.1.254/24 dev wlan . Обычно в подсети с одним маршрутизатором первым используемым IP является маршрутизатор, но это просто для удобства; это не техническое требование.

iptables применяются ко всему IP-трафику, проходящему через коробку. Это включает как локально генерируемый, так и перенаправленный трафик.

Вы можете использовать поддержку brctl для фактического перехода wan и wlan (превратите их в переключатель), но похоже, что вы этого не хотите. Вы можете фильтровать мосты с помощью ebtables (не iptables ).