Я пытаюсь понять различия между двумя конфигурациями сети для MAAS. Насколько я понимаю, обе они решают одни и те же задачи, когда первая сеть подключается к Интернету, а вторая управляется MAAS. Вторая сеть затем настраивается для пересылки трафика через интерфейс общедоступной сети.
Несмотря на достижение тех же результатов, конфигурация выглядит несколько иначе, и в этом мое замешательство.
Первая предложенная конфигурация взята со следующей страницы Wiki Cloudbase Solutions . Они предлагают простое /etc/network/interfaces
с eth0
подключением к внешней сети и eth1
, идущим во внутреннюю сеть и получающим статический адрес:
# The primary network interface (external)
auto eth0
iface eth0 inet dhcp
# The secondary NIC (used internal for MAAS)
auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0
Соответствующие iptables
правила затем сохраняются. в /etc/rc.local
. Насколько я могу судить, это как-то связано с пересылкой сетевого трафика между eth1
и eth0
.
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
Вторая конфигурация взята из Ubuntu Openstack Installer для Multi Installer Guide . Их файл /etc/network/interfaces
имеет больше сетевых интерфейсов, но похож на предыдущую конфигурацию, где eth0
подключается к внешней сети, а eth1
является внутренним:
# The loopback network interface
auto lo
iface lo inet loopback
dns-nameservers 127.0.0.1
pre-up iptables-restore < /etc/network/iptables.rules
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet manual
auto br0
iface br0 inet static
address 172.16.0.1
netmask 255.255.255.0
bridge_ports eth1
Вопросы, которые всплывают в моей голове на данном этапе Почему lo
имеет DNS-сервер имен и iptables
применяется к нему? Почему в этом случае используется мостовое соединение?
Их правила iptable
также выглядят по-разному и помещены в /etc/network/iptables.rules
и предполагают, что это позволяет пересылку трафика:
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 172.16.0.1/24 ! -d 172.16.0.1/24 -j MASQUERADE
COMMIT
Может кто-нибудь помочь объяснить, что они делают по-другому и почему?
Дайте мне знать, если этот вопрос слишком велик, и я могу разделить его на отдельные вопросы, но вначале я подумал, что это обеспечит больше контекста.
Обе конфигурации в значительной степени совпадают с некоторыми нюансами.
iface lo inet loopback
dns-nameservers 127.0.0.1
pre-up iptables-restore < /etc/network/iptables.rules
Эта конфигурация гарантирует, что даже если ваш кабель eth0 будет отключен во время загрузки, у вас все равно будут установлены DNS-преобразователь и правила брандмауэра (сложно избавиться от петлевого сетевого устройства, верно?). Конечно, в этом примере предполагается, что у вас будет локально запущенная служба распознавания DNS.
Не вижу проблем с настройкой мостового устройства. Эта конфигурация должна работать без проблем, но на самом деле не думайте, что она вам нужна в вашем случае, если только вы не планируете что-то, что будет использовать ее (например, виртуальные машины KVM).
В первом случае правила iptables написаны для сценария оболочки, поэтому их синтаксис выглядит иначе, чем /etc/network/iptables.rules, который следует использовать с iptables-restore.
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 172.16.0.1/24 ! -d 172.16.0.1/24 -j MASQUERADE
COMMIT
Здесь есть только одно правило, и оно позволяет маскировать подсеть 172.16.0.0/24.
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
Вышеуказанные правила позволяют маскировать любую подсеть, идущую от eth1 через eth0, с использованием некоторой фильтрации.
Лично я предпочел бы пойти со смесью конфигураций выше.
Первая конфигурация сети довольно понятна. Файл / etc / network / interfaces знаком всем и, конечно, при использовании MAAS необходима переадресация IP через iptables, чтобы обеспечить доступ к Интернету для узлов, управляемых MAAS.
Вторая конфигурация, отличная от части DNS и части br0, понятна. Часть DNS заключается в том, чтобы заставить сервер MAAS понять, что он сам размещает службы DNS. Эта строка может быть перемещена в /etc/resolve.conf, который включает другие конфигурации DNS. Если эта запись DNS не сделана, вы увидите эту ошибку во время начальной загрузки JUJU: https://github.com/Ubuntu-Solutions-Engineering/openstack-installer/issues/901
Однако Я не совсем уверен насчет моста br0. Эта конфигурация сети действительно работала?