1

У меня есть система Ubuntu под управлением 12.10

Я использую KVM и настроил мост для виртуальных машин, который использует пересылку nat. У меня периодически возникают проблемы с пропаданием соединения, иногда оно сохраняется в течение нескольких дней, а иногда и нескольких минут.

Я отключил мост, чтобы решить проблему, но это все еще происходит, я пытался сделать ручную версию и обновление dhcp, которая иногда работает, он возвращает мне новый ip, и я снова отсутствует, но я заметил, что мой ip не обновляется, когда я запускаю ifconfig или в настройках подключения kvm.

/ и т.д. / интерфейсы

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

#auto br0
#iface br0 inet dhcp
#    bridge_ports eth0
#    bridge_stp off
#    bridge_fd 0
#    bridge_maxwait 0

Ifconfig

eth0      Link encap:Ethernet  HWaddr 38:60:77:aa:aa:aa  
      inet addr:10.0.0.137  Bcast:10.0.0.255  Mask:255.255.255.0
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:52068 errors:0 dropped:0 overruns:0 frame:0
      TX packets:10900 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:12322071 (12.3 MB)  TX bytes:2494188 (2.4 MB)

lo        Link encap:Local Loopback  
      inet addr:127.0.0.1  Mask:255.0.0.0
      UP LOOPBACK RUNNING  MTU:16436  Metric:1
      RX packets:2651 errors:0 dropped:0 overruns:0 frame:0
      TX packets:2651 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:402096 (402.0 KB)  TX bytes:402096 (402.0 KB)

virbr0    Link encap:Ethernet  HWaddr f6:94:09:8f:7b:b5  
      inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
      UP BROADCAST MULTICAST  MTU:1500  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)

sudo dhcpclient -r -v

Internet Systems Consortium DHCP Client 4.2.4
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/virbr0/f6:94:09:8f:7b:b5
Sending on   LPF/virbr0/f6:94:09:8f:7b:b5
Listening on LPF/eth0/38:60:77:aa:aa:aa
Sending on   LPF/eth0/38:60:77:aa:aa:aa
Sending on   Socket/fallback
DHCPRELEASE on eth0 to 10.0.0.254 port 67

sudo dhcpclient -v

Internet Systems Consortium DHCP Client 4.2.4
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/virbr0/f6:94:09:8f:7b:b5
Sending on   LPF/virbr0/f6:94:09:8f:7b:b5
Sending on   Socket/fallback
DHCPDISCOVER on virbr0 to 255.255.255.255 port 67 interval 3
DHCPDISCOVER on virbr0 to 255.255.255.255 port 67 interval 5
DHCPDISCOVER on virbr0 to 255.255.255.255 port 67 interval 9
DHCPDISCOVER on virbr0 to 255.255.255.255 port 67 interval 15

На данный момент я знаю, что единственный выход из этого состояния - это отключить сетевой кабель и перезапустить

ОБНОВИТЬ

Когда соединение обрывается, я успешно запускаю sudo dhclient -v не удаляя адрес в первую очередь.

Dhclient -v

Internet Systems Consortium DHCP Client 4.2.4
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/virbr0/96:a2:d6:f5:30:fc
Sending on   LPF/virbr0/96:a2:d6:f5:30:fc
Listening on LPF/eth0/38:60:77:aa:aa:aa
Sending on   LPF/eth0/38:60:77:aa:aa:aa
Sending on   Socket/fallback
DHCPDISCOVER on virbr0 to 255.255.255.255 port 67 interval 3
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3
DHCPREQUEST of 10.0.0.129 on eth0 to 255.255.255.255 port 67
DHCPOFFER of 10.0.0.129 from 10.0.0.254
DHCPACK of 10.0.0.129 from 10.0.0.254
bound to 10.0.0.129 -- renewal in 5716 seconds.

здесь я вижу, что меня арендуют 10.0.0.129 но ifconfig по-прежнему отображает 10.0.0.137

eth0      Link encap:Ethernet  HWaddr 38:60:77:82:a8:61  
      inet addr:10.0.0.137  Bcast:10.0.0.255  Mask:255.255.255.0
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:312183 errors:0 dropped:0 overruns:0 frame:0
      TX packets:85529 errors:0 dropped:1 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:80808972 (80.8 MB)  TX bytes:20479979 (20.4 MB)

lo        Link encap:Local Loopback  
      inet addr:127.0.0.1  Mask:255.0.0.0
      UP LOOPBACK RUNNING  MTU:16436  Metric:1
      RX packets:3910 errors:0 dropped:0 overruns:0 frame:0
      TX packets:3910 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:461047 (461.0 KB)  TX bytes:461047 (461.0 KB)

virbr0    Link encap:Ethernet  HWaddr 96:a2:d6:f5:30:fc  
      inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
      UP BROADCAST MULTICAST  MTU:1500  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)

4 ответа4

1

Я искренне удивлен, что никто не упомянул очевидный ответ -

Отбросьте DHCP и используйте статическую IP-адресацию. Вы можете продолжить с NAT ETC, просто не назначайте IP-адреса из пула DHCP, но в той же подсети, и все должно работать надежно и предсказуемо.

Все, что вам нужно сделать, чтобы включить статическую IP-адресацию, это изменить

auto eth0
iface eth0 inet dhcp

