1

В частном облаке, который я настраиваю, у меня есть несколько виртуальных машин RHEL, сети и маршрутизатор в openstack. Мой маршрутизатор подключен к общедоступному Интернету, а мой узел шлюза подключен к маршрутизатору и имеет доступ в Интернет через eth0. Узел подключен к внутренней сети по eth1. У меня есть несколько внутренних узлов RHEL, подключенных к внутренней сети через их интерфейсы eth0. Все узлы могут пинговать друг друга, и я считаю, что файлы ifcfg для каждого узла настроены правильно.

Используя IPTables, я попытался предоставить внутренним узлам доступ в Интернет:

iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT  
iptables -A FORWARD -i eth0 -o eth1 -m conntrack -ctstate ESTABLISHED,RELATED -j ACCEPT  
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Я также включил пересылку ipv4 (по умолчанию отключено) на уровне ядра. После сохранения конфигурации и SSHing во внутренний узел я не могу пропинговать внешние адреса:

# ping 8.8.8.8
connect: Network is unreachable

Мой роутер в openstack имеет статический маршрут с
CIDR назначения: моя внутренняя сеть
Следующий прыжок: мой узел шлюза

Почему я не могу получить доступ в интернет на своих внутренних узлах? Что мне здесь не хватает?

2 ответа2

0

Network is unreachable значит, не определен маршрут для достижения 8.8.8.8. Это, скорее всего, проблема, возвращаемая непосредственно виртуальной машиной, которая находится в виртуальной машине, а не в хосте.

OpenStack имеет много различных возможных сетевых конфигураций. Вы просто написали «сети» и не дали никакой информации об IP-адресах виртуальных машин. Надеемся, что неизвестных настроек нет (промежуточные сети с промежуточными NAT сделаны), на каждой виртуальной машине вам нужно добавить маршрут по умолчанию через набор IP на интерфейсе eth1 вашего маршрутизатора. если бы этот IP был, например, 10.0.2.1, то это сделало бы это:

ip route add default via 10.0.2.1

Для постоянных настроек его следует добавить в его конкретный файл конфигурации (см. Статические маршруты и Шлюз по умолчанию от Redhat).

0

Возможно, вы не включили пересылку в ядре -

Пытаться

echo 1 > /proc/sys/net/ipv4/forward

Если это решит проблему, сделайте его постоянным, отредактировав /etc/sysctl.conf и добавив строку

net.ipv4.ip_forward = 1

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