У меня две машины в разных подсетях. Скажем, один — 1.1.1.1/8, а другой — 2.2.2.2/8. Эти двое могут общаться через общий маршрутизатор.
Машина 2.2.2.2 имеет внутренний интерфейс в третьей локальной сети 176.16.1.1/24. Приложение прослушивает этот интерфейс. Маршрутизатор не знает о подсети 176.16.x.x.
На 1.1.1.1 хочу иметь возможность отправлять данные на интерфейс 176.16.1.1.
Я хочу, чтобы 1.1.1.1 генерировал IP-пакеты с источником=1.1.1.1 и пунктом назначения=2.2.2.2. Пакеты должны инкапсулировать другой пакет с источником 1.1.1.1 и получателем 172.16.1.1.
Я ожидаю, что машина 2.2.2.2 декапсулирует пакет и доставит приложению внутренний пакет 1.1.1.1->172.16.1.1. Поскольку 1.1.1.1 — это маршрутизируемый IP-адрес, приложение может ответить стандартным неинкапсулированным IP-пакетом.
Любая подсказка о том, как это сделать, будет принята с благодарностью. Спасибо!
Редактировать
На 1.1.1.1 я использовал следующее
IP-туннель добавить режим ipiptun1 ipip локальный 1.1.1.1 удаленный 2.2.2.2
IP-ссылка установлена ipiptun1 вверх
IP-адрес добавить 172.16.0.0/16 dev ipiptun1
Приведенное выше также создает запись в таблице маршрутизации
172.16.0.0/16 dev ipiptun1 ссылка на область ядра proto src 172.16.0.0
И инкапсулированные пакеты действительно поступают на 2.2.2.2, где внутренний пакет имеет адрес 172.16.0.0 -> 172.16.1.1.
Однако, несмотря на то, что 2.2.2.2 имеет интерфейс eth0:103 с адресом 172.16.1.1, данные не поступают в приложение. Вместо этого сообщение о недоступности ICMP возвращается на адрес 1.1.1.1.