Linux Policy Base Routing
Lors de la création d'EC2 sur AWS, le paquet peut ne pas atteindre EC2 avec plusieurs cartes réseau dans les situations suivantes, il s'agit donc d'un mémorandum. En tant que configuration, l'instance EC2 possède plusieurs cartes réseau, chacune appartenant à un sous-réseau différent.
(Citation de la figure) http://blog.serverworks.co.jp/tech/2018/02/16/rhel-pbr-setting/
L'état de la table de routage (principal) est le suivant. Le GW par défaut est un routeur de sous-réseau (10.0.1.0/24).
[root@ip-10-0-1-5 etc]# ip route show table main
10.0.1.0/24 dev eth0 proto kernel scope link src 10.0.1.5
10.0.2.0/24 dev eth1 proto kernel scope link src 10.0.2.5
default via 10.0.1.1 dev eth0
Dans cette situation, j'ai essayé de sauter PING de NW appartenant à 10.0.1.0/24 à NIC (eth1) de 10.0.2.x, mais il n'y a pas de paquet de retour. En raison de la recherche de pourquoi, PING est arrivé à l'EC2, mais lors du retour du paquet de retour, il envoie un paquet à partir du GW par défaut de l'EC2 et, par conséquent, il n'atteint pas la source. C'était une chose.
Pour la même communication, une communication dans laquelle le NIC de réception et le NIC de retour sont différents est appelée routage asymétrique. Sous Linux, à partir de certaines versions, les paramètres de noyau suivants sont définis pour supprimer les paquets si la carte réseau qui communique est différente de la carte réseau reçue. Ce paramètre est activé à la destination du paquet et seule la communication de retour est filtrée.
Filtre d'itinéraire de retour
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
Il existe un moyen de désactiver ce qui précède, mais il s'agit d'un paramètre de sécurité pour l'ensemble du système d'exploitation pour empêcher l'usurpation d'adresse IP. Afin d'éviter cela, il existe également une fonction appelée Routage de base de politique, alors implémentez-la.
Policy Base Routing
La table de routage standard examine l'adresse de destination et achemine le paquet vers un routeur spécifique ou une passerelle par défaut. D'autre part, le routage de base de politique (PBR) est une fonction qui détermine le routage en regardant l'adresse IP source et le port TCP / UDP. En règle générale, donnez la priorité au PBR par rapport au routage normal.
Par conséquent, dans ce cas, on peut conclure que le PBR doit être défini de telle sorte que le paquet dont l'adresse IP source est 10.0.2.0/24 soit passé à 10.0.2.1. (Bien que ce soit l'adresse IP source mentionnée ici, elle fait référence à la partie du paquet de retour de PING. Comme vous pouvez le voir par tcpdump, le paquet de retour est 10.0.2.x ==> 10.0.1.x.)
[root@ip-10-0-1-5 etc]# ip rule show
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
--Créer des règles de table de routage pour PBR
temporaire
ip route flush table 2000
ip route add table 2000 to 10.0.2.0/24 dev eth1
ip route add table 2000 to default via 10.0.2.1 dev eth1
ip rule add from 10.0.2.0/24 table 2000 priority 200
Permanent
cat << EOF > /etc/sysconfig/network-scripts/pbr02-eth1
from 10.0.2.0/24 table 2000 priority 200
EOF
cat << EOF > /etc/sysconfig/network-scripts/route-eth1
10.0.2.0/24 dev eth1 table pbr02
default via 10.0.2.1 dev eth1 table 2000
EOF
-Système de confirmation de réglage
[root@ip-10-0-1-5 network-scripts]# ip rule show
0: from all lookup local
200: from 10.0.2.0/24 lookup pbr02
32766: from all lookup main
32767: from all lookup default
[root@ip-10-0-1-5 network-scripts]# ip route show table 2000
10.0.2.0/24 dev eth1 scope link
default via 10.0.2.1 dev eth1
Référence
https://milestone-of-se.nesuke.com/nw-basic/routing/policy-based-routing/