Portanto, tenho um servidor RHEL que pretendo usar para monitoramento de instalações. Possui 2 interfaces de rede em sub-redes diferentes. Por uma questão de brevidade, estes seriam o resultado de um 'ifconfig' e vou chamá-los:
- eno2: 11.11.11.11/24 (DHCP, sub-rede da Internet)
- eno3: 22.22.22.22/24 (STATIC, sub-rede de infraestrutura)
Agora meu problema é o seguinte: No próprio servidor eu posso fazer ping na internet (8.8.8.8) e posso fazer ping em dispositivos na sub-rede de infraestrutura (22.22.22.201) com a interface correta sendo usada para ambos (eno2 para 8.8.8.8 e eno3 para 22.22.22.201). por exemplo
$ip route get 8.8.8.8
> 8.8.8.8 via 11.11.11.0 dev eno2 src 11.11.11.11 uid 0
$ip route get 22.22.22.201
> 22.22.22.201 dev eno3 src 22.22.22.22 uid 0
Do meu computador do escritório (ou seja, remoto), também posso acessar dispositivos em ambas as sub-redes, mas não consigo acessar o servidor em seu próprio endereço IP (nem 11.11.11.11 nem 22.22.22.22), a menos que eu desligue uma ou outra interface.
Então, do meu controle remoto (PC do escritório), meu ping para o servidor é o seguinte:
# Both eno2 and eno3 active on server
ping 11.11.11.11 -t ping 22.22.22.22 -t
Request timed out Request timed out
Request timed out Request timed out
Request timed out Request timed out
...
# Turn off eno3
Reply from 11.11.11.11: bytes=32 Request timed out
Reply from 11.11.11.11: bytes=32 Request timed out
Reply from 11.11.11.11: bytes=32 Request timed out
Reply from 11.11.11.11: bytes=32 Request timed out
Reply from 11.11.11.11: bytes=32 Request timed out
...
# Turn on eno3 (both on again)
Request timed out Request timed out
Request timed out Request timed out
Request timed out Request timed out
Request timed out Request timed out
...
# Turn off eno2
Request timed out Reply from 22.22.22.22: bytes=32
Request timed out Reply from 22.22.22.22: bytes=32
Request timed out Reply from 22.22.22.22: bytes=32
Request timed out Reply from 22.22.22.22: bytes=32
Request timed out Reply from 22.22.22.22: bytes=32
Este NÃO é um problema de firewall, pois o mesmo acontece com meu firewall desativado:
$firewall-cmd --state
>not running
Os mesmos sintomas foram relatados aqui em um fórum RHEL Quando o RHEL tem vários IPs configurados, apenas um é acessível a partir de uma rede remota, então implementei a solução definindo rp_filter como 2 e as interfaces individuais como 0 (sem segurança) . O resultado do meu rp_filter para cada interface é o seguinte:
#sysctl -a 2>/dev/null | grep "\.rp_filter"
>
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.eno2.rp_filter = 0
net.ipv4.conf.eno3.rp_filter = 0
A saída das minhas regras e tabela de interface é a seguinte:
# ip -4 -br a ls
>
lo UNKNOWN 127.0.0.1/8
eno3 UP 22.22.22.22/24
eno2 UP 11.11.11.11/24
Regras de IP
# ip ru ls
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
Tabela IP
# ip -4 r ls table all
default via 11.11.11.1 dev eno2 proto dhcp src 11.11.11.11 metric 100
default via 22.22.22.1 dev eno3 proto static metric 101
22.22.22.0/24 dev eno3 proto kernel scope link src 22.22.22.22 metric 101
11.11.11.0/24 dev eno2 proto kernel scope link src 11.11.11.11 metric 100
169.254.0.0/16 dev eno3 scope link metric 1000
local 22.22.22.22 dev eno3 table local proto kernel scope host src 22.22.22.22
broadcast 22.22.22.255 dev eno3 table local proto kernel scope link src 22.22.22.22
local 11.11.11.11 dev eno2 table local proto kernel scope host src 11.11.11.11
broadcast 11.11.11.255 dev eno2 table local proto kernel scope link src 11.11.11.11
local 127.0.0.0/8 dev lo table local proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo table local proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo table local proto kernel scope link src 127.0.0.1
E route -n para um resumo da saída acima:
root@APPSVR:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 11.11.11.1 0.0.0.0 UG 100 0 0 eno2
0.0.0.0 22.22.22.1 0.0.0.0 UG 101 0 0 eno3
22.22.22.0 0.0.0.0 255.255.255.0 U 101 0 0 eno3
11.11.11.0 0.0.0.0 255.255.255.0 U 100 0 0 eno2
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eno3
No entanto, o mesmo problema persiste e não consigo acessar nenhuma das interfaces se ambas estiverem ativas.
Também tornei essas alterações persistentes, gravando-as nos arquivos de configuração relevantes (não me lembro exatamente onde) e sim, reiniciei o servidor.
Qualquer ajuda ou sugestão alternativa seria muito apreciada. Passei cerca de 3 dias preso neste problema agora. Desde já, obrigado!
Eu tive um problema semelhante a este com duas interfaces de rede. O problema foi causado pela configuração de gateways em ambas as interfaces. Depois de removermos o gateway de rede interno (estático), ele funcionou conforme o esperado.
Ok, então encontrei a solução depois de algumas dicas do @TomYan.
Todo o meu tráfego de saída estava passando pelas interfaces corretas (como visto na saída
ip route get <IP>
eroute -n
) e foi isso que me confundiu, pois ainda se espera que o tráfego de entrada passe pelo gateway padrão (eno3), apesar do tráfego de saída poder sair por qualquer um .Para que o gateway correto seja usado no tráfego de entrada, adicionei uma tabela IP adicional e configurei uma regra e uma rota estática para a segunda sub-rede não padrão (22.22.22.1).
Isso foi feito da seguinte forma: Adicionada uma tabela de roteamento chamada isp2 com ID 200
Adicionada a essa tabela a regra ip e a rota estática para especificar o comportamento da sub-rede 22.22.22.0/24:
Isso me permitiu acessar ambas as interfaces de fora, mas após a reinicialização ainda tive o mesmo problema. Então, para tornar essas alterações persistentes, fiz o seguinte:
Crie um arquivo de script /etc/network/if-up.d/static-routes com o seguinte conteúdo:
Torne-o executável de forma que seja executado sempre que a interface for ativada:
Agora tudo está funcionando conforme o esperado e posso executar ping em ambas as interfaces externas e em dispositivos em ambas as sub-redes do servidor.
Espero que isto ajude!