LINUX.ORG.RU
ФорумAdmin

[несколько провайдеров][iproute2]

 


0

0

Настроена балансировка по типу

default
        nexthop via ip1  dev ethN1 weight W1
        nexthop via ip2  dev ethN2 weight W2
...

Есть правила(ip rule ...), по которым пакеты уходят по тому же маршруту.

Прблема: нужно пробрасывать порт на внутреннюю машину с серым ip - пакеты от нее при DNAT походу правил не слушаются и уходят на дефолтный шлюз, поэтому достучаться до порта можно только с определенной долей вероятности. Как это решается? Редиректить порт например через xinet не подходит, нужно видеть реальные ip.

★★★★★

>Прблема: нужно пробрасывать порт на внутреннюю машину с серым ip - пакеты от нее при DNAT походу правил не слушаются и уходят на дефолтный шлюз, поэтому достучаться до порта можно только с определенной долей вероятности.

Чего-чего? Значит, ты для внутренний сети статический маршрут не прописал? Эпи^WГениально.

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

>Значит, ты для внутренний сети статический маршрут не прописал? Эпи^WГениально.

Т.е.? Для внутренней сети как раз и нужна балансировка.
А на порт ломиться могут по любому из внешних айпи.
Можно конечно на dst-машине тоже назначить несколько ip и таблиц маршрутизации, но как-то это геморрно и не всегда возможно.

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

Статический маршрут есть маршрут, определяющий взаимодействие сервера и локальной сети, безотносительно к интернетам, например

192.168.25.0/24 dev eth3  proto kernel  scope link  src 192.168.25.1
Надеюсь, это сделано?

Что касается маршрутизации ответа, то отвечаю в тыща сотый раз:

# Маркируем входящие от второго прова 
iptables -t mangle -I FORWARD -i eth1 -m conntrack --ctstate NEW -j CONNMARK --set-mark 1 
# Для исходящих копируем маркировку соединения в маркировку пакетов 
iptables -t mangle -I FORWARD 2 -j CONNMARK --restore-mark 
# Дефолтный шлюз для соединений от второго прова 
ip route add default via <адрес_шлюз_второго_прова> dev eth1 table 101 
# Ну и правило для этой таблицы 
ip rule add fwmark 1 table 101 
# Сброс кэша маршрутов 
ip route flush cache 

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

>192.168.25.0/24 dev eth3 proto kernel scope link src 192.168.25.1

Надеюсь, это сделано?


А как бы без этого?

Что касается маршрутизации ответа, то отвечаю в тыща сотый раз:


За это спасибо, попробую.

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

Кстати да :) Забыл:

# Маркируем входящие от первого прова  
iptables -t mangle -I FORWARD -i eth0 -m conntrack --ctstate NEW -j CONNMARK --set-mark 2  
# Дефолтный шлюз для соединений от первого прова  
ip route add default via <адрес_шлюз_первого_прова> dev eth0 table 102  
# Ну и правило для этой таблицы  
ip rule add fwmark 2 table 102  
# Сброс кэша маршрутов  
ip route flush cache  
Теперь вроде все.

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

Да это-то понятно, я для всех провов пометил и зарулил.
Оно кажется маркировку не восстанавливало, потом подробнее посмотрю.
А оно точно должно быть в FORWARD?

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

>А оно точно должно быть в FORWARD?

Точно. Через него весь транзитный трафик идет, а тебе ведь именно транзитный разбрасывать надо.

Оно кажется маркировку не восстанавливало, потом подробнее посмотрю.

Правило с CONNMARK --restore-mark должно быть после обоих правил маркировки. При таком раскладе все должно работать.

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

>>А оно точно должно быть в FORWARD?

Точно. Через него весь транзитный трафик идет, а тебе ведь именно транзитный разбрасывать надо.

Оно кажется маркировку не восстанавливало, потом подробнее посмотрю.

Правило с CONNMARK --restore-mark должно быть после обоих правил маркировки. При таком раскладе все должно работать.

А я вот не уверен. Решение о роуте принимается до прохождения FORWARD.

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