rizloff
Linux

firewalld вместо iptables: открываем порт для Samba

2 мин чтения

Поставил Fedora 19 начисто на второй компьютер и полчаса не мог понять, почему с Windows не видно общую папку. Samba работает, пароль задан, а соединения нет. Оказалось, брандмауэр. В свежих Fedora это теперь firewalld, и правила iptables, которые я когда-то писал руками, к нему не подходят.

Зоны

firewalld раскладывает сети по зонам: домашняя, рабочая, публичная и так далее. У каждой зоны свой список того, что разрешено. Сетевая карта сидит в какой-то одной зоне.

Посмотреть, что где:

firewall-cmd --get-active-zones
firewall-cmd --list-services

Первая команда показывает, в какой зоне ваша сетевая карта, вторая — какие службы открыты в зоне по умолчанию. У меня карта была в public, а там разрешены только ssh и dhcpv6-client.

Открыть Samba

Порты руками перечислять не надо: у firewalld есть готовые описания служб, и Samba среди них.

su -c 'firewall-cmd --add-service=samba'

Сработало сразу, папка с Windows открылась. Но после перезагрузки снова закрыто: без ключа --permanent правило живет только до перезапуска. Чтобы навсегда:

su -c 'firewall-cmd --permanent --add-service=samba'
su -c 'firewall-cmd --reload'

С --permanent правило записывается в настройки, но в работающий брандмауэр не попадает, поэтому --reload. Я сначала сделал наоборот, только --permanent, и снова полчаса удивлялся.

Если нужен порт, для которого службы нет:

su -c 'firewall-cmd --permanent --add-port=8080/tcp'

Мышкой

Есть и окно с настройками, firewall-config. Там те же зоны и службы галочками, и переключатель вверху: «Текущая» или «Постоянная» конфигурация. Тот же подвох, что с --permanent.

Вернуть iptables

Кто привык к своим правилам, может выключить firewalld и вернуть старый сервис iptables, он в пакете iptables-services. Я не стал. Зоны, по-моему, удобная вещь: на ноутбуке в чужой сети одна зона, дома другая, и не надо держать в голове, что открыто.

Главное — не забывать --permanent, иначе после перезагрузки все сначала.

Что-то не сработало или нашли ошибку — напишите: rizloff@gmail.com или @rizloff в Telegram.