2010-11-26 3 views
2

У меня есть пакет внутри пакета a.k.a туннелирование. Таким образом, он имеет вид [IP HEADER 1] [IP HEADER 2] [PAYLOAD]. После прочтения первого заголовка (сделанного библиотекой) я получу пакет с [IP HEADER 2] в цепочке INPUT iptables. Я хочу повторно ввести пакет в начало Iptables, то есть в цепочке PREROUTING. Конечная цель - перенаправить пакет на удаленный хост (поэтому я хочу, чтобы пакет находился в цепочке PREROUTING). Я кое-что прочитал о libipq, но я не уверен, что это лучший способ сделать это.Как перезагрузить пакет в Iptables?

+0

nfnetlink_queue заменил ip_queue (с libnetfilter_queue вместо libipq). http://stackoverflow.com/search?q=nfqueue – ephemient 2010-11-30 20:00:25

ответ

1

Возможно, для этого может быть добавлена ​​цель. Я чувствую, что вы должны использовать цель MARK, чтобы отметить этот пакет, а затем используйте iproute2, чтобы настроить маршрутизацию туда, куда вы хотите.

Что-то вроде:

iptables -t mangle -A INPUT -s 192.168.1.2 -j MARK --set-mark 0xAA 

ip rule add fwmark 0xAA table Reroute_Tunnel

Тогда это до вас, чтобы добавить и решить, что Reroute_Tunnel таблица делает

+0

попробует, выглядит многообещающим. – 2010-12-01 00:03:34