Назад | Перейти на главную страницу

iptables перенаправляет IP-адрес

У меня есть приложение (веселье) на сервере (10.2.2.200), которое на порт 6661 получает поток HL7 от сервера egate с порта 10.0.1.234 56789. Для каждого сообщения, которое он получает / обрабатывает, он генерирует сообщение HL7 ACK на порт 10.0.1.234 56789. Сервер egate (который я не контролирую) не получает сообщения ACK, поскольку он ожидает их получить на порту 10.1.1.111 6661.

Можно ли настроить iptables (на моем сервере веселья - это 10.0.2.200) для редактирования пакетов ACK, сгенерированных весельем, которые изначально должны были идти на порт 10.0.1.234 56789 и вместо этого отправлять их на порт 10.1.1.111 6661 ?

Я читаю о NAT / iptables ( http://www.karlrupp.net/en/computer/nat_tutorial ), но я не уверен, возможно ли это на данный момент, и любая помощь будет очень благодарна.

Резюме поддельных IP-адресов:

Более или менее вы хотите воспользоваться функцией изменения пакетов в iptables. Это включает в себя изменение пакетов в таблицах предварительной и последующей маршрутизации. При использовании этой функции вам также необходимо загрузить специальный модуль. Я никоим образом не профессионал в iptables, но уже сталкивался с этим в прошлом, когда был намного моложе. Вот ссылка на документ, описывающий процесс -

В Google есть дополнительная информация об искажении пакетов. Извините за то, что не был более информативным. Я надеюсь, что это поможет завоевать мир.

www.linuxsecurity.com.br/info/fw/PacketManglingwithiptables.doc

Вы можете использовать iptables с --tcp-flags аргумент:

--tcp-flags [!] подбор маски

Соответствует указанным флагам TCP. Первый аргумент - это флаги, которые мы должны проверить, записанные в виде списка, разделенного запятыми, а второй аргумент - это список флагов, разделенных запятыми, которые необходимо установить. Флаги: SYN ACK FIN RST URG PSH ALL NONE. Следовательно, команда

  iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN

будет соответствовать только пакетам с установленным флагом SYN, а флаги ACK, FIN и RST не установлены.

У меня нет удобного Linux-бокса, чтобы набрать нужное заклинание, но я бы подумал, что это будет примерно так:

iptables -t nat -A PREROUTING -p tcp --tcp-flags ACK ACK --dest 10.0.1.234 --dport 56789 -j DNAT --to:destination 10.1.1.111:6661

Я думаю, что это сработает (хотя это не просто фильтрация только ACK, и я все еще тестирую.)

iptables -t nat -A OUTPUT -p tcp -d 10.0.1.234 --dport 10000:65535 -j DNAT --to-destination 10.1.1.111:6661