Возможно, вы не включили пересылку в ядре -
Пытаться
echo 1 > /proc/sys/net/ipv4/forward
Если это решает проблему, сделайте ее постоянной, отредактировав /etc/sysctl.conf и добавив строку
net.ipv4.ip_forward = 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 назначения: моя внутренняя сеть
Next Hop: мой узел шлюза
Почему я не могу получить доступ в интернет на своих внутренних узлах? Что мне здесь не хватает?
Возможно, вы не включили пересылку в ядре -
Пытаться
echo 1 > /proc/sys/net/ipv4/forward
Если это решает проблему, сделайте ее постоянной, отредактировав /etc/sysctl.conf и добавив строку
net.ipv4.ip_forward = 1
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).