Iperf zwischen Knoten will nicht - Firewallproblem?


#1

Hallo zusammen,

ich wollte versuchen, die Geschwindigkeit zwischen zwei Knoten zu messen, da habe ich irgendwo etwas von iperf gelesen. Leider bekomme ich keine Verbindung zwischen den Knoten. Zu beiden Knoten habe ich eine Verbindung per SSH mit meinem Rechner im Freifunk-Netz.

Auf dem einen Knoten starte ich iperf, hier in diesem Beispiel auch mit Angabe der IPv6 mit -B, habe es auch schon ohne -B versucht:

root@FF-BO-har-4300:~# iperf -s -B 2a03:2260:300b:0:32b5:c2ff:fed5:fc18
.------------------------------------------------------------
Server listening on TCP port 5001
Binding to local address 2a03:2260:300b:0:32b5:c2ff:fed5:fc18
TCP window size: 85.3 KByte (default)
.------------------------------------------------------------
_

Auf der anderen Seite bekomme ich folgenden Fehler:

root@FF-BO-har-CPE-Sued:~# iperf -c 2a03:2260:300b:0:32b5:c2ff:fed5:fc18
.------------------------------------------------------------
Client connecting to 2a03:2260:300b:0:32b5:c2ff:fed5:fc18, TCP port 5001
TCP window size: 16.0 KByte (default)
.------------------------------------------------------------
write1 failed: Broken pipe
write failed: Broken pipe
[ 3] local 0.0.0.0 port 0 connected with :: port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 0.0 sec 0.00 Bytes 0.00 bits/sec

Jetzt habe ich ein bisschen herumprobiert. Wenn ich mit ping6 jeweils den anderen Knoten anpinge, funktioniert das:

root@FF-BO-har-4300:~# ping6 2a03:2260:300b:0:8616:f9ff:fe31:36d2
PING 2a03:2260:300b:0:8616:f9ff:fe31:36d2 (2a03:2260:300b::8616:f9ff:fe31:36d2): 56 data bytes
64 bytes from 2a03:2260:300b::8616:f9ff:fe31:36d2: seq=0 ttl=64 time=1.023 ms
64 bytes from 2a03:2260:300b::8616:f9ff:fe31:36d2: seq=1 ttl=64 time=0.862 ms
64 bytes from 2a03:2260:300b::8616:f9ff:fe31:36d2: seq=2 ttl=64 time=0.850 ms
^C
— 2a03:2260:300b:0:8616:f9ff:fe31:36d2 ping statistics —
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.850/0.911/1.023 ms

Und anders herum:

root@FF-BO-har-CPE-Sued:~# ping6 2a03:2260:300b:0:32b5:c2ff:fed5:fc18
PING 2a03:2260:300b:0:32b5:c2ff:fed5:fc18 (2a03:2260:300b::32b5:c2ff:fed5:fc18): 56 data bytes
64 bytes from 2a03:2260:300b::32b5:c2ff:fed5:fc18: seq=0 ttl=64 time=0.984 ms
64 bytes from 2a03:2260:300b::32b5:c2ff:fed5:fc18: seq=1 ttl=64 time=0.871 ms
64 bytes from 2a03:2260:300b::32b5:c2ff:fed5:fc18: seq=2 ttl=64 time=0.931 ms
^C
— 2a03:2260:300b:0:32b5:c2ff:fed5:fc18 ping statistics —
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.871/0.928/0.984 ms

Jetzt bin ich noch auf die Idee gekommen, von meinem PC aus den Port auf dem Freifunk-Knoten zu scannen, wähend iperf -s läuft, mit folgendem Ergebnis:

viktor@U904H:~/Desktop$ nmap -6 -p 5002 2a03:2260:300b:0:32b5:c2ff:fed5:fc18

Starting Nmap 7.60 ( https://nmap.org ) at 2018-08-24 20:35 CEST
Nmap scan report for 2a03:2260:300b:0:32b5:c2ff:fed5:fc18
Host is up (0.0025s latency).

PORT STATE SERVICE
5002/tcp closed rfe

Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds

Es sind eigentlich nur 22 und 80 offen, wenn man alle Ports scannt:
Discovered open port 22/tcp on 2a03:2260:300b:0:32b5:c2ff:fed5:fc18
Discovered open port 80/tcp on 2a03:2260:300b:0:32b5:c2ff:fed5:fc18

Ich hab jetzt den Verdacht, dass der Port nicht offen ist :slight_smile: War auch in unserem slack schon ein Kommentar.

Was kann ich jetzt tun? Mein Halbwissen reicht leider nicht, um den Port zu “öffnen”.

Viele Grüße und Danke, Viktor


#2

der einfache weg: batctl tp $macderanderenseite
der komplizierte weg: iptables auslesen und eine regel einfügen, die entsprechend den port öffnet. allgemein mit den gluon entwicklern diskutieren wie man das löst. ggf muss hier etwas in die doku…


#3

Ich hab das tatsächlich ausprobiert, gibt mir aber nicht das aus, was mich eigentlich interessiert:

root@FF-BO-har-CPE-Sued:~# batctl n
[B.A.T.M.A.N. adv 2018.1, MainIF/MAC: primary0/fe:ce:cc:7c:0c:1b (bat0/84:16:f9:31:36:d2 BATMAN_IV)]
IF Neighbor last-seen
br-wan 8a:fa:21:6c:28:e0 3.950s
br-wan 2e:c1:8b:1e:23:b4 1.390s
br-wan d2:50:c5:e9:30:f0 2.040s
mesh0 8a:fa:21:6c:28:e1 1.700s
mesh0 d2:50:c5:e9:30:f1 1.200s
mesh0 5e:e3:81:d9:c3:41 2.570s
root@FF-BO-har-CPE-Sued:~# batctl tp 2e:c1:8b:1e:23:b4
Test duration 10110ms.
Sent 0 Bytes.
Throughput: 0 Bytes/s (0 Bps)
root@FF-BO-har-CPE-Sued:~# batctl tp 8a:fa:21:6c:28:e1
Test duration 10110ms.
Sent 0 Bytes.
Throughput: 0 Bytes/s (0 Bps)

Daher wollte ich das mit iperf weiter versuchen :roll_eyes:

Gibt es nur den komplizierten Weg über die iptables oder geht das auch über uci firewall?


#4

das ist seltsam. eigentlich steht da der duchsatz. aber er sendet nur bytes. ist der empfang so schlecht dass es hasen ohne verbindung geben könnte?


#5

batctl tp funktioniert nur gegen die primäre batman-adv mac.

https://www.open-mesh.org/issues/310


#6

Falls jemand die Lösung interessiert und hier mal landet: Habe es mit iperf3 nun hinbekommen.

Man kann den Port über uci freigeben, das ist etwas einfacher als iptables6:

uci add firewall rule
uci set firewall.@rule[-1].src=mesh
uci set firewall.@rule[-1].name=mesh_iperf
uci set firewall.@rule[-1].dest_port=5201
uci set firewall.@rule[-1].target=ACCEPT
uci set firewall.@rule[-1].proto=tcp
uci set firewall.@rule[-1].family=ipv6
uci commit firewall
/etc/init.d/firewall restart

Dann klappt’s über iperf3 -s auf Serverseite, iperf3 -c ipv6adresse auf Clientseite.

Falls das grober Unfug war, bitte ich um Rückmeldung