PBR (Policy Based Routing)
Aus Portunity Wiki
K (Änderungen von Mah@portunity (Diskussion) rückgängig gemacht und letzte Version von Ffa@portunity wiederhergestellt) |
(→Kurzes Beispiel unter Linux) |
||
| (Der Versionsvergleich bezieht 3 dazwischenliegende Versionen mit ein.) | |||
| Zeile 3: | Zeile 3: | ||
= Funktionsweise = | = Funktionsweise = | ||
| - | Normalerweise werden | + | <p> |
| - | Wenn Sie | + | Normalerweise werden alle Pakete nach den gleichen Regeln abgearbeitet und über das selbe Default-Gateway geschickt. |
| - | + | Wenn Sie mehrere Verbindungen zum Internet haben (wie z.B. einen [https://www.portunity.de/s/6w VPN-Tunnel] und Ihren "normalen" Internetanschluss) kann nur einer davon als Standardroute ins Internet genutzt werden. | |
| - | + | Dies führt jedoch dazu, dass Pakete entweder aufgrund falscher Quell-Adressen vom jeweiligen Provider verworfen werden oder ein lokaler Router diese "falsch" NATet. | |
| + | </p> | ||
| + | |||
| + | <p> | ||
| + | Hierfür kann PBR verwendet werden: Hierbei werden mehrere Routingtabellen angelegt, die unter Berücksichtigung der Quell-IP ausgewählt werden. | ||
| + | Somit können Sie in der Haupt-Routingtabelle Ihr reguläres Default-Gateway über den normalen Internetzugang eingetragen lassen, Traffic mit Quell-Adresse des Tunnels jedoch in eine alternative Routingtabelle werfen, in der das Standardgateway auf den Tunnel zeigt. | ||
| + | </p> | ||
| + | |||
| + | <p> | ||
| + | Wichtig hierbei ist, dass Ihr Tunnel-Client nicht selbstständig das Default-Gateway ändert, denn dies würde weiterhin nur in der Haupt-Tabelle passieren. | ||
| + | </p> | ||
= Kurzes Beispiel unter Linux = | = Kurzes Beispiel unter Linux = | ||
| - | Auf einem Linux basierten System lässt sich dies beispielsweise so erreichen: | + | Auf einem Linux-basierten System lässt sich dies beispielsweise so erreichen: |
| - | * Eine neue Routingtabelle anlegen, die als Defaultroute | + | * Eine neue Routingtabelle anlegen, die als Defaultroute das Tunnelinterface tun0 benutzt |
<source lang="command">ip route add default table 10 dev tun0</source> | <source lang="command">ip route add default table 10 dev tun0</source> | ||
<br> | <br> | ||
* Routingregel hinzufügen, dass der Traffic von der Tunnel-IP ausgehend durch Routingtabelle 10 (und damit durch tun0) fließen soll. | * Routingregel hinzufügen, dass der Traffic von der Tunnel-IP ausgehend durch Routingtabelle 10 (und damit durch tun0) fließen soll. | ||
| - | <source lang="command">ip rule add from 188.246. | + | <source lang="command">ip rule add from 188.246.x.x/32 to all prio 9999 table 10</source> |
<br> | <br> | ||
Aktuelle Version vom 14:38, 8. Okt. 2025
Als PBR (Policy Based Routing) bezeichnet man eine Technik um IP-Pakete in Netzwerken anhand bestimmter Kriterien zu Routen.
Funktionsweise
Normalerweise werden alle Pakete nach den gleichen Regeln abgearbeitet und über das selbe Default-Gateway geschickt. Wenn Sie mehrere Verbindungen zum Internet haben (wie z.B. einen VPN-Tunnel und Ihren "normalen" Internetanschluss) kann nur einer davon als Standardroute ins Internet genutzt werden. Dies führt jedoch dazu, dass Pakete entweder aufgrund falscher Quell-Adressen vom jeweiligen Provider verworfen werden oder ein lokaler Router diese "falsch" NATet.
Hierfür kann PBR verwendet werden: Hierbei werden mehrere Routingtabellen angelegt, die unter Berücksichtigung der Quell-IP ausgewählt werden. Somit können Sie in der Haupt-Routingtabelle Ihr reguläres Default-Gateway über den normalen Internetzugang eingetragen lassen, Traffic mit Quell-Adresse des Tunnels jedoch in eine alternative Routingtabelle werfen, in der das Standardgateway auf den Tunnel zeigt.
Wichtig hierbei ist, dass Ihr Tunnel-Client nicht selbstständig das Default-Gateway ändert, denn dies würde weiterhin nur in der Haupt-Tabelle passieren.
Kurzes Beispiel unter Linux
Auf einem Linux-basierten System lässt sich dies beispielsweise so erreichen:
- Eine neue Routingtabelle anlegen, die als Defaultroute das Tunnelinterface tun0 benutzt
ip route add default table 10 dev tun0
- Routingregel hinzufügen, dass der Traffic von der Tunnel-IP ausgehend durch Routingtabelle 10 (und damit durch tun0) fließen soll.
ip rule add from 188.246.x.x/32 to all prio 9999 table 10
So sollten sie ihre Tunneladresse auch ohne die "redirect-gateway" Option in OpenVPN von außen erreichen können.
Um sich die PBR-Routingtabellen anzuzeigen, müssen Sie explizit immer die entsprechende Table anzeigen lassen. Dies geschieht mit
ip route list table 10und
ip rule list
Beim Herunterfahren des tun0-Interfaces werden die Regeln übrigens nicht gelöscht sondern bleiben (inaktiv) erhalten. Es kann jedoch zu interessanten Problemen kommen, wenn PBR-Regeln zu inaktiven Geräten vorhanden sind, deswegen empfiehlt es sich die Regeln über die ifup- und ifdown-Scripte zu setzen resp. wieder zu löschen.