172 похожих чатов

Есть 2 интерфейса на хосте, на них должны быть 2

одинаковые подсети
я добавляю подсеть на интерфейс eth1
ip addr add 10.42.0.2/24 dev eth1
хост пингуется.
теперь добавляю на eth0 адрес
ip addr add 10.42.0.1/24 dev eth0
хост перестаёт пинговаться, в чем может быть проблема?

23 ответов

9 просмотров

потому что нужно задвать дополнительные правила маршрутизации.

»есть 2 интерфейса на хосте, на них должны быть 2 одинаковые подсети вот в этом и проблема

Sergey- Автор вопроса
Sergey
какие? зачем?

а для этого читайте LARTC. если на этих интерфейсах есть ещё и нат, то нужно ещё почитать про conntrack zones и connmark навскидку ip route add 10.42.0.0/24 dev eth0 table 10 ip route add 10.42.0.0/24 dev eth1 table 11 ip rule add from 10.42.0.0/24 oif eth0 table 10 pref 1000 ip rule add from 10.42.0.0/24 oif eth1 table 11 pref 1001

когда ты добавляешь адрес на второй интерфейс, то маршрут до подсети 10.42.0.0/24 в таблице main переписывается и начинает указывать на второй интерфейс.

Sergey
да, и как её решить не меняя мою задачу?

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

Sergey- Автор вопроса
Anton Danilov
а для этого читайте LARTC. если на этих интерфейс...

вот человек кажется предложил решение

Sergey- Автор вопроса
Anton Danilov
а для этого читайте LARTC. если на этих интерфейс...

хост все равно перестаёт пинговаться

Sergey
хост все равно перестаёт пинговаться

перезапусти после этого ping, и потом запусти его с указанием интерфейса, куда слать пинги.

Sergey- Автор вопроса
Anton Danilov
перезапусти после этого ping, и потом запусти его ...

IPTABLES=/sbin/iptables function enable () { # enable ip forwarding in the kernel echo 'Enabling Kernel IP forwarding...' /bin/echo 1 > /proc/sys/net/ipv4/ip_forward # flush rules and delete chains echo 'Flushing rules and deleting existing chains...' $IPTABLES -F $IPTABLES -X # enable masquerading to allow LAN internet access echo 'Enabling IP Masquerading and other rules...' $IPTABLES -t nat -A POSTROUTING -o $LANIF -j MASQUERADE $IPTABLES -A FORWARD -i $LANIF -o $WANIF -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A FORWARD -i $WANIF -o $LANIF -j ACCEPT ip route add default via 10.42.0.2 table $NAMETABLE ip rule add iif $LANIF table $NAMETABLE echo 'Done.' } NAMETABLE='eth0_to_eth1' WANIF='eth1' LANIF='eth0' enable вот так работает

Sergey- Автор вопроса
Alexey
namespace гораздо проще

и как в нём nat сделать?

Sergey- Автор вопроса
Alexey
namespace гораздо проще

и как мне это организовать?

Sergey
и как мне это организовать?

создаешь неймспейс, добавляешь туда интерфейс, далее через ip netns exec прописываешь дефолт, и настраиваешь nat в iptables

Sergey- Автор вопроса
Sergey
2 неймспейса для двух интерфейсов?

либо так, либо оставляешь один как есть, а другой уносишь в неймспейс

Sergey- Автор вопроса
Volodymyr Komendant
создаешь неймспейс, добавляешь туда интерфейс, дал...

все сделал кроме ната, как его настаривать?

Sergey- Автор вопроса
Sergey
IPTABLES=/sbin/iptables function enable () { ...

точно также как здесь?

Sergey- Автор вопроса
Alexander Biryukov
поместить eth в разные netns

а дальше как соединить 2 этих netns?

Проблема в том, что в таблице маршрутизации два маршрута на одну сеть

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта