Me estoy volviendo loco porque llevo casi una semana intentando resolver esto.
Guión:Un servidor con dos dispositivos de red diferentes. Cada dispositivo está conectado a una subred de empresa diferente.
eth0
está enchufado x.y.5.184/29
, mientras que eth1
está enchufado x.y.88.224/27
. Quiero que el servidor escucheambosdispositivos.
La IP del servidor .5.184/29
será x.y.5.186
, la IP del servidor .88.224/27
será x.y.88.253
. Me gustaría ejecutar dos máquinas virtuales diferentes con Apache, por lo que el servidor, con natpf en la máquina virtual respectiva, escuchará x.y.5.186:p1
la VM1 y x.y.88.253:p2
la VM2.
x
y y
tienen que estar ocultos por cuestiones de privacidad, pero se les dan valores.
Así que aquí está el problema: si aparezco eth1
, el servidor no responde eth0
y no sé realmente por qué.
Aquí hay algunos resultadosconambos dispositivos arriba:
[user@server ~]$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet x.y.5.186 netmask 255.255.255.248 broadcast x.y.5.191
ether <MAC> txqueuelen 1000 (Ethernet)
RX packets 77141 bytes 50779367 (48.4 MiB)
RX errors 27 dropped 0 overruns 26 frame 1
TX packets 83841 bytes 63781133 (60.8 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet x.y.88.253 netmask 255.255.255.224 broadcast x.y.88.255
ether <MAC> txqueuelen 1000 (Ethernet)
RX packets 77911 bytes 6285521 (5.9 MiB)
RX errors 0 dropped 836 overruns 0 frame 0
TX packets 6502 bytes 1057860 (1.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 740 bytes 606784 (592.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 740 bytes 606784 (592.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:67:e6:77 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[user@server ~]$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 x.y.5.185 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 x.y.88.225 0.0.0.0 UG 10 0 0 eth1
x.y.5.184 0.0.0.0 255.255.255.248 U 0 0 0 eth0
x.y.88.224 0.0.0.0 255.255.255.224 U 10 0 0 eth1
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
[user@server ~]$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
# ifcfg-eth0
HWADDR=<MAC>
TYPE=Ethernet
BOOTPROTO=none
#DNS1=x.y.company.dns
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV4_ROUTE_METRIC=0
IPV6INIT=no
IPV6_AUTOCONF=no
IPV6_DEFROUTE=no
IPV6_FAILURE_FATAL=no
NAME=SERVER
UUID=<uuid>
DEVICE=eth0
ONBOOT=yes
IPADDR=x.y.5.186
PREFIX=29
GATEWAY=x.y.5.185
[user@server ~]$ cat /etc/sysconfig/network-scripts/ifcfg-eth1
# ifcfg-eth1
HWADDR=<MAC2>
TYPE=Ethernet
BOOTPROTO=none
#DNS1=x.y.company.dns
DEFROUTE=no
IPV4_FAILURE_FATAL=yes
IPV4_ROUTE_METRIC=10
IPV6INIT=no
IPV6_AUTOCONF=no
IPV6_DEFROUTE=no
IPV6_FAILURE_FATAL=no
NAME=CLIENT
UUID=<uuid2>
DEVICE=eth1
ONBOOT=no
IPADDR=x.y.88.253
PREFIX=27
GATEWAY=x.y.88.225
Entonces mi pensamiento es que podría ser una ruta. Eliminé /etc/sysconfig/network-scripts/route-eth0
y route-eth1
, entonces esos son los valores predeterminados.
[user@server ~]$ ip route
default via x.y.5.185 dev eth0 proto static
default via x.y.88.225 dev eth1 proto static metric 10
x.y.5.184/29 dev eth0 proto kernel scope link src x.y.5.186
x.y.88.224/27 dev eth1 proto kernel scope link src x.y.88.253 metric 1
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
Eliminé la ruta predeterminada paraeth1
[root@server user]# ip route del default via x.y.88.225 dev eth1 prot
Y todavía nada cambia. El ping a eth0
IP falla pero si elimino la otra ruta con
[root@server user]# ip route del x.y.88.224/27 dev eth1 proto kernel ric 10
eth0
funciona de nuevo, cada conexión x.y.5.186
vuelve a funcionar, pero eth1
deja de funcionar. Hasta donde yo sé, la métrica que utilicé eth1
debería resolver el problema, pero no es así. ¿Algún experto en enrutamiento que tenga una idea sobre esto?
Editar: CentOS nuevo
Respuesta1
Esta pregunta se ha hecho millones de veces aquí.
No se puede hacer mientras lo intentas; necesitarásenrutamiento de políticas. Puedes encontrar una introducción básica.aquí.
Tendrás que especificar, comoregla de propiedad intelectualque determina cuál de las dos tablas de enrutamiento se aplicará, una que especifica que, si el paquete proviene de la dirección IP de VM1 entonces use la tabla 1, de lo contrario use la tabla 2. Por eso se llama a vecesenrutamiento de origen, en lugar de enrutamiento de políticas: porque la tabla que se aplicará se elige en función de la dirección IP de origen, no de la dirección de destino.