LINUX.ORG.RU
ФорумAdmin

Маршрутизация трафика Debian

 


0

1

Есть gre туннель между двумя серверами на Debian 9.
Адрес 1 сервера 10.0.0.1
Адрес 2 сервера 10.0.0.2
На первом сервере есть несколько белых ип адресов, когда трафик приходит на определённый белый ип (22.22.22.22) он должен уходить через туннель на 2 сервер (10.0.0.2).
Ответ со второго сервера (10.0.0.2) должен уходить обратно через 1 сервер локальный ип (10.0.0.1) белый адрес 22.22.22.22 клиенту.
net.ipv4.ip_forward=1 Включен
Вариант через nat не подходит, надо что бы через туннель приходил реальный ип адрес клиента который обращается на 22.22.22.22.
Подскажите пожалуйста реализацию.


Вариант через nat не подходит, надо что бы через туннель приходил реальный ип адрес клиента который обращается на 22.22.22.22.

Почему не подходит? dnat меняет только адрес назначения. Далее если у сервер2 defgw свой, то при получении пакета через тунель маркируем соединение, потом при ответе восстанавливаем марк и используя iproute2 ip rule отправляем обратно в тунель.

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 2)
Ответ на: комментарий от anonymous

iproute2 используется для туннеля, пробовал через него сделать маршрутизацию на туннель но не получилось

gOnt
() автор топика
Ответ на: комментарий от gOnt

То что я описал вполне рабочее. Но тут подумал что я усложняю в части маркировки.
1. сервер1 входящий на ip 22.22.22.22 dnat на 10.0.0.2
2. сервер2 все что от ip 10.0.0.2 оправляем iproute2 в туннель

anc ★★★★★
()

nat не подходит, надо что бы через туннель приходил реальный ип адрес клиента который обращается на 22.22.22.22.

Действие DNAT не изменяет src ip пакета.

voltmod ★★
()
Ответ на: комментарий от gOnt

Через iptables nat к сожалению не подходит, надо через iproute2

Что значит «не подходит»? И что значит «надо»? Мы ходим по кругу.

anc ★★★★★
()

На первом сервере есть несколько белых ип адресов, когда трафик приходит на определённый белый ип (22.22.22.22) он должен уходить через туннель

Если адрес 22.22.22.22 первому серверу не нужен, то поднимите туннель так, чтобы адрес 22.22.22.22 выдавался второму серверу с proxy-arp. Тогда никакой nat и iproute2 не будет нужен, а всё будет работать само.

vodz ★★★★★
()
Ответ на: комментарий от anc

Через iptables nat я сделал, работает, но из за того что nat правила обрабатываются раньше filter таблицы вариант через iptables не подходит.

gOnt
() автор топика
Ответ на: комментарий от vodz

адрес 22.22.22.22 первому серверу предназначен исключительно что бы через него передавать трафик на сервер 2

gOnt
() автор топика
Ответ на: комментарий от gOnt

адрес 22.22.22.22 первому серверу предназначен исключительно что бы через него передавать трафик на сервер 2

Ну то есть ответ положительный и так как я сказал работать будет.

vodz ★★★★★
()
Ответ на: комментарий от gOnt

но из за того что nat правила обрабатываются раньше filter таблицы вариант через iptables не подходит

Я ничего не понял. Причем тут filter ? Поясните пожалуйста.

anc ★★★★★
()
Ответ на: комментарий от anc

iptables (8) man
Существует 4 вида таблиц:
filter (default)
nat
mangle
raw
iptables nat обрабатывает раньше чем filter
Если будут правила для dst ip 22.22.22.22 в таблице filter но в nat таблице dst ip поменяю на 10.0.0.2 то правила в таблице filter для ip 22.22.22.22 не обработаются.

gOnt
() автор топика
Ответ на: комментарий от gOnt

iptables nat обрабатывает раньше чем filter

И раньше и позже. Внимательно курим документацию.
Но вы видимо хотели сказать только про цепочку prerouting. Так вот теперь, зачем вам правила 22.22.22.22 в filter если вы сами знаете что поменяли на 10.0.0.2 ? Второе, фильтровать никто не запрещает и в цепочках выше например в prerouting.
Так что виноват не iptables, а исключительно ваши «ручки» и «голова».

anc ★★★★★
()
Ответ на: комментарий от gOnt

И таки после dnat prerouting происходит routing decision, так что тоже надо знать в какую цепочку в таблице filter попадет.

anc ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.