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

(Найденное решение, посмотрите ниже...),

Сервер (CentOS 7) имеет несколько общедоступный дюйм/с, они настраиваются через обычное 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 тег на сервис, поэтому просто сделайте многочисленные услуги, если это - Ваше требование.

5
задан 9 July 2015 в 12:17
1 ответ

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

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

.
5
ответ дан 3 December 2019 в 01:37

Теги

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