Firewalld с псевдонимом IP (eth0:0)

Firewalld с псевдонимом IP (eth0:0)

(Решение найдено, см. ниже...)

Сервер (CentOS 7) имеет несколько публичных IP-адресов, они настроены через обычные ifcfg-eth0:0файлы конфигурации и работают нормально. Я пытаюсь адаптироваться к firewalld (исходя из iptables). Мне нравится возможность указывать открытые порты для каждого псевдонима IP - с iptables это делалось просто путем установки IP-адреса назначения в соответствии с любым псевдонимом, которому требовался порт.

ямысльс помощью firewalld я мог бы применить разные зоны к каждому интерфейсу, чтобы добиться того же эффекта, однако, похоже, я не могу этого сделать.

Начнем с:

# firewall-cmd --get-active-zones
public
  interfaces: eth0 eth0:0
trusted
  interfaces: eth1

Я создал новую зону public_web, которую хотел использовать дляeth0:0

# firewall-cmd --permanent --new-zone=public_web
success
# firewall-cmd --permanent --zone=public_web --add-service=http
success
# firewall-cmd --permanent --zone=public_web --add-interface=eth0:0
success
# firewall-cmd --reload
success

Но...

# firewall-cmd --get-active-zones
public
  interfaces: eth0 eth0:0
trusted
  interfaces: eth1

Я пробовал --remove-interface, --change-interfaceи различные другие команды в разных порядках, но eth0:0не сдвинулось с места. Я не могу найти нигде никакой документации об использовании псевдонимов, поэтому я не уверен, является ли это правильным способом достижения того, что я хочу?

Спасибо всем.


Решение:

Решением является использование destinationтега в файле службы; его можно использовать только один раз для каждой службы.

Допустим, вам нужен порт 443 на 87.98.256.512, сделайте копию файла https.xml(рекомендую не трогать оригиналы) в /etc/firewalld/services, здесь я буду использоватьhttps-admin.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>HTTPS for 87.98.256.512</short>
  <description>...</description>
  <port protocol="tcp" port="443"/>
  <destination ipv4="87.98.256.512" />
</service>

Затем

# firewall-cmd --permanent --zone=public --add-service=https-admin
success
# firewall-cmd --reload
success
# firewall-cmd --zone=public --list-services
http https-admin

И наконец, подтвердите это с помощью iptables

Chain IN_public_allow (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            87.98.256.512        tcp dpt:443 ctstate NEW
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 ctstate NEW

Помните: destinationна одну услугу можно назначить только один тег, поэтому просто создайте несколько услуг, если это вам необходимо.

решение1

Вся функциональность псевдонимов интерфейсов осталась от прошлого. Фактически она не создает отдельный интерфейс. Вам уже давно не нужно использовать псевдонимы для назначения нескольких IP-адресов одному интерфейсу. Поскольку это не «настоящий» интерфейс, программное обеспечение вашего брандмауэра не может рассматривать его как настоящий интерфейс. Если вы используете команду, ip addrвы увидите, что все адреса назначены основному интерфейсу, а eth0:0просто считается меткой для этого адреса.

Учитывая все это, я не совсем уверен, что вам нужно сделать, чтобы настроить ваш брандмауэр. Я подозреваю, что вам может потребоваться указать порты по IP, а не по IP-адресу и не по псевдониму.

Связанный контент