Рейтинг:0

Linux — IP-туннель

флаг ru

У меня две машины в разных подсетях. Скажем, один — 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.

Tobias K. avatar
флаг id
Несколько мыслей: 1) 172.16.0.0 сам по себе является адресом идентификатора сети и, вероятно, не должен использоваться в качестве адреса клиента. 2) Если вы используете TCP, я не думаю, что отправка одного направления через туннель и ожидание ответа через другой (общедоступный) интерфейс будут работать из-за характера, ориентированного на соединение. 3) Я бы просто использовал переадресацию порта SSH, если это возможно, из 1.1.1.1 `ssh 2.2.2.2 -L 127.0.0.1:1234:176.16.1.1:8000` (используя 8000 в качестве примера для порта приложения), а затем отправьте ваш обычные пакеты на 127.0.0.1:1234.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.