Wie sieht Ihr Problem im Detail aus?
Hallo, dies ist mein erster Versuch mit OVS. Ich verwende Arch Linux und habe Openvswitch installiert.
Verwenden Sie sudo ip link add v1 type dummy && sudo ip addr add 10.0.0.1/24 dev v1 && sudo ip link set v1 up
die drei erstellten virtuellen Netzwerkkarten v1, v2 (10.0.0.2/24) und v3 (10.0.0.3/24).
füge v1 v2 v3 zu ovs hinzu durch sudo ovs-vsctl add-port ovsbridge $NETCARDNAME
.
füge eine Flussregel hinzu durch sudo ovs-ofctl add-flow ovsbridge in_port=4,actions=output:5
(OVS-Port 4 ist V1-Netzkarte, OVS-Port 5 ist V2-Netzkarte). geprüft durchsudo ovs-ofctl show ovsbridge
im Moment verwende ich „ python-scapy
Sende Pakete an die v1-Netzkarte“ und „ tcpdump -i INTERFACE_NAME -w tcpdump_output -vnnl
Catch v1 v2-Paketnummern“. v1 hat 10 Pakete empfangen, v2 jedoch 0.
Was haben Sie versucht
# start ovs by systemd
$ sudo ovs-vsctl add-br ovsbridge
$ sudo ovs-vsctl show
7194d04a-66aa-48c2-bfa4-99bbdc6fc4b2
Bridge ovsbridge
Port ovsbridge
Interface ovsbridge
type: internal
$ ip a # part of
8: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 3e:9a:4c:83:04:43 brd ff:ff:ff:ff:ff:ff
9: ovsbridge: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether 96:35:f1:d2:6b:46 brd ff:ff:ff:ff:ff:ff
$ sudo ip link add v1 type dummy
$ sudo ip addr add 10.0.0.1/24 dev v1
$ sudo ip link set v1 up
# and same to v2 v3
# add them to ovs
$ sudo ovs-vsctl add-port ovsbridge v1
$ sudo ovs-vsctl show
7194d04a-66aa-48c2-bfa4-99bbdc6fc4b2
Bridge ovsbridge
Port ovsbridge
Interface ovsbridge
type: internal
Port v3
Interface v3
Port v2
Interface v2
Port v1
Interface v1
$ ip a # part of
38: v1: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue master ovs-system state UNKNOWN group default qlen 1000
link/ether da:11:b3:77:37:54 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.1/24 scope global v1
valid_lft forever preferred_lft forever
inet6 fe80::d811:b3ff:fe77:3754/64 scope link
valid_lft forever preferred_lft forever
39: v2: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue master ovs-system state UNKNOWN group default qlen 1000
link/ether ca:06:56:9c:af:6d brd ff:ff:ff:ff:ff:ff
inet 10.0.0.2/24 scope global v2
valid_lft forever preferred_lft forever
inet6 fe80::c806:56ff:fe9c:af6d/64 scope link
valid_lft forever preferred_lft forever
40: v3: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue master ovs-system state UNKNOWN group default qlen 1000
link/ether 82:a4:e7:b0:e0:71 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.3/24 scope global v3
valid_lft forever preferred_lft forever
inet6 fe80::80a4:e7ff:feb0:e071/64 scope link
valid_lft forever preferred_lft forever
# add flow try forward v1 to v2
$ sudo ovs-ofctl add-flow ovsbridge in_port=4,actions=output:5
# check flow rule
$ sudo ovs-ofctl dump-flows ovsbridge
cookie=0x0, duration=1138.852s, table=0, n_packets=0, n_bytes=0, in_port=v1 actions=output:v2
cookie=0x0, duration=32571.512s, table=0, n_packets=518, n_bytes=177156, priority=0 actions=NORMAL
$ sudo ovs-appctl fdb/show ovsbridge
port VLAN MAC Age
LOCAL 0 a8:7e:ea:be:07:e4 278
$ cat rnd_pkt.py # part of
scapy.sendp(get_random_packet(), iface=v1)
# send 10 packages to v1
und sudo ovs-tcpdump -i v1
zeige kein Paket an, das ich per Scapy sende. Ich denke, vielleicht sollte ich zum Testen nicht Python-Scapy verwenden?
was hast du erwartet?
ich gehe davon aus, dass OVS das Paket von V1 nach V2 kopiert.
wenn ihr mehr Infos braucht, sagt mir bitte Bescheid. :)
Antwort1
Aktivieren Sie ip link set $NETCARD promisc on
den Promisc-Modus. Dann funktioniert es einwandfrei.