ubuntuusers.de

Multi Uplink Routing schluckt Pakete

Status: Ungelöst | Ubuntu-Version: Ubuntu 11.10 (Oneiric Ocelot)
Antworten |

MPW

Anmeldungsdatum:
4. Januar 2009

Beiträge: 3731

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

Antworten |