LINUX.ORG.RU
ФорумAdmin

Глючит сеть после добавления второго сетевого интерфейса

 , ,


0

1

содержимое файла ssh://vladimir:@54.66.78.93:22/etc/network/interfaces:

auto eth0
iface etho inet static
        address 54.66.78.93
        network 54.66.78.64
        netmask 255.255.255.192
        broadcast 54.66.78.127
        gateway 54.66.78.65
        dns-nameservers 77.88.8.8
        dns-search ru

auto eth1
iface eth1 inet static
        address 54.66.78.94
        network 54.66.78.64
        netmask 255.255.255.192
        broadcast 54.66.78.127
        gateway 54.66.78.65
        dns-nameservers 77.88.8.8
        dns-search ru

Пока не поднят eth1, с сетью все в порядке.
Но как только добавляю второй интерфейс, сеть начинает лагать, появляются потери пакетов при пинге любого адреса.
Подскажите пожалуйста, в чем ошибка файла.

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

axelroot
()

Без применения специальных правил шлюз по умолчанию должен быть один. То есть надо убрать gateway для eth1. А как и для чего использовать второй интерфейс - это уже отдельно.

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

То есть, при таком конфиге (ниже) все в порядке будет?

auto eth0
iface etho inet static
address 54.66.78.93
network 54.66.78.64
netmask 255.255.255.192
broadcast 54.66.78.127
gateway 54.66.78.65
dns-nameservers 77.88.8.8
dns-search ru

auto eth1
iface eth1 inet static
address 54.66.78.94
network 54.66.78.64
netmask 255.255.255.192
broadcast 54.66.78.127
gateway 54.66.78.65 (удалить)
dns-nameservers 77.88.8.8
dns-search ru

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

gateway 54.66.78.65 (удалить)

шлюз может быть у каждого физического интерфейса,

просто нужно разруливать маршруты, если пакет влетает в eth1 он должен и вылететь из него, а если еще и порты внутрь пробрасываешь, то тут пакетики маркировать надо

http://habrahabr.ru/post/55132/

Одновременное использование нескольких внешних каналов - http://xgu.ru/wiki/Маршрут_по_умолчанию

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

Я не знаю, что вы подразумеваете под «всё». Даже без default gateway два интерфейса в одну подсеть - это неправильно. Возможно подскажут пути решения, если будет известна задача в целом.

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

http://xgu.ru/wiki/Маршрут_по_умолчанию

Одновременное использование нескольких внешних каналов


 Задача
Есть два канала связи с Интернетом, через двух независимых провайдеров. Нужно сделать так, чтобы если происходит обращение через интерфейс 1, ответы должны уходить тоже через интерфейс 1 и с обратным адресом интерфейса 1.

 Решение
Настроить и использовать policy routing.
Например для шлюзов GW1 и GW2, которые описываются в /etc/network/gateways:
. /etc/network/gateways
ip rule add from $IP1 lookup 2
ip rule add from $IP2 lookup 3
ip route add default via $GW1 table 2
ip route add default via $GW2 table 3
ip route add default via $DEFAULTGW
Note-icon.gif
При использовании дополнительных таблиц маршрутизации необходимо либо отключить reverse path filter
 echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter 
либо перевести его в менее строгий режим
 echo 2 > /proc/sys/net/ipv4/conf/all/rp_filter 
mamahtehok
Note-icon.gif
Такая схема маршрутизации не будет правильно работать с iptables DNAT. Другими словами, если с помощью iptables/netfilter пробрасывать обращения на какие-то порты внутрь сети, принцип «ответы уходят по тому каналу, по которому приходят запросы» работать не будет.
Как ни странно, проблема с iproute2 и DNAT в некоторых случаях может быть решена (SOLVED) простой парой команд:
iptables -t mangle -A PREROUTING -p tcp --dport 80 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -p tcp --sport 80 -j MARK --set-mark 1
Таким образом мы можем вручную (через ip rule fwmark 1) указать необходимую таблицу. 

axelroot
()

Может проще собрать интерфейсы в группу (LACP) - всё равно же в одну сеть смотрят. Если физика в разные коммутаторы посмотреть в сторону mcLACP.

ECMP это таки немного про другое.

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

Даже без default gateway два интерфейса в одну подсеть - это неправильно

О, опять эти суеверия на моём лоре
Я по молодости на два интерфейса даже одинаковый IP конфижил.
В продакшене, Карл.

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

Давай вместе подумаем, как ему поможет исключение неверных предпосылок и суеверий из набора версий
Никаких идей?

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

Ну давай.

Сколько времени и усилий понадобится ТС, чтобы понять, когда и как можно и нужно использовать два интерфейса с адресами в одной подсети? При этом далеко не факт, что задача, перед ним стоящая, требует этого. Так что исключая этот путь, я надеюсь сократить время решения.

Не стоит привлекать СТО, если можно обойтись классической механикой.

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

Начнём сначала.
Покажи вывод

ip a
ip r
ip r g 8.8.8.8
ip ru
iptables-save

до и после

zolden ★★★★★
()

Чел, gateway - это маршрут по умолчанию. Для второго тебе нужно сделать так:

auto eth1
iface eth1 inet static
        address 54.66.78.94
        network 54.66.78.64
        netmask 255.255.255.192
        broadcast 54.66.78.127
        #gateway 54.66.78.65
up route add -net 54.66.78.64 netmask 255.255.255.192 gw 54.66.78.65
        dns-nameservers 77.88.8.8
        dns-search ru

Только, это было бы верно для разных подсетей, два интерфейса в одной подсети, как у тебя, делать не следует. Используй alias лучше - eht0:1 и вперед, либо не указывай gw у второго интерфейса.

И будет тебе счастье.

nixit ★★
()
Последнее исправление: nixit (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.