в

auto eth0
address X.X.X.X
iface eth0 inet static
netmask 255.255.255.0  
gateway X.X.X.Y

Убедитесь, что шлюз является адресом, назначенным KVM (если вы выполните /sbin /route -n, он покажет вам шлюз по умолчанию - это IP-адрес для использования).

0

Если вы используете мост для подключения ваших виртуальных машин к той же сети, что и eth0, вам обычно не нужно выполнять NAT. Вам нужно только выполнить следующие пять шагов:

  • Сконфигурируйте ваш гипервизор для использования соответствующего интерфейса моста. KVM - это просто ядро. Гипервизор может использовать это для реализации виртуальной машины. Если гипервизор настроен на использование virbr0 но вы настроили br0 , у вас, конечно, будут проблемы. Кажется, что virbr0 - это то, что ваш гипервизор настроил автоматически, поэтому на данный момент вам нужно только убедиться, что ваши виртуальные машины используют этот интерфейс (я бы предположил, что это уже сделано) и что к нему добавлен eth0 (то есть, sudo brctl addif virbr0 eth0)
  • Убедитесь, что все соответствующие ссылки активны (т. sudo ip link set dev eth0 up; sudo ip link set dev virbr0 up). Предпочитаю ip из пакета iproute2 ; ifconfig из пакета net-tools давно устарел, хотя он все равно должен работать для чего-то такого базового.
  • Включить переадресацию IP в ядре (например, sysctl net.ipv4.ip_forward=1)
  • Установите брандмауэр, чтобы разрешить мостовой трафик. Если вы не особенно придирчивы или не беспокоитесь о людях, отправляющих произвольный трафик на ваши виртуальные машины, вы можете просто сделать следующее, чтобы пропустить любой трафик:

    • Если мостовой трафик виден iptables (то есть net.bridge.bridge-nf-call-iptables = 1):
      • Сбросьте цепочку iptables FORWARD (iptables -F FORWARD) в табличном фильтре.
      • Установите для его политики значение ACCEPT (iptables -P FORWARD ACCEPT).
      • Убедитесь, что вы не выполняете фильтрацию в каких-либо других таблицах (что не следует делать, поскольку это не является их целью).
    • Если мостовой трафик видим для arptables (т. net.bridge.bridge-nf-call-arptables = 1), вам нужно будет сделать что-то похожее на описанное выше для цепочек IN и OUT в табличном filter (единственная таблица в факт).
    • Опять же, сделайте что-то подобное для ebtables . Не нужно проверять, установлен ли определенный sysctl, он всегда актуален для мостового трафика.

    Я опустил детали для последних двух, так как маловероятно, что ваша система имеет какую-либо конфигурацию там. Возможно, они даже не установлены в вашей системе, и в этом случае вы можете просто пропустить эти шаги.

  • Убедитесь, что вы не используете ARP-прокси . Вам, вероятно, это не нужно (например, для чего-то совершенно не связанного с этим вопросом), и, вероятно, вы этого не делаете, поэтому просто sudo sysctl net.ipv4.conf.all.proxy_arp=0 . Если вы соединяете мосты, вы не должны использовать ARP-прокси для такого простого примера.

Насколько мне известно, не существует такой вещи, как пересылка NAT. Вы имели в виду простую переадресацию IP (не то же самое, что мост Ethernet)? Вы имели в виду переадресацию портов? Простая переадресация портов bootps (67) и bootpc (68) (используемых DHCP-сервером и клиентом соответственно) и NAT для всего остального - очень странная настройка и затруднит отладку.

0

Выстрел в темноте:

ethX не должен ничего DHCP.

С машины, основанной на Proxmox, результат ifconfig (с мостом vmbr0 к eth1 (единственный реальный, подключенный NIC, потому что это gbit)), я получаю:

eth0      Link encap:Ethernet  HWaddr 00:30:67:4f:48:57  
          UP BROADCAST MULTICAST  MTU:1500  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:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:27 Base address:0x4000 

eth1      Link encap:Ethernet  HWaddr 54:e6:fc:80:06:9b  
          inet6 addr: fe80::56e6:fcff:fe80:69b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:209503 errors:0 dropped:0 overruns:0 frame:0
          TX packets:22361 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:46807271 (44.6 MiB)  TX bytes:1558940 (1.4 MiB)
          Interrupt:16 Base address:0x8000 

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:16436  Metric:1
          RX packets:24031 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24031 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2462584 (2.3 MiB)  TX bytes:2462584 (2.3 MiB)

venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet6 addr: fe80::1/128 Scope:Link
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:3 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

vmbr0     Link encap:Ethernet  HWaddr 54:e6:fc:80:06:9b  
          inet addr:192.168.1.4  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::56e6:fcff:fe80:69b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:196981 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10585 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:43275844 (41.2 MiB)  TX bytes:784636 (766.2 KiB)

Лучшее, что у меня есть.

0

Еще один выстрел в темноте:

Вы можете попытаться отключить управление IPv6 в Networkmanager: установите его из Method: "Automatic" в Method "Ignore"

это однажды решило мне такую проблему.

если это не сработает, вы должны проверить вывод

tail -f /var/log/syslog

в то время как соединение теряется и переподключается

другой совет можно получить, изучив tcpdump networkmanager

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .