среда, 26 августа 2015 г.

Slackware: iptables и правила со множеством сетей

Возникла тут одна небольшая проблема. Пусть есть у нас некий линуксовый сервер, который служит шлюзом между тремя сетями, и в котором в iptables прописано много забавных маршрутов. Две сети - локальные, скажем, 10.0.0.0/8 и 192.168.0.0/16, воткнутые каждая в свою сетевую карточку, и третья - Интернет за NAT c внешним адресом X.X.X.X. И нужно какому-нибудь конкретному локальному адресу, например, 10.Y.Y.Y, дать доступ к ресурсам обеих локальных сетей и в то же время пустить в Интернет.

Было бы прекрасно, если бы можно было в параметрах iptables перечислить несколько подсетей, например, так:
iptables -A POSTROUTING -t nat -s 10.Y.Y.Y -d !10.0.0.0/8,!192.168.0.0/16 --to-source X.X.X.X
но, к сожалению, этот вариант у меня не сработал: iptables не позволил указать несколько подсетей таким образом и заругался на синтаксис.

Насколько я понял, в этом случае решением является следующее: создать отдельную цепочку правил, в которой последовательно проверить назначения пакета:
# создаем цепочку правил
iptables -N MYCHAIN -t nat
iptables -A MYCHAIN -t nat -d 10.0.0.0/8     -j RETURN
iptables -A MYCHAIN -t nat -d 192.168.0.0/16 -j RETURN
iptables -A MYCHAIN -t nat                   -j SNAT --to-source X.X.X.X

# используем цепочку правил
iptables -A POSTROUTING -t nat -s 10.Y.Y.Y -j MYCHAIN

Комментариев нет:

Отправить комментарий