Доброго времени суток.
Уже 2-й день ломаю голову как это сделать:
1. Имеется сервер, 1 интерфейс, на нем весит apache.
2. Имеется еще один сервис, весит на 1234 порте.
требуется все пакеты, содержащие "vasya" перебросить с 80-го порта на 1234, а остальные чтобы как и надо ушли на апач.
Делаю так
iptables -t mangle -A PREROUTING -p tcp --dport 80 -m string --string "vasya" --algo bm -j MARK --set-mark 123
iptables -t nat -A PREROUTING -p tcp --dport 80 -m mark --mark 123 -j REDIRECT --to-ports 5280
Но вот какая незадача... редирект не работает.
Вот еще прикол в том, что:
1. если я с первого правила уберу "-m string --string "vasya" --algo bm" - т.е. проверку и буду маркировать все пакеты 80го порта - правило редиректа будет работать.
2. если я во 2-м правиле уберу правило редиректа(поставлю например DROP), а первое оставлю без изменений - то начинает дропать вообще все пакеты, не смотря на match.
Почему же они не работают как надо? Может есть другой вариант?
IPtables переброс определенных пакетов
-
- Заглянувший
- Сообщения: 11
- Зарегистрирован: 15 апр 2009, 13:24
-
- Неотъемлемая часть форума
- Сообщения: 279
- Зарегистрирован: 23 апр 2005, 21:13
- Откуда: minsk
Re: IPtables переброс определенных пакетов
Трансляция адресов работает начиная с первого SYN пакета. В нем никаких данных, в том числе "vasya", не содержится . Так что это не будет работать. Пакет-то перебросится, но коннект порвется.
-
- Неотъемлемая часть форума
- Сообщения: 279
- Зарегистрирован: 23 апр 2005, 21:13
- Откуда: minsk
Re: IPtables переброс определенных пакетов
ИМХО Это надо разруливать ср-вами апача. Есть там какие-то модули с POST / GET фильтрами, чтоб сделали редирект , если придет запрос с vasya.