Hallo zusammen,
ich habe jetzt mit neuer Netzwerkkarte mal wieder probiert das Multi Uplink Routing vernünftig zu konfigurieren. Aber es funktioniert einfach nachweislich nicht so wie es sollte.
Also, ich habe in meinem Router 4 Netzwerkschnittstellen
wlan1 (hostapd → Access Point)
wlan2 (ein Uplink)
eth1 (lokales Netzwerk)
eth2 (Unitymedia zweiter Uplink)
Beide externen Netzwerkschnittstellen sind verbunden und es können Pakete übertragen werden. (mit ping -I getestet)
Die Internetverbindung vom Router selber ist auch sehr stabil. Jedoch habe ich Probleme mit den weiteren Clients im Netz. Der Teil wird auch im Wiki nicht vernünftig behandelt.
Ich habe ein kleines Skript gebastelt, dass sich um die Konfiguration der beiden Uplinks kümmert.
mpw@Server0:~$ cat multiuploadrouting.sh #!/bin/sh export IF1="eth2"; export IP1=`ifconfig $IF1 | grep "inet Adresse:"|cut -d":" -f2|cut -d" " -f1`; export P1="`echo $IP1| cut -d"." -f 1-3`.1"; export P1_NET="`echo $IP1| cut -d"." -f 1-3`.0" export IF2="wlan2"; export IP2=`ifconfig $IF2 | grep "inet Adresse:"|cut -d":" -f2|cut -d" " -f1`; export P2="`echo $IP2| cut -d"." -f 1-3`.1"; export P2_NET="`echo $IP2| cut -d"." -f 1-3`.0" export IF0="lo"; export P0_NET="127.0.0.0"; echo $IF1 echo $IP1 echo $P1 echo $P1_NET echo $IF2 echo $IP2 echo $P2 echo $P2_NET ip route delete default; ip route delete default; ip route add $P1_NET dev $IF1 src $IP1 table T1; ip route add default via $P1 table T1; ip route add $P2_NET dev $IF2 src $IP2 table T2; ip route add default via $P2 table T2; ip route add $P1_NET dev $IF1 src $IP1; ip route add $P2_NET dev $IF2 src $IP2; ip rule add from $IP1 table T1; ip rule add from $IP2 table T2; ip route add $P0_NET dev $IF0 table T1; ip route add $P2_NET dev $IF2 table T1; ip route add 127.0.0.0/8 dev lo table T1; ip route add $P0_NET dev $IF0 table T2; ip route add $P1_NET dev $IF1 table T2; ip route add 127.0.0.0/8 dev lo table T2; ip route add default scope global nexthop via $P1 dev $IF1 weight 10 nexthop via $P2 dev $IF2 weight 6 echo "done."; exit /sbin/iptables -F /sbin/iptables -X /sbin/iptables -t nat -F iptables -A FORWARD -o eth2 -i br0 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE iptables -A FORWARD -o wlan2 -i br0 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -t nat -A POSTROUTING -o wlan2 -j MASQUERADE sysctl -w net.ipv4.ip_forward=1
Das läuft auch so weit gut durch:
mpw@Server0:~$ sudo ./multiuploadrouting.sh [sudo] password for mpw: eth2 178.xxx.xxx.xxx #unkenntlich gemacht 178.xxx.xxx.1 178.xxx.xxx.0 wlan2 192.168.2.104 192.168.2.1 192.168.2.0 RTNETLINK answers: No such process RTNETLINK answers: File exists RTNETLINK answers: File exists RTNETLINK answers: File exists RTNETLINK answers: File exists RTNETLINK answers: File exists RTNETLINK answers: File exists RTNETLINK answers: File exists RTNETLINK answers: File exists RTNETLINK answers: File exists RTNETLINK answers: File exists RTNETLINK answers: File exists RTNETLINK answers: File exists done.
Im Prinzip würde es auch reichen, wenn "durchgereichte" Pakete immer über eine Netzwerkschnittstelle geroutet werden. Aber das funktioniert nicht. Daher hab ich die Zeilen aus dem Router verdoppelt und für beide Schnittstellen eingestellt.
Trotzdem gehen etwa 2-5% der Pakete ständig verloren. Das macht leider jegliches Surfverfnügen kaputt. Wenn man bedenkt, dass alleine jede moderne Website heutzutage 5-10 Bilder und Frames von anderen Websites lädt, wird quasi nie eine Website vollständig geladen. Das Ladesymbol bleibt das die ganze Zeit aktiv.
Kann man da etwas tun? Ich glaub mein Forwarding stimmt einfach so nicht, oder?
Hier mal ein paar pings von einem Rechner aus dem lokalen Netz:
mpw@MPWs-Netbook:~$ ping google.de PING google.de (173.194.35.152) 56(84) bytes of data. ^C --- google.de ping statistics --- 7 packets transmitted, 0 received, 100% packet loss, time 5999ms mpw@MPWs-Netbook:~$ ping google.de PING google.de (173.194.35.151) 56(84) bytes of data. 64 bytes from muc03s01-in-f23.1e100.net (173.194.35.151): icmp_req=1 ttl=53 time=242 ms 64 bytes from muc03s01-in-f23.1e100.net (173.194.35.151): icmp_req=2 ttl=53 time=265 ms 64 bytes from muc03s01-in-f23.1e100.net (173.194.35.151): icmp_req=3 ttl=53 time=288 ms 64 bytes from muc03s01-in-f23.1e100.net (173.194.35.151): icmp_req=4 ttl=53 time=312 ms 64 bytes from muc03s01-in-f23.1e100.net (173.194.35.151): icmp_req=5 ttl=53 time=336 ms 64 bytes from muc03s01-in-f23.1e100.net (173.194.35.151): icmp_req=6 ttl=53 time=360 ms 64 bytes from muc03s01-in-f23.1e100.net (173.194.35.151): icmp_req=7 ttl=53 time=282 ms 64 bytes from muc03s01-in-f23.1e100.net (173.194.35.151): icmp_req=8 ttl=53 time=305 ms 64 bytes from muc03s01-in-f23.1e100.net (173.194.35.151): icmp_req=9 ttl=53 time=329 ms ^C --- google.de ping statistics --- 10 packets transmitted, 9 received, 10% packet loss, time 9002ms rtt min/avg/max/mdev = 242.042/302.520/360.565/35.019 ms mpw@MPWs-Netbook:~$ ping google.de PING google.de (173.194.35.152) 56(84) bytes of data. ^C --- google.de ping statistics --- 13 packets transmitted, 0 received, 100% packet loss, time 12096ms mpw@MPWs-Netbook:~$
Und die routing-Tabellen
mpw@Server0:~$ route -n Kernel-IP-Routentabelle Ziel Router Genmask Flags Metric Ref Use Iface 0.0.0.0 178.xxx.xxx.1 0.0.0.0 UG 0 0 0 eth2 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 br0 178.xxx.xxx.0 0.0.0.0 255.255.252.0 U 0 0 0 eth2 178.xxx.xxx.0 0.0.0.0 255.255.255.255 UH 0 0 0 eth2 192.168.2.0 0.0.0.0 255.255.255.255 UH 0 0 0 wlan2 192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan2 192.168.4.0 0.0.0.0 255.255.255.0 U 0 0 0 br0 mpw@Server0:~$ ip route show default nexthop via 178.xxx.xxx.1 dev eth2 weight 10 nexthop via 192.168.2.1 dev wlan2 weight 6 169.254.0.0/16 dev br0 scope link metric 1000 178.xxx.xxx.0/22 dev eth2 proto kernel scope link src 178.xxx.xxx.214 178.xxx.xxx.0 dev eth2 scope link src 178.xxx.xxx.214 192.168.2.0 dev wlan2 scope link src 192.168.2.104 192.168.2.0/24 dev wlan2 proto kernel scope link src 192.168.2.104 192.168.4.0/24 dev br0 proto kernel scope link src 192.168.4.1 mpw@Server0:~$
Woher kommt eigentlich bei route -n die Zweite Zeile 169.254er-Zeile?
Grüße MPW