Хост A --internet-- Хост B --internet ipip тоннель-- Хост C
Хост А: 1.1.1.1
Хост Б: 2.2.2.2
Хост C: 3.3.3.3
Убунту 18.04.
Конфигурация IPIP-туннеля хоста B
ip-туннель добавить режим туннеля0 ipip удаленный 3.3.3.3 локальный 2.2.2.2
IP-адрес добавить 10.0.0.0/32 dev тоннеля0
IP-ссылка установлена туннелем0 вверх
IP-маршрут добавить 10.0.0.1/32 dev тоннель0
Конфигурация IPIP-туннеля Host C
ip-туннель добавить режим туннеля 0 ipip удаленный 2.2.2.2 локальный 3.3.3.3
IP-адрес добавить 10.0.0.0/32 dev тоннеля0
IP-ссылка установлена туннелем0 вверх
IP-маршрут добавить 10.0.1.1/32 dev тоннеля0
Также
sysctl net.ipv4.ip_forward=1
Туннель работает, оба хоста могут пинговать локальный IP-адрес удаленного конца (10.x).
Я пытаюсь перенаправить трафик с хоста A на хост B через порт 6300 на хост C.
Мы не можем проложить маршрут от хоста C к 1.1.1.1 через хост B, потому что IP-адрес хоста A может измениться на что угодно.
Мы не можем указать маршрут по умолчанию от хоста C к хосту B, потому что не весь трафик поступает с хоста B.
По сути, я хочу, чтобы хост C просто отвечал на любой входящий трафик через интерфейс, через который пришел трафик.
Трафик с 1.1.1.1 шел через тоннель0? Отправьте ответ на туннель0.
Трафик с 1.1.1.1 шел через ххх0? Отправить ответ на xxx0.
Трафик от x.y.z.w проходил через интерфейс xxx0? Отправить ответ на xxx0.
НАТ запрещен. Фильтрация выполняется на узле C, поэтому узел C должен знать IP-адрес узла A.
На хосте B я пробовал
iptables -A ВПЕРЕД -i eth0 -o туннель0 -j ПРИНЯТЬ
iptables -A ВПЕРЕД -i туннель0 -o eth0 -j ПРИНЯТЬ
iptables -t nat -A PREROUTING -p tcp --dport 6300 --jump DNAT --to-destination 10.0.0.1
но это ничего не дало. Трафик с 1.1.1.1 не проходит через тоннель0.
Я даже не знаю, что я должен исследовать. Пересылка? Маршрутизация? IP-таблицы? Маркировка? Любые указатели на то, над чем я должен работать, будут очень признательны!
РЕДАКТИРОВАТЬ
Добавил эти команды на Host B
sysctl net.ipv4.conf.eth0.forwarding=1
sysctl net.ipv4.conf.tunnel0.forwarding=1
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 6300 -j DNAT --назначение 10.0.0.1:6300
iptables -A FORWARD -p tcp -d 10.0.0.1 --dport 6300 -m состояние --state НОВЫЙ,УСТАНОВЛЕННЫЙ,СВЯЗАННЫЙ -j ПРИНЯТЬ
и теперь трафик от Хоста А идет в туннель к Хосту С! Отличный прогресс!
Но обратного трафика нет.
Я попытался добавить это в Host C, чтобы получать пакеты маршрутов.
IP-правило добавить таблицу 11 из 10.0.0.1/32 devтуннеля0
ip route добавить таблицу 11 по умолчанию через 10.0.0.1 devтуннель0
но не повезло. Любая очевидная ошибка в командах, которые я ввел? -Спасибо