LINUX.ORG.RU
ФорумAdmin

Маршрутизация в Centos

 ,


0

2

Добрый день. Центос 7 с двумя сетевухами и выключенной маршрутизацией (ip_forward=0). На одной сетевухе 192.168.1.64/24, на другой 192.168.10.40/24. Обе сетки терминируются на одном маршрутизаторе. На интерфейсах маршрутизатора 192.168.1.1/24 и 192.168.10.1/24 Ограничений на прохождение трафика из одной сетки в другую на маршрутизаторе нет. Маршрут по умолчанию в этом центосе - 192.168.10.1
Таблица маршрутизации

default via 192.168.10.1 dev eth0 proto static metric 100
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.64 metric 101
192.168.10.0/24 dev eth0 proto kernel scope link src 192.168.10.40 metric 100

Теперь ситуация: я пингую из сети 192.168.1.0/24, с адреса 192.168.1.228 адрес 192.168.10.40.
До Центоса пакеты долетают, ответа нет
tcpdump -n -i any ip src 192.168.1.228 and ip dst 192.168.10.40

19:34:17.394181 IP 192.168.1.228 > 192.168.10.40: ICMP echo request, id 1, seq 949, length 40
19:34:22.399416 IP 192.168.1.228 > 192.168.10.40: ICMP echo request, id 1, seq 950, length 40
19:34:27.397623 IP 192.168.1.228 > 192.168.10.40: ICMP echo request, id 1, seq 951, length 40

Почему не отвечает Центос???? Винда в такой конфигурации отвечает.

Почему не отвечает Центос????

ip_forward=0

Винда в такой конфигурации отвечает.

Дура потому что.

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

Почему не срабатывает маршрут по умолчанию через eth0? Или центос видит что лучший маршрут на сеть 192.168.1.0/24 за eth1, потом видит что переложить пакет на eth1 не может т.к. выключен форвардинг и от безысходности дропает пакет?
Т.е. сначала выбор лучшего маршрута, потом обнаружение невозможности им следовать и дроп?

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

ip_forward=0

И что? Он должен в ту же локалку ответить, при чем тут форвардинг??

Тс, ты покажи

tcpdump -n -i any host 192.168.1.228

И сбрось файрвол на центоси. А так же покажи вывод


ip ru

Bers666 ★★★★★
()

я пингую из сети 192.168.1.0/24, с адреса 192.168.1.228 адрес 192.168.10.40.

Аа, все, конечно он отвечает не в тот интерфейс. Включи маскарадинг для полсети 1.0/228

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

Включи маскарадинг для полсети 1.0/228

От включенного форвардинга накладных расходов меньше.

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

Или центос видит что лучший маршрут на сеть 192.168.1.0/24 за eth1, потом видит что переложить пакет на eth1 не может т.к. выключен форвардинг и от безысходности дропает пакет?

В общем-то это логичное поведение. Таблица маршрутизации общая (но, кстати, можно и разные сделать, и по src ip таблицу выбирать), а форвардить нельзя.

AS ★★★★★
()

Привет. тут простая проблема. Допустим, что Пинг прилетает на первый сетевой интерфейс Центос, центос получает пакет, готовит ответ и замечает, что есть более короткий маршрут по второму сетевому интерфейсу и отправляет ответ. А твой пингер (тот кто пингует) видит, что ему прилетел пакет с левого адреса и делает дроп.

Есть простое решение - используй ip route table, ip rule. Создай на каждый сетевой интерфейс свою таблицу маршрутизации. И создай правило - если прилетел на первый интерфейс, то ответ будет с первого интерфейса и аналогочно по второму интерфейсу.

Более подробно здесь

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

Привет. Не канает по двум причинам. Во-первых, форвардинг выключен, т.е. переложить пакет на другой интерфейс центос не может. Во-вторых, на пингере ответных пакетов нет. Или я где-то не прав?

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

В общем-то это логичное поведение. Таблица маршрутизации общая, а форвардить нельзя.

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

Включил маршрутизацию (ip_forward=1). Поведение не изменилось. Пакеты валятся как в болото.

tcpdump -n -i any ip host 192.168.1.228

10:30:18.452269 IP 192.168.1.228 > 192.168.10.40: ICMP echo request, id 1, seq 11701, length 40
10:30:23.452786 IP 192.168.1.228 > 192.168.10.40: ICMP echo request, id 1, seq 11702, length 40
10:30:28.452822 IP 192.168.1.228 > 192.168.10.40: ICMP echo request, id 1, seq 11703, length 40

Почему он не отвечает с другого интерфейса??? Файер, iptables выключены.

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

Правило маршрутизации такого, что пакет отправляется через тот маршрут, через который доступен адресат.

Т.е. если есть коннектед сеть, то пакет пойдёт не через маршрут по умолчанию, а с интерфейса который смотрит в сеть адресата.

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

Т.е. мои предположения о логике работы центоса правильные?

Linux только. По идее да.

tcpdump -n -i any ip host 192.168.1.228
Почему он не отвечает с другого интерфейса??? Файер, iptables выключены.

А вот это пока не знаю. Что показывает
grep . /proc/sys/net/ipv4/conf/*/rp_filter

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

Заработало. Пакеты залетали. Спасибо AS за подсказку про rp_filter
Итоговая конфигурация

net.ipv4.ip_forward = 0
net.ipv4.conf.eth0.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0

Пакеты прилетают на eth0

tcpdump -n -i eth0 ip src 192.168.1.228 and ip dst 192.168.10.40
IP 192.168.1.228 > 192.168.10.40: ICMP echo request, id 1, seq 19028, length 40
IP 192.168.1.228 > 192.168.10.40: ICMP echo request, id 1, seq 19029, length 40
IP 192.168.1.228 > 192.168.10.40: ICMP echo request, id 1, seq 19030, length 40


улетают с eth1

tcpdump -n -i eth1 ip src 192.168.10.40 and ip dst 192.168.1.228
IP 192.168.10.40 > 192.168.1.228: ICMP echo reply, id 1, seq 19154, length 40
IP 192.168.10.40 > 192.168.1.228: ICMP echo reply, id 1, seq 19155, length 40
IP 192.168.10.40 > 192.168.1.228: ICMP echo reply, id 1, seq 19156, length 40

Остался вопросик, нафига надо выключать net.ipv4.conf.all.rp_filter = 0, почему не хватает net.ipv4.conf.eth0.rp_filter = 0 ? Может есть где чего почитать по этому поводу?

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