Назад | Перейти на главную страницу

Почему виртуальная машина не может получить публичный IP-адрес от провайдера?

У меня есть KVM-Host (на Debian) с

root@kvm-host:/# cat /etc/network/interfaces

auto  eth0
iface eth0 inet manual

auto vmbr0
iface vmbr0 inet static
  address 176.x.y.133
  netmask 255.255.255.224
  gateway 176.x.y.129 # Provider's GW IP
  bridge_ports eth0
  bridge_stp off
  bridge_fd 0


root@kvm-host:/# route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
176.x.y.128     0.0.0.0         255.255.255.224 U     0      0        0 vmbr0
0.0.0.0         176.x.y.129     0.0.0.0         UG    0      0        0 vmbr0


root@kvm-host:/# arp -an

? (176.x.y.155) at <incomplete> on vmbr0
? (176.x.y.129) at xx:yy:zz:11:22:33 [ether] on vmbr0


root@kvm-host:/# ifconfig

1: lo: ...
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether AA:BB:CC:DD:EE:FF brd ff:ff:ff:ff:ff:ff
    inet6 fe80::a60:6eff:feDD:EEFF/64 scope link 
       valid_lft forever preferred_lft forever
3: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN 
    link/ether AA:BB:CC:DD:EE:FF brd ff:ff:ff:ff:ff:ff
    inet 176.x.y.133/27 brd 176.x.y.159 scope global vmbr0
    inet6 fe80::a60:6eff:feDD:EEFF/64 scope link 
       valid_lft forever preferred_lft forever
4: venet0: <BROADCAST,POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN 
    link/void 
    inet6 fe80::1/128 scope link 
       valid_lft forever preferred_lft forever

У меня публичные IP-адреса: 176.x.y.133 (KVM-Host), 176.x.y.151, 176.x.y.155.

Теперь пытаюсь завести сеть на каждой ВМ:

user@VM:/$ cat /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
  address 176.x.y.155
  netmask 255.255.255.255
  pointtopoint 176.x.y.133
  gateway 176.x.y.133

Я удалил сетевой менеджер.

Следующие шаги:

user@VM:/$ sudo ifup eth0
RTNETLINK answers: File exists
Failed to bring up eth0


user@VM:/$ ping 176.x.y.133
connect: Network is unreachable

root@VM:/# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

(т.е. пусто, нет даже шлюза по умолчанию)

user@VM:/$ sudo add default via 176.x.y.133
RTNETLINK answers: no such process

user@VM:/$ sudo arp -a
(i.e. empty)

user@VM:/$ sudo arp -s 176.x.y.133 AA:BB:CC:DD:EE:FF
SIOCSARP Network is unreachable

Я даже не могу установить статические маршруты (MAC-addr./IP-addr.).

В чем может быть проблема при настройке сети на ВМ? (Надеюсь, я предоставил всю необходимую информацию, чтобы быть конкретным)

Убедитесь, что MAC-адрес не генерируется случайным образом; многие интернет-провайдеры будут выделять IP-адреса только тем MAC-адресам, которые выдаются действующими провайдерами. Мне удалось получить IP-адрес на машине, взяв заведомо исправный, увеличив последний октет на единицу.

Изменить: убедитесь, что "brctl show vmbr0" показывает что-то разумное. Что-то вроде

xen-br0         8000.90b11c316da4       no              eth0

На HW узле (хосте), /etc/network/interface может выглядеть так:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# Which interface are to be started at boot
auto lo vmbr0

# The loopback network interface
iface lo inet loopback

# The bridge for VM    
iface vmbr0 inet static
        address 176.x.y.133
        netmask 255.255.255.224
        network 176.x.y.128
        broadcast 176.x.y.159
        gateway 176.x.y.129 # Provider's GW IP
        bridge_ports eth0
        bridge_maxwait 2
        up /sbin/ifconfig eth0 inet 0.0.0.0 promisc
        up /sbin/sysctl -w net.ipv4.conf.br0.proxy_arp=1
        up /sbin/sysctl -w net.ipv4.conf.default.forwarding=1
        up /sbin/sysctl -w net.ipv4.ip_forward=1

Конечно, вы можете предпочесть создать vm-routing файл в /etc/sysctl.d/ хранить sysctl config.

На Хост ВМ, вы должны уметь использовать тем же конфигурация сети:

iface eth0 inet static
        address 176.x.y.155
        netmask 255.255.255.224
        network 176.x.y.128
        broadcast 176.x.y.159
        gateway 176.x.y.129 # Provider's GW IP