Главный ответ от dougBTV неправильный. Я не могу ответить на его ответ, потому что у меня еще нет необходимых точек повторения, поэтому я объясню здесь:
Он использует зону по умолчанию "public". Он связывает сети с этой зоной, а затем открывает порты в этой зоне. Но в конфигурации по умолчанию весь трафик проходит через зону по умолчанию, а не только в исходные сети, к которым вы привязаны. Так что его команды --add-source не имеют значения, и его команды --add-port теперь позволили всему миру получить доступ к этим портам.
Второй ответ Нормунда Калнберзиньша правильный. Вы хотите создать отдельную зону, привязать свою сеть / IP-адреса к этой зоне и открыть порты в этой зоне.
Кроме того, вы можете оставить все в зоне по умолчанию и использовать богатые правила firewalld, чтобы разрешить доступ с определенных IP:
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.2.2" accept'
Это разрешает весь трафик с 192.168.2.2 на все порты, и поскольку я не указал зону, она будет применена к зоне по умолчанию "public" (используйте --get-default-zone, чтобы проверить, какая у вас зона по умолчанию, и - get-active-zone, чтобы увидеть, какие зоны используются в данный момент).
Чтобы разрешить доступ с этого IP только к определенному порту, я бы сделал:
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.2.2" port port="1234" protocol="tcp" accept'
Рекомендуется запускать эти команды без --permanent (или, для краткости, --perm), который влияет на текущий запущенный брандмауэр. После проверки того, что ваше правило работает, запустите его снова с добавленным параметром --perm, чтобы его запомнили при последующих перезагрузках firewalld.