zaki work log

作業ログやら生活ログやらなんやら

[コマンドメモ] firewall-cmd備忘録 (firewalld)

firewall-cmdをたまにしか使わないので覚えられず、いつもブログの過去記事から探してるので、まとめておく。

2022.08.03: ポートフォワードを追記

設定確認

デフォルトゾーンの設定を見る

[zaki@k8s-master01 ~]$ sudo firewall-cmd --list-all [--zone=internal]
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources: 
  services: dhcpv6-client ssh
  ports: 6443/tcp 2379-2380/tcp 10250/tcp 10251/tcp 10252/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

ゾーン指定する場合は--zone=***を付ける

全てのゾーンの設定を見る

[root@k8s-master02 ~]# firewall-cmd --list-all-zones 
block
  target: %%REJECT%%
  icmp-block-inversion: no
  interfaces:
  sources:
  services:
  ports:
  protocols: 
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:


dmz
  target: default
  icmp-block-inversion: no
  interfaces:
:
:

ゾーン関係

一覧

[zaki@manager ~]$ sudo firewall-cmd --get-zones 
block dmz drop external home internal public trusted work

アクティブなゾーンの一覧

[zaki@manager ~]$ sudo firewall-cmd --get-active-zones 
internal
  interfaces: ens224
public
  interfaces: ens192 ens256

ゾーンに指定インタフェースを設定

sudo firewall-cmd --permanent --zone=trusted --change-interface=cni0

ゾーンから指定インタフェースを削除

sudo firewall-cmd --permanent --zone=trusted --remove-interface=cni0

[Kubernetes] kubeadmを使ってCentOSへk8sクラスタをデプロイしてみた (firewalld有効版) - zaki work log

ポートの公開

ポート番号指定

$ sudo firewall-cmd --add-port=6443/tcp --permanent [--zone=public]
$ sudo firewall-cmd --reload

[Kubernetes] kubeadmを使ってCentOSへk8sクラスタをデプロイしてみた (firewalld有効版) - zaki work log

サービス名を指定

$ sudo firewall-cmd --add-service=tftp --permanent [--zone=internal]
$ sudo firewall-cmd --reload

dnsmasqを使ったDHCP/PXE/TFTPでネットワークブートとインストール - zaki work log

サービス名を確認

$ sudo firewall-cmd --get-services
RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns dns-over-tls docker-registry docker-swarm ...
...

ポートフォワード

自ホストの別ポートへ転送

リモートからの443/tcpアクセスを、自分の80/tcpへ転送する

firewall-cmd --add-forward-port=port=443:proto=tcp:toport=80

自ホストのアクセスを別ホストへ転送

リモートからの443/tcpアクセスを、172.29.0.14:443へ転送する

firewall-cmd --add-forward-port=port=443:proto=tcp:toport=443:toaddr=172.29.0.14

ダイレクトルール

iptablesの書式に慣れてたらこっちも良いかも。

設定

firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -o ens192 -j MASQUERADE
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ens224 -o ens192 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ens192 -o ens224 -m state --state RELATED,ESTABLISHED -j ACCEPT

確認

firewall-cmd --direct --get-all-rules

2nicなCentOS7にIPマスカレード処理させてルーターにする(firewalld) - zaki work log