Рейтинг:0

маршрутизация трафика через туннели IPIP

флаг kr
seb

Хост 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

но не повезло. Любая очевидная ошибка в командах, которые я ввел? -Спасибо

A.B avatar
флаг cl
A.B
остановившись на первой нестыковке в вопросе: на обеих системах B и C установлен один и тот же 10.0.0.0.
seb avatar
флаг kr
seb
в чем проблема? Они на /32. Туннель работает нормально, они могут пинговать друг друга через туннель.
Рейтинг:0
флаг kr
seb

Взломал.

Хост Б

sysctl net.ipv4.ip_forward=1
sysctl net.ipv4.conf.all.rp_filter=0
sysctl net.ipv4.conf.tunnel0.forwarding=1

ip-туннель добавить режим туннеля0 ipip удаленный 3.3.3.3 локальный 2.2.2.2
IP-адрес добавить 10.0.1.1/32 dev тоннель0
IP-ссылка установлена ​​​​туннелем0 вверх
IP-маршрут добавить 10.0.0.1/32 dev тоннель0

iptables -A ВПЕРЕД -i eth0 -o туннель0 -j ПРИНЯТЬ
iptables -A ВПЕРЕД -i туннель0 -o eth0 -j ПРИНЯТЬ
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 ПРИНЯТЬ

Хост С

sysctl net.ipv4.ip_forward=1
sysctl net.ipv4.conf.all.rp_filter=0
sysctl net.ipv4.conf.tunnel0.forwarding=1

ip-туннель добавить режим туннеля0 ipip локальный 3.3.3.3 удаленный 2.2.2.2
IP-адрес добавить 10.0.0.1/32 dev тоннель0
IP-ссылка установлена ​​​​туннелем0 вверх
IP-маршрут добавить 10.0.1.1/32 dev тоннеля0

ip правило добавить из 10.0.0.1 поиск 11
ip route добавить таблицу 11 по умолчанию через 10.0.0.1 devтуннель0

Теперь весь трафик, отправленный из A в B через порт 6300, прозрачно перенаправляется в C. C видит трафик, поступающий из A, и отправляет трафик обратно в B.

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

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