I'm trying to set up a virtual machine (guest) wich should act as router (ubntu 14.04). The host is a CentOS 7 machine (4x LAN). The guest should get a public ip address over it's eth0
(guest), wich is connected to enp0s20f0
(host) over br0
(host).
The Problem is, that the guest doesn't get an ip address.
More informations:
- All interfaces of the host (
enp0s20f0
-enp0s20f3
) are connected over bridgesbr0
-br3
(host) toeth0
-eth3
(guest). - The LAN interfaces (host) don't have a bootproto
- The bridges (host) don't have a bootproto, except
br2
: there isbootproto=static
so I can connect the host to the guest and then to the internet
Sketch:
+---------------------------------------------------------------------------------------------------------+
|host: CentOS 7, KVM, qemu |
| +------------------------------------------------------------------------------------+ + - - - - - -+ |
| |guest (VM): ubuntu 14.04 router, firewall | |other guests |
| | | (VM) | |
| | +--------------------------------------------------------------------------------+ | | |
| | | | | | |
| | | firewall | | | |
| | | | | | |
| | ++------------+---------+-------------+-------+-------------+------+------------++ | | |
| | +------------+ +-------------+ +-------------+ +------------+ | | |
| | |PROBLEM: | | | | | | | | | |
| | |eth0 | |eth1 | |eth2 | |eth3 | | + - - - - - -+ |
| | |dhcp | |static | |static | |static | | X |
| +------------------------------------------------------------------------------------+ X |
| |not working | |lan zone | |dmz | |wlan zone | X |
| +----+-------+ +-----+-------+ +-------+-----+ +-----------++ X |
| | | | | X |
| | | | X X X X |X |
| +------+---------+ +-----+------------+ +-+-------------X--+ ++-----------------+ |
| | | | | | | | | |
| | | | | | | | | |
| | br0 | | br1 | | br2 | | br3 | |
| | | | | | BOOTPROTO=static | | | |
| | BOOTPROTO=none| | BOOTPROTO=none | | IP: a local ip | | BOOTPROTO=none | |
| +-------+--------+ +---------+--------+ +----------+-------+ +---------+--------+ |
| | | | | |
| | | | | |
| | | | | |
| +-------+--------+ +---------+--------+ +----------+-------+ +---------+--------+ |
| | | | | | | | | |
| |enp0s20f0 | |enp0s20f1 | |enp0s20f2 | |enp0s20f3 | |
+---------------------------------------------------------------------------------------------------------+
| | | | | | | |
| | | | | | | |
+--------X-------+ +---------X--------+ +---------XX-------+ +----------XX------+
XXXXX X XXXXXX XX
XX loc LAN XXX X other server (dmz) XXX wlan zone XX
X XXXXXXXX X XXXXXX XXX X
internet XXXXX XXXXXXXXX XXXXXXXXX XXX
Configs:
Guest:
cat /etc/network/interfaces
#[...] lo [...]
# The primary network interface
auto eth0
iface eth0 inet dhcp
# The lan
auto eth1
iface eth1 inet static
address 192.168.x.y
netmask 255.255.255.0
broadcast 192.168.x.255
# the dmz
auto eth2
iface eth2 inet static
address 10.0.p.q
netmask 255.255.255.0
broadcast 10.0.p.255
# The wirelles zone
auto eth3
iface eth3 inet static
address 192.168.v.w
netmask 255.255.255.0
broadcast 192.168.v.255
Host:
cat /etc/sysconfig/network-scripts/ifcfg-*
NAME=br0 DEVICE=br0 NAME=br2 NAME=br3
TYPE=Bridge NAME=br1 TYPE=Bridge TYPE=Bridge
ONBOOT=yes TYPE=Bridge BOOTPROTO=static ONBOOT=yes
BOOTPROTO=none ONBOOT=yes ONBOOT=yes BOOTPROTO=none
NM_CONTROLLED=no BOOTPROTO=none IPADDR=10.0.0.10 NM_CONTROLLED=no
DELAY=0 NM_CONTROLLED=no NETMASK=255.255.255.0 DELAY=0
DEFROUTE=no DELAY=0 GATEWAY=10.0.p.q DEFROUTE=no
PEERDNS=no DEFROUTE=no DNS1=10.0.p.q PEERDNS=no
# PEERROUTES=yes PEERDNS=no NM_CONTROLLED=no # PEERROUTES=yes
# IPV4_FAILURE_FATAL=no # PEERROUTES=yes DELAY=0 # IPV4_FAILURE_FATAL=no
# IPV6INIT=no # IPV4_FAILURE_FATAL=no DEFROUTE=yes # IPV6INIT="no"
# IPV6_AUTOCONF=no # IPV6INIT=no PEERDNS=yes # IPV6_AUTOCONF=no
# IPV6_DEFROUTE=no # IPV6_AUTOCONF=no # PEERROUTES=yes # IPV6_DEFROUTE=no
# IPV6_PEERDNS=no # IPV6_DEFROUTE=no # IPV4_FAILURE_FATAL=no # IPV6_PEERDNS=no
# IPV6_PEERROUTES=yes # IPV6_PEERDNS=no # IPV6INIT=no # IPV6_PEERROUTES=yes
# IPV6_FAILURE_FATAL=no # IPV6_PEERROUTES=yes # IPV6_AUTOCONF=no # IPV6_FAILURE_FATAL=no
DEVICE=br0 # IPV6_FAILURE_FATAL=no # IPV6_DEFROUTE=no DEVICE=br3
DEVICE=br1 # IPV6_PEERDNS=no
# IPV6_PEERROUTES=yes
#IPV6_FAILURE_FATAL=no
DEVICE=br2
NAME=enp0s20f0 NAME=enp0s20f1 NAME=enp0s20f2 NAME=enp0s20f3
HWADDR="ab:cd:ef:gh:ij:kl" HWADDR=ab:cd:ef:gh:ij:mn HWADDR=ab:cd:ef:gh:ij:op HWADDR=ab:cd:ef:gh:ij:qr
UUID="[...]" UUID=[...] UUID=[...] UUID=[...]
TYPE=Ethernet TYPE=Ethernet TYPE=Ethernet TYPE=Ethernet
BOOTPROTO=none BOOTPROTO=none BOOTPROTO=none BOOTPROTO=none
ONBOOT=yes ONBOOT=yes ONBOOT=yes ONBOOT=yes
BRIDGE=br0 BRIDGE=br1 BRIDGE=br2 BRIDGE=br3
NM_CONTROLLED=no NM_CONTROLLED=no NM_CONTROLLED=no NM_CONTROLLED=no
# PERSISTENT_DHCLIENT=1 # DEFROUTE=no # DEFROUTE=no # DEFROUTE=no
# DEFROUTE=no # PEERDNS=yes # PEERDNS=yes # PEERDNS=yes
# PEERDNS=yes # PEERROUTES=yes # PEERROUTES=yes # PEERROUTES=yes
# PEERROUTES=yes # IPV4_FAILURE_FATAL=no # IPV4_FAILURE_FATAL=no # IPV4_FAILURE_FATAL=no
# IPV4_FAILURE_FATAL=yes # IPV6INIT="no" # IPV6INIT=no # IPV6INIT=no
# IPV6INIT=no # IPV6_AUTOCONF=no # IPV6_AUTOCONF=no # IPV6_AUTOCONF=no
# IPV6_AUTOCONF=no # IPV6_DEFROUTE=yes # IPV6_DEFROUTE=yes # IPV6_DEFROUTE=yes
# IPV6_DEFROUTE=no # IPV6_PEERDNS=yes # IPV6_PEERDNS=yes # IPV6_PEERDNS=yes
# IPV6_PEERDNS=yes # IPV6_PEERROUTES=yes # IPV6_PEERROUTES=yes # IPV6_PEERROUTES=yes
# IPV6_PEERROUTES=yes # IPV6_FAILURE_FATAL=no # IPV6_FAILURE_FATAL=no # IPV6_FAILURE_FATAL=no
# IPV6_FAILURE_FATAL=no DEVICE=enp0s20f1 DEVICE=enp0s20f2 DEVICE=enp0s20f3
DEVICE=enp0s20f0
All
ip route
and allifconfig
/ip addr
are returning the correct values, except foreth0
(guest).On running
ifup eth0
the guest trys to get an ip address (DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval [...]
) and ens withNo DHCPOFFERS received.
I'm happy about every idea...
Answer
It's possble that your ISP's device doesn't give DHCP addresses to a MAC address which is not directly connected to it. You'd need to call your ISP to confirm this.
If so, you could use ebtables to spoof the MAC of the VM, like this:
http://wiki.debian.org/BridgeNetworkConnections
No comments:
Post a Comment