<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>Reverse Path Filter</title><revhistory><revision><revnumber>4</revnumber><date>2014-11-09 22:33:51</date><authorinitials>leonaard</authorinitials></revision><revision><revnumber>3</revnumber><date>2014-11-09 20:44:06</date><authorinitials>leonaard</authorinitials></revision><revision><revnumber>2</revnumber><date>2014-11-09 20:43:26</date><authorinitials>leonaard</authorinitials><revremark>added Rendere permanenti le modifiche</revremark></revision><revision><revnumber>1</revnumber><date>2014-11-09 20:33:20</date><authorinitials>leonaard</authorinitials><revremark>created</revremark></revision></revhistory></articleinfo><para>Il Reverse Path Filter (<code>rp_filter</code>) 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. </para><para>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. </para><section><title>Possibili valori</title><itemizedlist><listitem><para><code>no</code> (0) - No source validation. </para></listitem><listitem><para><code>strict</code> (1) - If the interface is not the best reverse path the packet check will fail. </para></listitem><listitem><para><code>loose</code> (2) - If the source address is not reachable via any interface the packet check will fail.  </para></listitem></itemizedlist></section><section><title>Comandi utili</title><section><title>Visualizzare lo stato di rp_filter sulle diverse interfaccie</title><screen><![CDATA[# sysctl -a | grep rp_filter]]></screen></section><section><title>Modificare</title><screen><![CDATA[# sysctl -w net.ipv4.conf.<interface>.rp_filter=<value>]]></screen><para>Settando <code>rp_filter</code> a <code>0</code> o a <code>2</code> su un interfaccia e' necessario che <code>net.ipv4.conf.all.rp_filter</code> sia a <code>0</code>: </para><screen><![CDATA[# sysctl -w net.ipv4.conf.all.rp_filter=0]]></screen></section><section><title>Rendere permanenti le modifiche</title><para>Modificare il file <code>/etc/sysctl.d/30-rp_filter.conf</code> con i valori desiderati. Ad esempio: </para><screen><![CDATA[net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.eth0.rp_filter=2]]></screen></section></section><section><title>Link Esterni</title><itemizedlist><listitem><para>Occhio al rp_filter - <ulink url="https://www.mail-archive.com/wireless%40ml.ninux.org/msg11106.html"/> </para></listitem><listitem><para>RFC 3704 (Ingress Filtering for Multihomed Networks) - <ulink url="https://datatracker.ietf.org/doc/rfc3704/"/> </para></listitem></itemizedlist></section></article>