Il Reverse Path Filter (`rp_filter`) di Linux scarta i pacchetti in ingresso su un interfaccia di rete se provenienti da un indirizzo ip la cui rotta punta su un altra interfaccia. Per esempio, immaginando un router con tre interfaccie di rete if0, if1, if2 e una default route che punta a if2. Se rp_filter (strict) e' abilitato e arriva un pacchetto con indirizzo pubblico su if0 che deve essere routato su if1, il pacchetto viene scartato. Considerando che if0, if, e if2 possono essere anche interfaccie tunnel, VPN, etc, e' molto probabile che si verifichi la condizione descritta. = Possibili valori = * `no` (0) - No source validation. * `strict` (1) - If the interface is not the best reverse path the packet check will fail. * `loose` (2) - If the source address is not reachable via any interface the packet check will fail. = Comandi utili = === Visualizzare lo stato di rp_filter sulle diverse interfaccie === {{{ # sysctl -a | grep rp_filter }}} === Modificare === {{{ # sysctl -w net.ipv4.conf..rp_filter= }}} Settando `rp_filter` a `0` o a `2` su un interfaccia e' necessario che `net.ipv4.conf.all.rp_filter` sia a `0`: {{{ # sysctl -w net.ipv4.conf.all.rp_filter=0 }}} === Rendere permanenti le modifiche === Modificare il file `/etc/sysctl.d/30-rp_filter.conf` con i valori desiderati. Ad esempio: {{{ net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.eth0.rp_filter=2 }}} = Link Esterni = * Occhio al rp_filter - [[https://www.mail-archive.com/wireless%40ml.ninux.org/msg11106.html]] * RFC 3704 (Ingress Filtering for Multihomed Networks) - [[https://datatracker.ietf.org/doc/rfc3704/]]