Назад | Перейти на главную страницу

RHEL Routing с 3-мя нитями

Я пытаюсь заставить мою маршрутизацию работать на моем RHEL 7 с 3-мя сетями и 3-мя подсетями.

У меня есть подписки

DEVICE=eth0
BOOTPROTO=sttic
ONBOOT=yes
TYPE=Ethernet
USERCTL=yes
PEERDNS=yes
IPADDR=10.241.78.5
NETMASK=255.255.254.0
IPV6INIT=no


DEVICE=eth1
BOOTPROTO=static
IPADDR=10.241.74.5
NETMASK=255.255.254.0
ONBOOT=yes
TYPE=Ethernet
USERCTL=yes
PEERDNS=yes
IPV6INIT=no

DEVICE=eth2
BOOTPROTO=static
IPADDR=10.241.76.5
NETMASK=255.255.254.0
ONBOOT=yes
TYPE=Ethernet
USERCTL=yes
PEERDNS=yes
IPV6INIT=no


ip route show
10.241.74.0/23 dev eth1  proto kernel  scope link  src 10.241.74.5
10.241.78.0/23 dev eth0  proto kernel  scope link  src 10.241.78.5
10.241.76.0/23 dev eth2  proto kernel  scope link  src 10.241.76.5
default via 10.241.78.1 dev eth0

У меня система 10.241.74.7 за eth1 и 10.241.76.7 за eth2

У меня также есть установка sysctl.conf со следующим

# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1

# Disable netfilter on bridges.
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

Проблема, с которой я столкнулся, заключается в том, что система, стоящая за eth1, не может достичь eth2 и наоборот.

также, когда я инициирую пинг из системы .5

ping 10.241.74.7 -I eth2
PING 10.241.74.7 (10.241.74.7) from 10.241.76.5 eth2: 56(84) bytes of data.
From 10.241.76.5 icmp_seq=2 Destination Host Unreachable
From 10.241.76.5 icmp_seq=3 Destination Host Unreachable
From 10.241.76.5 icmp_seq=4 Destination Host Unreachable


ping 10.241.76.7 -I eth1
PING 10.241.76.7 (10.241.76.7) from 10.241.74.5 eth1: 56(84) bytes of data.
From 10.241.74.5 icmp_seq=2 Destination Host Unreachable
From 10.241.74.5 icmp_seq=3 Destination Host Unreachable
From 10.241.74.5 icmp_seq=4 Destination Host Unreachable

Однако, когда я пингую обе сети с eth0, он работает:

ping 10.241.76.7 -I eth0
PING 10.241.76.7 (10.241.76.7) from 10.241.78.5 eth0: 56(84) bytes of data.
64 bytes from 10.241.76.7: icmp_seq=1 ttl=64 time=0.450 ms
64 bytes from 10.241.76.7: icmp_seq=2 ttl=64 time=0.483 ms

ping 10.241.74.7 -I eth0
PING 10.241.74.7 (10.241.74.7) from 10.241.78.5 eth0: 56(84) bytes of data.
64 bytes from 10.241.74.7: icmp_seq=1 ttl=64 time=0.461 ms
64 bytes from 10.241.74.7: icmp_seq=2 ttl=64 time=0.399 ms

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

netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.241.74.0     0.0.0.0         255.255.254.0   U         0 0          0 eth1
10.241.78.0     0.0.0.0         255.255.254.0   U         0 0          0 eth0
10.241.76.0     0.0.0.0         255.255.254.0   U         0 0          0 eth2
0.0.0.0         10.241.78.1     0.0.0.0         UG        0 0          0 eth0

Кто-нибудь может помочь?

Чтобы Linux пересылал пакеты между интерфейсами, вам необходимо установить net.ipv4.ip_forward=1 в /etc/sysctl.conf и либо перезагрузите систему, чтобы изменения вступили в силу, либо запустите sysctl -p

Что касается результатов пинга, если я правильно помню, указав -I ethX в команде ping вы заставляете пакеты фактически уходить с указанного интерфейса (независимо от конфигурации подсети и маршрутизации на этом интерфейсе).

Что вам нужно сделать, так это попробовать выполнить ping с исходным адресом, который вы хотите проверить (например, вместо ping -I eth0 10.241.74.7 пытаться ping -I 10.241.78.5 10.241.74.7).

Таким образом, пакеты будут уходить с исходным адресом 10.241.78.5 но из правильного интерфейса, где 10.241.78.0/23 подсеть фактически настроена.