у меня есть VM
работает на Xen
. Виртуальная машина месяцами работала нормально, и внезапно прервался доступ к сети.
Dom0 DomU
.-------. bridge .-------. virtual link .------.
| eth0 |----------| vif55 |-------x------| eth0 |
'-------' '-------' | '------'
|
Seems to be broken somewhere here /
Однако я все еще могу xm console
из Dom0
и получить доступ к VM
.
Я хотел бы понять, в чем причина проблемы. Я точно знаю, что если я перезапущу свой VM
все вернется в норму (я знаю это, потому что это происходит не в первый раз) ...
Вот что я сделал до сих пор:
xm console domu
$ sudo su
$ ifconfig
Сетевое соединение выглядит нормально. IP в порядке, но любая из этих команд не сработает:
$ ping dom0
$ ping 8.8.8.8
Я получил следующую ошибку:
$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
ping: sendmsg: No buffer space available
^C
--- 8.8.8.8 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 24002ms
Мой fail2ban
не выглядит сломанным:
$ tail -n2 fail2ban.log
2015-07-31 19:41:52,851 fail2ban.actions[1854]: WARNING [ssh] Ban 218.65.30.61
2015-07-31 19:51:53,618 fail2ban.actions[1854]: WARNING [ssh] Unban 218.65.30.61
$ iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
fail2ban-apache tcp -- anywhere anywhere multiport dports http,https
fail2ban-ssh tcp -- anywhere anywhere multiport dports ssh
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain fail2ban-apache (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
Chain fail2ban-ssh (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
Доступное дисковое пространство, указанное df
выглядит нормально.
В VM
это работает:
$xmlist | grep domu
domu 55 4096 4 -b---- 670393.8
Это связано с vif55
:
$iptables -L | grep domu
ACCEPT all -- domu anywhere PHYSDEV match --physdev-in vif55.0
В vif55
доступен:
$ ifconfig | grep vif55.0
vif55.0 Link encap:Ethernet HWaddr fe:ff:ff:ff:ff:ff
inet6 addr: xxxx::fcff:ffff:xxxx:ffff/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:60965324 errors:0 dropped:0 overruns:0 frame:0
TX packets:130097868 errors:0 dropped:22 overruns:0 carrier:0
collisions:0 txqueuelen:32
RX bytes:3441407339 (3.2 GiB) TX bytes:161037189 (153.5 MiB)
В vif55
подключен к сетевому мосту:
$ brctl show
bridge name bridge id STP enabled interfaces
eth0 8000.10604ba1432a no peth0
vif1.0
vif10.0
vif11.0
vif48.0
vif51.0
vif55.0
vif56.0
vif57.0
vif58.0
vif59.0
vif60.0
vif9.0
Ключ к разгадке этой загадки - ошибка, которую вы получаете ping
: sendmsg: No buffer space available
. Это означает, что пакеты не просто куда-то сбрасываются, они фактически где-то «забиваются» в гостевой системе. На физической машине это означает, что драйвер ядра и / или оборудование неисправны; аналогично, в виртуальной машине это означает, что у вас где-то есть низкоуровневый сетевой код с ошибками.
Прежде всего, убедитесь, что вы в курсе обновлений, особенно на хосте. Если вы используете очень старую версию своей ОС, возможно, сейчас самое время ее обновить - у Xen был много ошибок, исправленных за долгие годы.
Вы жестяная банкавременно, обойти это, увеличив net.core.wmem_max
sysctl. Однако это не «исправление», а лишь обходной путь; предположительно, большее буферное пространство в конечном итоге снова заполнится, и вы вернетесь туда, где находитесь сейчас.
Вы не указываете, как вы управляете гостем. Если он полностью виртуализирован, возможно, в используемой вами эмулированной сетевой карте есть ошибка; virtio one - ваш лучший выбор, но если вы уже используете его, попробуйте e1000
вместо.