pebwindkraft
Member
Hi,
ich krieg mal wieder irgendwas in meinem Kopf nicht hin
Ich möchte einen Laboraufbau erstellen, mit zwei Clients in unterschiedlichen Netzen, und dazwischen einen OpenBSD 6.0 als Router. Das ganze ohne Firewall (pf), nur erstmal reines "ping" und dann routing. Kann ja nicht so schwer sein, oder?
Plain vanilla dachte ich... Also minimale OpenBSD 6.0 in virtuellen Maschinen aufgebaut, kein pf, keine default Gateways, und fixe IP Adressen. OpenBSD Router mit sysctl net.inet.ip.forwarding=1 eingestellt, bzw. auch im config file. Setup:
Dann gebootet, alle IPv4 routen gelöscht:
dann funktioniert kein ping mehr zu den Clients (No route to host). Ok, nehme ich so hin. Dachte immer, das müsste auch ohne "routing" gehen, dass sich 2 Rechner direkt unterhalten...
Dann habe ich versucht, die Routen händisch einzubauen:
Ich kann immer noch nicht "pingen". Was mache ich falsch?
Schaue ich mir die Routen an:
dann sehe ich einen "kleinen" Unterschied bei den -net Routen und Flags. Direkt nach dem Booten (wenn ping noch geht), sieht man das hier:
Da ist der Unterschied also bei den Flags. Nach dem Booten hat OpenBSD "UC" gesetzt, lösche ich die Routen, und erstelle sie manuell, sind die Flags "UGS" gesetzt. Auflösung (man netstat!):
Während U und S noch "ok" ist, ist für mich das G ein grosses Fragezeichen.
Na gut, dann setzen wir die Route halt mal mit "-iface" auf, nach "man route" heisst das:
oha, kein "G" mehr. Ping auf das 0er Netzwerk kommt nix zurück, ping auf das 127er Netzwerk gibt:
"Invalid Argument" - was immer das bedeutet. Aber immerhin schon etwas mehr!
Jetzt muss ich noch das "C" darein kriegen, das man route sagt:
et voilà:
Wow, verstanden habe ich nicht, warum das so "funktioniert" (anderer Ausdruck für umständlich?).
Vielleicht kann mir jemand einen Hinweis geben, warum das so ist?
Ich dachte, ne statische Route drauf und "go"...
merci!
Volker
ich krieg mal wieder irgendwas in meinem Kopf nicht hin
Ich möchte einen Laboraufbau erstellen, mit zwei Clients in unterschiedlichen Netzen, und dazwischen einen OpenBSD 6.0 als Router. Das ganze ohne Firewall (pf), nur erstmal reines "ping" und dann routing. Kann ja nicht so schwer sein, oder?
Plain vanilla dachte ich... Also minimale OpenBSD 6.0 in virtuellen Maschinen aufgebaut, kein pf, keine default Gateways, und fixe IP Adressen. OpenBSD Router mit sysctl net.inet.ip.forwarding=1 eingestellt, bzw. auch im config file. Setup:
Code:
/-----------------------------\
/--------------\ | OpenBSD Router | /----------------\
| client 1 |______| IP 1 IP 2 |______| client 2 |
| 192.168.0.32 | | 192.168.0.1 192.168.127.1 | | 192.168.127.47 |
\--------------/ \-----------------------------/ \----------------/
Code:
$ doas route delete 192.168.0/24
delete net 192.168.0/24
$ doas route delete 192.168.127/24
delete net 192.168.127/24
$ netstat -rn -f inet (oder route -n show -inet):
Destination Gateway Flags Refs Use Mtu Prio Iface
192.168.0.1 08:00:aa:00:aa:01 UHLl 0 0 - 1 pcn0
192.168.0.255 192.168.0.1 UHb 0 0 - 1 pcn0
192.168.127.1 08:00:bb:12:7b:01 UHLl 0 0 - 1 pcn1
192.168.127.255 192.168.127.1 UHb 0 0 - 1 pcn1
Dann habe ich versucht, die Routen händisch einzubauen:
Code:
$ doas route add -net 192.168.0/24 192.168.0.1
add net 192.168.0/24: gateway 192.168.0.1
$ doas route add -net 192.168.127/24 192.168.127.1
add net 192.168.127/24: gateway 192.168.127.1
Schaue ich mir die Routen an:
Code:
$ netstat -rn -f inet
192.168.0/24 192.168.0.1 UGS 0 0 - 8 pcn0
192.168.0.1 08:00:aa:00:aa:01 UHLl 1 1 - 1 pcn0
192.168.0.255 192.168.0.1 UHb 0 0 - 1 pcn0
192.168.127/24 192.168.127.1 UGS 0 0 - 8 pcn1
192.168.127.1 08:00:bb:12:7b:01 UHLl 1 1 - 1 pcn1
192.168.127.255 192.168.127.1 UHb 0 0 - 1 pcn1
Code:
192.168.0/24 192.168.0.1 UC 0 0 - 4 pcn0
192.168.127/24 192.168.127.1 UC 0 0 - 4 pcn1
...
Code:
U = RTF_UP Route usable.
C = RTF_CLONING Generate new routes on use.
G = RTF_GATEWAY Destination requires forwarding by intermediary.
S = RTF_STATIC Manually added.
Na gut, dann setzen wir die Route halt mal mit "-iface" auf, nach "man route" heisst das:
Code:
...
-iface ~RTF_GATEWAY destination is directly reachable
$ doas route add -net 192.168.127/24 -iface 192.168.127.1
$ netstat -rn -f inet
Destination Gateway Flags Refs Use Mtu Prio Iface
192.168.0/24 192.168.0.1 UGS 0 4 - 8 pcn0
192.168.127/24 192.168.127.1 US 0 5 - 8 pcn1
Code:
ping: sendto: Invalid argument
ping: wrote 192.168.127.47 64 chars, ret=-1
ping: sendto: Invalid argument
ping: wrote 192.168.127.47 64 chars, ret=-1
ping: sendto: Invalid argument
ping: wrote 192.168.127.47 64 chars, ret=-1
Jetzt muss ich noch das "C" darein kriegen, das man route sagt:
Code:
-cloning RTF_CLONING generates a new route on use
...
$ doas route add -net 192.168.127/24 -iface -cloning 192.168.127.1
Code:
$ netstat -rn -f inet
192.168.127/24 192.168.127.1 UCS 0 0 - 8 pcn1
...
$ ping 192.168.127.47
PING 192.168.127.47 (192.168.127.47): 56 data bytes
64 bytes from 192.168.127.47: icmp_seq=0 ttl=255 time=5.174 ms
64 bytes from 192.168.127.47: icmp_seq=1 ttl=255 time=0.566 ms
64 bytes from 192.168.127.47: icmp_seq=2 ttl=255 time=0.825 ms
Vielleicht kann mir jemand einen Hinweis geben, warum das so ist?
Ich dachte, ne statische Route drauf und "go"...
merci!
Volker