LINUX.ORG.RU
ФорумAdmin

iptables POSTROUTING


0

0

Доброго времени суток, господа.
Появилась такая проблемка:
1. Есть роутер в локалке с внешним адресом 192.168.75.200 и 4-мя интрефейсами 192.168.80-83.0 внутри.
2. На роутере стоит прозрачный squid. Настроеный и готов к работе. Сам роутер выхода в интернет не имеет.
3. Клиенты в сети при запуске биллинга ессно, выход имеют.
Задача: запустить всех клинтов через проксю.

в iptables пишем:
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128 #заворачиваем клиентов по 80 порту
 на 3128 (squid на роутере)

Вопрос: как теперь через POSTROUTING вернуть все под клиентский IP-адрес
 обратно, т.к. в биллинге привязка к IP-адресам и запрос с адреса 
192.168.75.200 просто не будет обработан?

Если вписать все клиентские адреса через правило:
iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 80 -j SNAT --to-source клиентский_IP_адрес
то весь трафик "лезет" на самый первый адрес.

★★★★

Может быть с помощью CONNMARK/MARK.
Помечать пакеты для разных клиентов своей меткой, и SNAT делать на основании этой отметки.

Но этоо ужасно неудобно.

Может просто дать клиентам напрямую обращаться к биллингу?
У биллинга страницы все динамические, так что кэшировать там нечего.
К твоему правилу в PREROUTING добавть -d ! <billing_ip> и все
В таблице FORWARD отфильтруй их как тебе надо.
Ну и конечно echo 1 > /proc/.../ip_forward

afunix
()

никак не вернуть.

соединение ушло в userspace (на squid), и уже никакие MARK'и и прочие исхищрения не помогут. все соединения "наружу", которые будет инициировать squid, будут совершенно новыми соединениями, и о том, как они пересекаются с redirect'нутыми клиентскими соединениями, знает только сам squid, и знанием этим он делиться не умеет.

т.е. теоретически такая возможность есть, но чтобы её реализовать на практике - придётся написать километры кода.

имхо, так.

kes
()

както здесь в ветке я говорил каждому клиенту через acl назначить свой tcp_outgoing_address из неиспользуемой подсети на на выходном интерфейсе делать SNAT с этого адреса на реальный адрес клиента у меня такая система успешно работала правда у вас сеть большая и много алиасов на выходном интерфейсе придеться создавать но работать будет правда помоему это костыль всеже но я другово способа не нашел.

anonymous
()
Ответ на: комментарий от anonymous

а почему б не поставить прокси после биллинга?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.