LINUX.ORG.RU
решено ФорумAdmin

Маршрутизация на 2 внешних ip и iproute2

 , ,


0

2

Помогите разобраться с маршрутизацией. Есть 2 канала от одного провайдера, соответственно одна подсеть но два разных ip.

  • eth0 с внешнем адресом xxx.xxx.xxx.155
  • eth1 с внешнем адресом xxx.xxx.xxx.156
  • eth2 с локалкой 192.168.0.0

Нужно выпускать всех через первый адрес (.155), а один из компов с адресом 192.168.0.28 через другой адрес (.156).

Начитался Linux Advanced Routing & Traffic Control и сделал следующее:

# ip rule
0:      from all lookup local
32763:  from 192.168.0.28 lookup table2
32764:  from xxx.xxx.xxx.156 lookup table2
32766:  from all lookup main 
32767:  from all lookup default
# ip route list table table2
default via xxx.xxx.xxx.129 dev eth1
xxx.xxx.xxx.128/27 dev eth1  scope link  src xxx.xxx.xxx.156 

Где xxx.xxx.xxx.129 - шлюз провайдера, а xxx.xxx.xxx.128/27 - подсеть.

Таблица main выглядит так:

default via xxx.xxx.xxx.129 dev eth0 
192.168.0.0/24 dev eth2  proto kernel  scope link  src 192.168.0.1
xxx.xxx.xxx.128/27 dev eth0  proto kernel  scope link  src xxx.xxx.xxx.155 
xxx.xxx.xxx.128/27 dev eth1  proto kernel  scope link  src xxx.xxx.xxx.156 

Все компы ходят через таблицу main и выходят в мир без проблем. Но долбаный 192.168.0.28 не выходит в интернеты. Куда копать?

★★

У вас одна подсеть, один шлюз, один пров, зачем даже по разным eth разносить? Повесьте алиасом второй адрес на eth0 и iptables SNAT. iproute2 тут нафиг не уперся.

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)

Маршрутизация, это то, куда пойдёт пакет. А то, с какого адреса пакет будет после маршрутизатора — это SNAT.

У вас оба маршрута через одного провайдера, через один шлюз, вам вобще не понятно зачем понадобились две сетёвки, хватило бы одной и правильный SNAT.

Но, раз уж у вас такая конфигурация, запускайте tcpdump на eth1 и смотрите, уходят туда пакеты от xxx.xxx.xxx.156, приходят ли ответные. Может у вас что-то с настройками iptables, может rp_filter, может ваш Линукс отвечает на arp-запросы xxx.xxx.xxx.156 от провайдера с интерфейса eth0...

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

Провайдер кинул 2 провода. На одном один адрес, на втором другой.

Да и вообще стало интересно почему не работает.

Причем, когда добавляю

#ip rule add from 192.168.0.28 table table2

Сразу пропадает выход во вне.

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

Ну кинул и кинул, используйте один. Вы хоть понимаете что две одинаковые сети прописали на двух разных интерфейсах?

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

Ок, убедили) Убрал eth1 и прописал eth0:1 со следующими параметрами:

allow-hotplug eth0:1
iface eth0:1 inet static
        address xxx.xxx.xxx.156
        netmask 255.255.255.224
        network xxx.xxx.xxx.128
        broadcast xxx.xxx.xxx.159

Как теперь сделать правильно SNAT? У меня пока прописано:

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source xxx.xxx.xxx.156
static ★★ ()
Ответ на: комментарий от static

Наверное как-то так

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.28 -j SNAT --to-source xxx.xxx.xxx.156
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source xxx.xxx.xxx.155

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

Не получается, возможно у провайдера прописаны адреса на конкретные порты. Но это я думаю можно с ними решить.

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

Бывает такое. Иногда даже через личный кабинет можно маки поправить, даже если и нет, то звонком уж точно решается. Вообще не понятен подход, два ip - два провода, а если мне 16 понадобиться, чего 16 притянут? :)

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

Да я и сам не понял зачем они так сделали. Но интересно, чисто теоретически, неужели нельзя такое решить маршрутизацией?

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

Для варианта одной подсети на разных интерфейсах, моего скила не хватает. Тут есть уважаемый vel, он знаток подобного шаманства, может чего и подскажет.

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

Да я думаю не к чему, спросил чисто ради интереса. Завтра позвоню провайдеру, попрошу что-бы прописали оба адреса на один порт. Так будет проще и удобнее.

Благодарю за помощь)

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

Это было бы самым разумным решением. Иначе нужно решать проблему с arp-ом и rp-filter.

При дефолтных настройках arp-запросы идут через первый подходящий интерфейс.

Исходный вариант удобен, если eth1 отдать в контейнер.

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

Сегодня созвонился с провайдером, они подправили и все заработало)

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