使用KVM和独立IP地址进行桥接路由

我有一个专用的服务器(在Hetzner),Debian Jessie和KVM用于虚拟化。 对于两台虚拟机,我有两个额外的IP地址(带有额外的MAC地址),这些IP地址不是子网(或与主IP相关)的一部分。

Main IP: WW.XX.YY.179 Additional IP 1: AA.BB.CC.DD Additional IP 2: EE.FF.GG.HH 

我想使用桥接设置将我的虚拟机连接到互联网,并从外部提供。 基本上我使用Hetzner wiki的文档来实现这一点。

我可以使用外部IP(WW.XX.YY.179,AA.BB.CC.DD,EE.FF.GG.HH)从服务器ping到(ssh)虚拟机,但无法从虚拟机访问外部Internet也不从外面接触到虚拟机。

这里缺less的是什么? 我会很感激你的帮助! 非常感谢! 干杯!

服务器上,我在/ etc / network / interfaces中使用以下configuration

 auto eth0 iface eth0 inet static address WW.XX.YY.179 netmask 255.255.255.224 gateway WW.XX.YY.160 up route add -net WW.XX.YY.179 netmask 255.255.255.224 gw WW.XX.YY.160 eth0 auto br0 iface br0 inet static address WW.XX.YY.179 netmask 255.255.255.255 bridge_ports none bridge_stp off bridge_fd 0 bridge_maxwait 0 up route add -host AA.BB.CC.DD dev br0 up route add -host EE.FF.GG.HH dev br0 

客户端使用以下networkingconfiguration:

 auto eth0 iface eth0 inet static address AA.BB.CC.DD netmask 255.255.255.255 gateway WW.XX.YY.160 pointopoint WW.XX.YY.179 dns-nameservers 8.8.8.8 8.8.4.4 

以下是服务器上执行的命令的一些输出:

 root@server ~ # ifconfig br0 Link encap:Ethernet HWaddr fe:50:56:00:3c:ae inet addr:WW.XX.YY.179 Bcast:WW.XX.YY.179 Mask:255.255.255.255 inet6 addr: fe80::2020:30ff:fe08:631f/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:188 errors:0 dropped:0 overruns:0 frame:0 TX packets:193 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:25958 (25.3 KiB) TX bytes:22480 (21.9 KiB) eth0 Link encap:Ethernet HWaddr 6c:62:6d:99:89:b1 inet addr:WW.XX.YY.179 Bcast:WW.XX.YY.BB Mask:255.255.255.224 inet6 addr: fe80::8f51:6dff:fe88:92b1/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:825 errors:0 dropped:0 overruns:0 frame:0 TX packets:702 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:90106 (87.9 KiB) TX bytes:189776 (185.3 KiB) *(omitted lo here...)* vnet0 Link encap:Ethernet HWaddr fe:50:56:00:3c:af inet6 addr: fe80::fc50:56ff:fe00:3caf/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:120 errors:0 dropped:0 overruns:0 frame:0 TX packets:182 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:15247 (14.8 KiB) TX bytes:23643 (23.0 KiB) vnet1 Link encap:Ethernet HWaddr fe:50:56:00:3c:ae inet6 addr: fe80::fc50:56ff:fe00:3cae/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:40 errors:0 dropped:0 overruns:0 frame:0 TX packets:86 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:5351 (5.2 KiB) TX bytes:16307 (15.9 KiB) root@server ~ # brctl show bridge name bridge id STP enabled interfaces br0 8000.fe5056003cae no vnet0 vnet1 root@server ~ # brctl showmacs br0 port no mac addr is local? ageing timer 1 00:50:56:00:3c:af no 58.00 3 fe:50:56:00:3c:ae yes 0.00 1 fe:50:56:00:3c:af yes 0.00 root@server ~ # ip route default via WW.XX.YY.161 dev eth0 WW.XX.YY.160/27 via WW.XX.YY.161 dev eth0 WW.XX.YY.160/27 dev eth0 proto kernel scope link src WW.XX.YY.179 AA.BB.CC.DD dev br0 scope link EE.FF.GG.HH dev br0 scope link root@server ~ # ping AA.BB.CC.DD PING AA.BB.CC.DD (AA.BB.CC.DD) 56(84) bytes of data. 64 bytes from AA.BB.CC.DD: icmp_seq=1 ttl=64 time=0.581 ms *.... \o/* root@server ~ # for file in `find /proc/ -iname send_redirects`; do echo $file; cat $file; done /proc/sys/net/ipv4/conf/all/send_redirects 0 /proc/sys/net/ipv4/conf/br0/send_redirects 0 /proc/sys/net/ipv4/conf/default/send_redirects 0 /proc/sys/net/ipv4/conf/eth0/send_redirects 0 /proc/sys/net/ipv4/conf/lo/send_redirects 0 /proc/sys/net/ipv4/conf/vnet0/send_redirects 0 /proc/sys/net/ipv4/conf/vnet2/send_redirects 0 

以下是在虚拟机上执行的命令的一些输出:

 root@vm1 ~ # ifconfig eth0 Link encap:Ethernet HWaddr 00:50:56:00:3c:af inet addr:AA.BB.CC.DD Bcast:AA.BB.CC.DD Mask:255.255.255.255 inet6 addr: fe80::250:56ff:fe00:3caf/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:192 errors:0 dropped:0 overruns:0 frame:0 TX packets:125 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:24463 (23.8 KiB) TX bytes:15857 (15.4 KiB) *(omitted lo here...)* root@vm1 ~ # ip route WW.XX.YY.179 dev eth0 proto kernel scope link src AA.BB.CC.DD root@vm1 ~ # ping 8.8.8.8 connect: Network is unreachable root@vm1 ~ # ping WW.XX.YY.179 PING WW.XX.YY.179 (WW.XX.YY.179) 56(84) bytes of data. 64 bytes from WW.XX.YY.179 : icmp_req=1 ttl=64 time=0.104 ms *.... \o/* 

检查单独的Mac地址是否为你的附加ip激活,尝试使用它们与vms。

这个解决scheme在pfsense上为我工作

 auto br0 iface br0 inet static address WW.XX.YY.179 (the one from eth0) netmask 255.255.255.255 (the one from eth0) gateway WW.XX.YY.160 (the one from eth0) bridge_ports eth0 bridge_stp off bridge_fd 1 bridge_hello 2 bridge_maxage 12 

我已经有了和你一样的设置,最后我通过使用hetzner的“完全brdiged”设置。 (服务器也在hetzner)

也许你和我一样是初学者,所以你害怕删除eth0。 我也有这个恐惧。 但它的工作原理是因为Hetzner使用MAC-Routing,所以你的eth0不需要有一个你指定的mac。