Вопрос или проблема
На Solaris10 (виртуальная машина на qemu) я настраиваю IPv6
ipsec и брандмауэр отключены
svcs -a|gegrep 'ipfilter|ipsec'
disabled 1:00:14 svc:/network/ipfilter:default
disabled 23:38:28 svc:/network/ipsec/manual-key:default
disabled 1:00:18 svc:/network/ipsec/policy:default
disabled 1:00:18 svc:/network/ipsec/ike:default
IPv6 настроен
ifconfig -a6
e1000g1: flags=2104841<UP,RUNNING,MULTICAST,DHCP,ROUTER,IPv6> mtu 1500 index 3
inet6 fe80::5254:ee:fdc7:a479/10
e1000g1:1: flags=2100841<UP,RUNNING,MULTICAST,ROUTER,IPv6> mtu 1500 index 3
inet6 418:5b17:d32a:8023::2/64
но не могу пинговать “внешний” свитч (это виртуальная сеть, созданная с помощью libvirt), могу пинговать только собственный адрес
ping -A inet6 -s 418:5b17:d32a:8023::2
PING 418:5b17:d32a:8023::2: 56 data bytes
64 bytes from 418:5b17:d32a:8023::2: icmp_seq=0. time=0.0300 ms
64 bytes from 418:5b17:d32a:8023::2: icmp_seq=1. time=0.0400 m
ping -A inet6 -s 418:5b17:d32a:8023::1
PING 418:5b17:d32a:8023::1: 56 data bytes
маршрут, кажется, правильный
netstat -rn
Routing Table: IPv6
Destination/Mask Gateway Flags Ref Use If
--------------------------- --------------------------- ----- --- ------- -----
418:5b17:d32a:8023::/64 418:5b17:d32a:8023::2 U 1 98 e1000g1:1
fe80::/10 fe80::5254:ee:fdc7:a479 U 1 69 e1000g1
Другая машина (Slackware Linux), подключенная к тому же виртуальному свитчу, может пинговать без проблем
ping -6 fe80::5254:ee:fdc7:a481
PING fe80::5254:ee:fdc7:a481(fe80::5254:ee:fdc7:a481) 56 data bytes
64 bytes from fe80::5254:ee:fdc7:a481%eth0: icmp_seq=1 ttl=64 time=0.029 ms
64 bytes from fe80::5254:ee:fdc7:a481%eth0: icmp_seq=2 ttl=64 time=0.028 ms
64 bytes from fe80::5254:ee:fdc7:a481%eth0: icmp_seq=3 ttl=64 time=0.028 ms
почему сеть Solaris остаётся изолированной?
Отчёт routeadm
routeadm
Configuration Current Current
Option Configuration System State
---------------------------------------------------------------
IPv4 routing enabled enabled
IPv6 routing enabled enabled
IPv4 forwarding enabled enabled
IPv6 forwarding enabled enabled
С внешней машины я могу пинговать Linux виртуальную машину, но не Solaris виртуальную машину.
Решение найдено: это был проблемный драйвер/конфигурация.
В предыдущей конфигурации у меня было 4 сетевых интерфейса (все e1000g0), я изменил драйвер для четвертого (который не использовался) на rtl8139. Я перезагрузился и…
root@solaris10:~# ping 418:5b17:d32a:8023::1
418:5b17:d32a:8023::1 is alive
root@solaris10:~# ping 418:5b17:d32a:8023::2
418:5b17:d32a:8023::2 is alive
root@solaris10:~# ping 418:5b17:d32a:8023::3
418:5b17:d32a:8023::3 is alive
Ответ или решение
Проблема, описанная в вопросе, связана с недоступностью сети в виртуальной машине Solaris 10 с настроенным протоколом IPv6. Здесь важно оценить все возможные факторы, которые могут влиять на работу сети и выявить причины, почему система не может корректно взаимодействовать с внешними устройствами.
Теория
Виртуальные машины, работающие в гипервизорах, таких как QEMU или VirtualBox, часто зависят от корректной настройки сетевых интерфейсов и драйверов. Solaris 10, как операционная система, в которой уже давно не выпускаются обновления, может демонстрировать проблемы с поддержкой современных сетевых стандартов и драйверов.
IPv6 — это протокол, который обеспечивает большую адресную емкость по сравнению с IPv4 и используется для прямой маршетизации без NAT. Важными пунктами управления в обстановке с IPv6 являются:
- Согласованность настроек сетевых интерфейсов. Необходимо, чтобы интерфейсы были настроены корректно без конфликта адресов и наложений.
- Драйверы сетевых карт. Низкопроизводительные драйверы или драйверы с ошибками могут искажать работу сетевой коммутации.
- Правильная настройка маршрутизации и соответствующих таблиц. Важно, чтобы маршруты были прописаны так, чтобы пакеты доходили от источника к пункту назначения.
- Отключенные механизмы безопасности, такие как IPSEC или фильтрация, которые часто создают барьеры для трафика.
Пример
В представленном случае мы наблюдаем, что после изменения драйвера сетевой карты с e1000 на rtl8139 проблема была устранена. Это достаточно характерная проблема с виртуализированными средами, где отображения аппаратных ресурсов (виртуальные устройства) могут вести себя не так стабильно, как настоящие аппаратные аналоги.
Применение
Для ваших задач это означает следующее:
-
Проверка сетевых интерфейсов: Начните с конфигурации
ifconfig -a6
, чтобы удостовериться, что все интерфейсы имеют верные IP-адреса и активированы. Здесь ключевую роль сыграет команда для IPV6, которая должна показывать правильные параметры, такие как UP, RUNNING для интерфейсов. -
Анализ драйверов: Убедитесь, что ваш виртуальный адаптер использует стабильный драйвер. Это можно осуществить через изменение конфигурации сети в файлах конфигурации QEMU или через интерфейсы управления, такие как libvirt.
-
Проверка маршрутизации: Команда
netstat -rn
дает представление о маршрутизации. Все маршруты должны быть актуальны и приведены в порядок. Это особенно важно для сетей IPv6. -
Диагностика сети: Используйте команды
ping
иtraceroute
для проверки доступности адресов. Это помогает точно определить, на каком этапе может происходить задержка или потеря пакетов. -
Состояние службы: Периодически проверяйте состояния сервисов в Solaris с помощью команды
svcs -a
, чтобы убедиться, что никакие важные службы не остаются по ошибке выключенными. -
Журналы и мониторинг: Журналы системных событий Solaris и сообщения #la помогут глубже понять, где могут скрываться ошибки. Разбор логов – это ключевой момент в диагностике.
-
Обновление и поддержка: Возможно, ваш гипервизор имеет обновления, которые могут решить проблемы совместимости с Solaris 10. Изучите документацию вашего гипервизора на предмет обновлений или улучшений совместимости.
Для решения подобных проблем следует провести полный цикл диагностики от настройки сетей и проверке драйверов до поиска и устранения аппаратных или программных сбоев в настройках виртуальной машины. Введение дополнительных тестов на другом гипервизоре или даже физических серверах также может дать больше информации о природе проблемы.