Estou enlouquecendo, pois estou tentando resolver isso há quase uma semana.
Cenário:Um servidor com dois dispositivos de rede diferentes. Cada dispositivo está conectado a uma sub-rede diferente da empresa.
eth0
está conectado x.y.5.184/29
, enquanto eth1
está conectado x.y.88.224/27
. Eu quero que o servidor escuteambosdispositivos.
O IP do servidor .5.184/29
deve ser x.y.5.186
, o IP do servidor .88.224/27
deve ser x.y.88.253
. Eu gostaria de executar duas VMs diferentes com o Apache, para que o servidor - com natpf para a respectiva VM - ouça x.y.5.186:p1
VM1 e x.y.88.253:p2
VM2
x
e y
devem ser ocultados devido a questões de privacidade, mas recebem valores.
Então aqui está o problema: se eu aparecer eth1
, o servidor não está respondendo eth0
e eu realmente não sei por quê.
Aqui está alguma saídacomambos os dispositivos ativados:
[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
Então, meu pensamento é que pode ser uma rota. Eu apaguei /etc/sysconfig/network-scripts/route-eth0
e route-eth1
, então esses são os padrões.
[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
Eu apaguei a rota padrão paraeth1
[root@server user]# ip route del default via x.y.88.225 dev eth1 prot
E ainda nada muda. O ping para eth0
IP falha, mas se eu excluir a outra rota com
[root@server user]# ip route del x.y.88.224/27 dev eth1 proto kernel ric 10
eth0
funciona novamente, todas as conexões x.y.5.186
funcionam novamente, mas eth1
param de funcionar. Pelo que eu sei, a métrica que usei eth1
deveria resolver o problema, mas não resolve. Algum especialista em roteamento com alguma ideia sobre isso?
Editar: CentOS novo
Responder1
Esta pergunta foi feita um zilhão de vezes, aqui.
Isso não pode ser feito como você está tentando fazer, você precisarároteamento de política. Você pode encontrar uma introdução básica a eleaqui.
Você deverá especificar, comoregra de ipque determina qual das duas tabelas de roteamento deve ser aplicada, uma que especifica que, se o pacote vier do endereço IP da VM1, use a tabela 1, caso contrário, use a tabela 2. É por isso que às vezes é chamadoroteamento de origem, em vez de roteamento de política: porque a tabela a ser aplicada é escolhida com base no endereço IP de origem, não no endereço de destino.