Доступ в Интернет по внутренней сети с помощью IPTables

608
keysersoze

В частном облаке, который я настраиваю, у меня есть несколько виртуальных машин 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: мой узел шлюза

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

1

2 ответа на вопрос

0
davidgo

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

Пытаться

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

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

net.ipv4.ip_forward = 1 
0
A.B

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).

Похожие вопросы