Hallo,
ich versuche seit einiger zeit eine bridge in mein LAN über eine Virtualbox VM zu etablieren.
router <- LAN -> VM-Host <- bridge -> VM <- VPN -> Client 10.1.1.1 1.1.1.101 1.1.1.122 1.1.1.220
Bis auf den VPN Client funktioniert das Netz problemlos.
VM
port 1194 proto udp server-bridge 10.1.1.122 255.255.255.0 10.1.1.220 10.1.1.240 #bridging directive dev tap0 ## If you need multiple tap devices, add them here up "/etc/openvpn/up.sh br0 tap0 1500" down "/etc/openvpn/down.sh br0 tap0" tun-mtu 1454 ca ca.crt cert VM.crt key VM.key dh dh2048.pem ifconfig-pool-persist ipp.txt #push "redirect-gateway def1" #push "route 10.1.1.0 255.255.255.0" #push "redirect-gateway def1 bypass-dhcp" #push "dhcp-option DNS 10.1.1.1" keepalive 10 600 comp-lzo persist-key persist-tun verb 3 mute 20 status openvpn-status.log #client-config-dir ccd client-to-client
Sonstige relevante infos
VM:~# brctl show bridge name bridge id STP enabled interfaces br0 8000.08002730f3d7 no eth0 tap0 VM:~# netstat -i Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg br0 1500 0 3129 0 0 0 2409 0 0 0 BMRU eth0 1500 0 2871 0 0 0 2692 0 0 0 BMPRU lo 65536 0 0 0 0 0 0 0 0 0 LRU tap0 1500 0 292 0 0 0 2095 0 0 0 BMPRU VM:~# cat /proc/sys/net/ipv4/ip_forward 1 VM:~# ifconfig br0 Link encap:Ethernet HWaddr 08:00:27:30:f3:d7 inet addr:10.1.1.122 Bcast:10.1.1.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe30:f3d7/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3318 errors:0 dropped:0 overruns:0 frame:0 TX packets:2550 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:395048 (395.0 KB) TX bytes:516378 (516.3 KB) eth0 Link encap:Ethernet HWaddr 08:00:27:30:f3:d7 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3048 errors:0 dropped:0 overruns:0 frame:0 TX packets:2845 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:423355 (423.3 KB) TX bytes:542844 (542.8 KB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) tap0 Link encap:Ethernet HWaddr 66:ae:81:70:0f:9a inet6 addr: fe80::64ae:81ff:fe70:f9a/64 Scope:Link UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:304 errors:0 dropped:0 overruns:0 frame:0 TX packets:2212 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:21886 (21.8 KB) TX bytes:328687 (328.6 KB) VM:~# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default router 0.0.0.0 UG 0 0 0 br0 10.1.1.0 * 255.255.255.0 U 0 0 0 br0
Client
client dev tap0 proto udp remote a.b.c.d 1194 tun-mtu 1454 nobind persist-tun ca ca.crt cert client.crt key client.key comp-lzo verb 3 mute 20
verbindung klappt, vorher auch mit tun getestet.
Ich kann die VM erst vom Client pingen wenn ich iptables anpasse:
iptables -A INPUT -i tap0 -j ACCEPT iptables -A INPUT -i br0 -j ACCEPT iptables -A FORWARD -i br0 -j ACCEPT
Ansonsten funktioniert br0 nicht.
Jetzt kommt das Problem, alle anderen Geräte im Netz sind nicht erreichbar.
client:~/ovpn$ ip route show match 10.1.1.1 default via 192.168.1.1 dev eth0 proto static 10.1.1.0/24 dev tap0 proto kernel scope link src 10.1.1.220 client:~/ovpn$ ping 10.1.1.1 PING 10.1.1.1 (10.1.1.1) 56(84) bytes of data. From 10.1.1.220 icmp_seq=1 Destination Host Unreachable VM:~# tcpdump -nnel -i br0 icmp tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on br0, link-type EN10MB (Ethernet), capture size 65535 bytes 14:40:18.973675 d2:ff:2d:a8:74:d0 > bc:ae:c5:c3:f1:1e, ethertype IPv4 (0x0800), length 98: 10.1.1.220 > 10.1.1.1: ICMP echo request, id 4430, seq 1, length 64 14:40:19.982105 d2:ff:2d:a8:74:d0 > bc:ae:c5:c3:f1:1e, ethertype IPv4 (0x0800), length 98: 10.1.1.220 > 10.1.1.1: ICMP echo request, id 4430, seq 2, length 64 router:~# tcpdump -nnel -i br0 icmp tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on br0, link-type EN10MB (Ethernet), capture size 96 bytes 14:40:18.978738 d2:ff:2d:a8:74:d0 > bc:ae:c5:c3:f1:1e, ethertype IPv4 (0x0800), length 98: 10.1.1.220 > 10.1.1.1: ICMP echo request, id 4428, seq 1, length 64 14:40:19.987135 bc:ae:c5:c3:f1:1e > d2:ff:2d:a8:74:d0, ethertype IPv4 (0x0800), length 98: 10.1.1.1 > 10.1.1.220: ICMP echo reply, id 4428, seq 1, length 64
So wie ich das sehe kommen die Packete nicht zur VM zurück, aber warum? Promisc ist auf der VM an. Eventuell muss man mit MASQUERADE arbeiten, aber wo genau?
Gruß,
dennis