Hi
@mods falls Rubrick verkehrt gewählt bitte korregieren , falls ein Fall fürs Wiki
bitte mir helfen wie ich es dort reinbekomme.
Hier mal ein kleines HowTo wie man mit rdomains 2 WAN Leitungen mit
Dynamischer IP Zuweisung in den Griff bekommt.
Plus ein paar Hints bezüglich stolperfallen.
Das wichtigste vorab so richtig Spass mache es es mit OpenBSD 5.9
da es hier pair gibt .
Ich hattes es zwar auch mit 5.8 am laufen jedoch ist es deutlich
aufwendiger da man alles mit PF machen musste was viel Pontential
für Fehler / Problemen hat.
5.9 Current ist ausreichend stabil um das ganze aufzusetzen.
am besten ein nightly runterladen und installieren.
Meine Umgebung
1x Lan -> $lan_if
1x DSL 18 MBit -> $dsl_if
1x Kabel 100 Mbit -> $cable_if
1x WLAN Router -> $wlan_if
Grundconfig
Zubachten ist das beim route befeht mit -T immer die richtige Routing Domain mit angegeben wird.
Das 192.168.131.0/24 ist mein LAN Netz das ich bei dem übergang von der rdomain 0 richtung rdomain 2 oder 3
NAT´en will muss die rückrute gesetzt werden.
Die 172.16.xx.xx Netze Sind reine Transfer Netze und beliebig.
die Vlan Interface etc. sind natürlich an die eingene umgebung anzupassen.
rdomain 1 -> WLAN
rdomain 2 -> DSL
rdomain 3 -> CABLE
Die WLAN rdomain habe ich komplett via PF gemacht , die WAN Verbindungen mit pair da ich hier mit relayd
die Default route setze , sommit ist /etc/myate nicht nötig.
die relayd config sieht im prinzip so aus wie in der man page Dokumentiert
nun noch forwarding an
Zu beachten ist , wenn ich ein outbound loadbalancing haben möchte so muss mpath via sysctl aktiviert werden.
relayd merkt das an der stelle, ansonsten wird $gw1 verwendet und als fallback $gw2.
nun noch das "patchen" der pair interfaces , sprich das verbinden dieser untereinander.
das mache ich in der /etc/rc.local weil somit die WAN Interfaces genug zeit haben ihre IPs zu discovern.
Bis auf das WLAN sollte Routing technisch alles Funktionieren, man kann nun via ping alles Testen.
Hierbei ist zu beachten , in der rdomains gibt es keinen resolver somit immer eine IP bei ping verwenden
ein ping -V 2 8.8.8.8 z.b. sollte einen ping zum google DNS Server machen über die DSL Leitung.
Kann man prüfen mit tcpdump -n -i pppoe0
was nun noch fehlt ist das pf Regelwerk bzw. das NAT.
Hierfür verwende ich gerne anchors um somit für die einzelnen bereiche eine eigene pf zone zu haben.
wichtig ist der relayd anchor vorhanden ist sonst relayd nicht richtig funktioniert.
die dns-server tabellen enthalten die DNS Server der jeweiligen WAN Provider,
da diese ihre DNS Server entsprechen Konfiguriert haben das sie nur auf Querys
aus dem eigenen IP Range antworten, mache ich hier ein route-to .
man kann diese funktion aber auch nutzen um gezielt eine WAN leitung anzusprechen.
das NAT findet im anchor statt.
hier kann mach auch die die entsprechenden block rules es setzen.
aber vorsicht
ein z.b. block on rdomain 2 bewirkt einen block auf allen interfaces die in der
rdomain 2 sind , somit muss man jede kommunikation die gewünscht ist per
pf regel abdecken.
ich empehle von daher einen
sind nun die regeln ohne syntax fehler geladen worden sollte ein ping aus der rdomain 0 ( default routing domain ) z.b. von einem
system im LAN , komplett durch gehen.
beachte es ist kein vollständiges regelwerk !
beachte es ist keine vollständige config für eine firewall .
es geht nur um das thema routing , rdomains , und 2 WAN verbindungen mit dynamischen IPs.
Holger
@mods falls Rubrick verkehrt gewählt bitte korregieren , falls ein Fall fürs Wiki
bitte mir helfen wie ich es dort reinbekomme.
Hier mal ein kleines HowTo wie man mit rdomains 2 WAN Leitungen mit
Dynamischer IP Zuweisung in den Griff bekommt.
Plus ein paar Hints bezüglich stolperfallen.
Das wichtigste vorab so richtig Spass mache es es mit OpenBSD 5.9
da es hier pair gibt .
Ich hattes es zwar auch mit 5.8 am laufen jedoch ist es deutlich
aufwendiger da man alles mit PF machen musste was viel Pontential
für Fehler / Problemen hat.
5.9 Current ist ausreichend stabil um das ganze aufzusetzen.
am besten ein nightly runterladen und installieren.
Meine Umgebung
1x Lan -> $lan_if
1x DSL 18 MBit -> $dsl_if
1x Kabel 100 Mbit -> $cable_if
1x WLAN Router -> $wlan_if
Grundconfig
Code:
# cat /etc/hostname.lo1
rdomain 1
inet 127.0.0.1/8
!/sbin/route -n -T 1 exec /usr/sbin/ftp-proxy -D 7
Code:
# cat /etc/hostname.lo2
rdomain 2
inet 127.0.0.1/8
!/sbin/route -n -T 2 exec /usr/sbin/ftp-proxy -D 7
Code:
# cat /etc/hostname.lo3
rdomain 3
inet 127.0.0.1/8
!/sbin/route -n -T 1 exec /usr/sbin/ftp-proxy -D 7
Code:
# cat /root/hostname.pppoe0
!echo "Startup DSL Line"
rdomain 1
!echo "set startup ip"
inet 0.0.0.0 255.255.255.255 NONE \
pppoedev em1 authproto pap \
authname 'xyz@xyz.de'authkey '123456' up
dest 0.0.0.1
!echo "enable ipv6"
inet6 autoconf
!/sbin/route -T 1 add default -ifp pppoe0 0.0.0.1
!/sbin/route -T 1 add -inet6 default -ifp pppoe0 ::0.0.0.1
Code:
# cat /etc/hostname.vlan5
rdomain 3
!echo "Startup Cable Line"
vlandev msk1
dhcp
Code:
# cat /etc/hostname.vlan101
!echo "Startup WLAN Line"
-inet6
vlandev msk1
rdomain 1
inet 192.168.1.2 255.255.255.0 NONE
!/sbin/route -n -T 1 add default 192.168.1.1
Code:
# cat /etc/hostname.pair0
inet 172.16.0.1 255.255.255.248 NONE
Code:
# cat /etc/hostname.pair1
rdomain 3
inet 172.16.0.2 255.255.255.248 NONE
!/sbin/route -n -T 3 add -net 192.168.131.0/24 172.16.0.1
Code:
# cat /etc/hostname.pair2
inet 172.16.0.9 255.255.255.248 NONE
Code:
# cat /etc/hostname.pair3
rdomain 2
inet 172.16.0.10 255.255.255.248 NONE
!/sbin/route -n -T 2 add -net 192.168.131.0/24 172.16.0.9
Code:
# cat /etc/hostname.re0
!echo "Startup LAN Line"
inet 192.168.131.250 255.255.255.0 NONE
Das 192.168.131.0/24 ist mein LAN Netz das ich bei dem übergang von der rdomain 0 richtung rdomain 2 oder 3
NAT´en will muss die rückrute gesetzt werden.
Die 172.16.xx.xx Netze Sind reine Transfer Netze und beliebig.
die Vlan Interface etc. sind natürlich an die eingene umgebung anzupassen.
rdomain 1 -> WLAN
rdomain 2 -> DSL
rdomain 3 -> CABLE
Die WLAN rdomain habe ich komplett via PF gemacht , die WAN Verbindungen mit pair da ich hier mit relayd
die Default route setze , sommit ist /etc/myate nicht nötig.
die relayd config sieht im prinzip so aus wie in der man page Dokumentiert
Code:
# cat /etc/relayd.conf
gw1="172.16.0.2"
gw2="172.16.0.10"
#table <gateways> { $gw1 ip ttl 1 priority 1 , $gw2 ip ttl 1 priority 2 }
table <gateways> { $gw1 ip ttl 1 , $gw2 ip ttl 1 }
router "uplinks" {
route 0.0.0.0/0
forward to <gateways> check icmp
}
Code:
echo "relayd_flags=" >> /etc/rc.conf.local
Code:
# cat /etc/sysctl.conf
net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1
Zu beachten ist , wenn ich ein outbound loadbalancing haben möchte so muss mpath via sysctl aktiviert werden.
relayd merkt das an der stelle, ansonsten wird $gw1 verwendet und als fallback $gw2.
nun noch das "patchen" der pair interfaces , sprich das verbinden dieser untereinander.
das mache ich in der /etc/rc.local weil somit die WAN Interfaces genug zeit haben ihre IPs zu discovern.
Code:
# cat /etc/rc.local
/sbin/ifconfig pair0 patch pair1
/sbin/ifconfig pair2 patch pair3
Bis auf das WLAN sollte Routing technisch alles Funktionieren, man kann nun via ping alles Testen.
Hierbei ist zu beachten , in der rdomains gibt es keinen resolver somit immer eine IP bei ping verwenden
ein ping -V 2 8.8.8.8 z.b. sollte einen ping zum google DNS Server machen über die DSL Leitung.
Kann man prüfen mit tcpdump -n -i pppoe0
was nun noch fehlt ist das pf Regelwerk bzw. das NAT.
Hierfür verwende ich gerne anchors um somit für die einzelnen bereiche eine eigene pf zone zu haben.
Code:
anchor "ftp-proxy/*"
pass in quick on $lan_if inet proto tcp from any to any port 21 divert-to 127.0.0.1 port 8021 rtable 3
anchor wlan on rdomain 1
load anchor wlan from "/etc/fw/wlan.cf"
anchor um on rdomain 3
load anchor um from "/etc/fw/um.cf"
anchor nc on rdomain 2
load anchor nc from "/etc/fw/nc.cf"
# pf routing fuer wlan
pass out on $lan_if from 192.168.131.0/24 to 192.168.132.0/24 rtable 1
pass out quick inet from any to <dns-server-A> route-to 172.16.0.10
pass out quick inet from any to <dns-server-B> route-to 172.16.0.2
anchor "relayd/*"
wichtig ist der relayd anchor vorhanden ist sonst relayd nicht richtig funktioniert.
die dns-server tabellen enthalten die DNS Server der jeweiligen WAN Provider,
da diese ihre DNS Server entsprechen Konfiguriert haben das sie nur auf Querys
aus dem eigenen IP Range antworten, mache ich hier ein route-to .
man kann diese funktion aber auch nutzen um gezielt eine WAN leitung anzusprechen.
das NAT findet im anchor statt.
Code:
cat /etc/fw/um.cf
pass out quick inet from any to any nat-to ($cable_if:0)
Code:
cat /etc/fw/nc.cf
pass out quick inet from any to any nat-to ($dsl_if:0)
hier kann mach auch die die entsprechenden block rules es setzen.
aber vorsicht
ein z.b. block on rdomain 2 bewirkt einen block auf allen interfaces die in der
rdomain 2 sind , somit muss man jede kommunikation die gewünscht ist per
pf regel abdecken.
ich empehle von daher einen
Code:
block log on $dsl_if
system im LAN , komplett durch gehen.
beachte es ist kein vollständiges regelwerk !
beachte es ist keine vollständige config für eine firewall .
es geht nur um das thema routing , rdomains , und 2 WAN verbindungen mit dynamischen IPs.
Holger