0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

FirewalldでZone間転送を行う

0
Last updated at Posted at 2026-03-02

現状確認

以前の記事でFedoraServerゾーンに所属するIFのパケットを通すためにPublicゾーンのSourcesに通したいサブネットを追加していましたが、結局それってPublicゾーンにみんなが所属しただけでした。

で結局Publicゾーンにもサービスを追加しないと動かなくなったりしていました。
ちがう、そうじゃない(ヾノ・∀・`)ナイナイ

やりたいことは、こういった構成とゾーンの設定があって

FedoraServer (default, active)
  target: default
  ingress-priority: 0
  egress-priority: 0
  icmp-block-inversion: no
  interfaces: enp0s20f0u1 wlo1
  sources:
  services: cockpit dns kerberos samba ssh
  ports: 8096/tcp
  protocols:
  forward: yes
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

public (active)
  target: default
  ingress-priority: 0
  egress-priority: 0
  icmp-block-inversion: no
  interfaces: enp1s0
  sources:
  services:
  ports: 8096/tcp
  protocols:
  forward: yes
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

このお互いが完全に独立した状態のFirewall設定で、FedoraServerに所属するenp0s20f0u1,wlo1からpublicに所属するenp1s0を通ってインターネットにアクセスしたいわけです。

デフォルトゲートウェイはenp1s0に設定しています。

/etc/NetworkManager/system-connections/enp1s0.nmconnection
[ipv4]
address1=192.168.11.254/24
dns=127.0.0.1;
method=manual
gateway=192.168.11.1  # ここに書くと永続化する
$ ip route
default via 192.168.11.1 dev enp1s0 proto static metric 101
192.168.0.0/24 dev enp0s20f0u1 proto kernel scope link src 192.168.0.254 metric 100
192.168.1.0/24 dev wlo1 proto kernel scope link src 192.168.1.254 metric 600
192.168.11.0/24 dev enp1s0 proto kernel scope link src 192.168.11.254 metric 101

ホームルーターにはenp0s20f0u1とwlo1に向かうサブネットのときはenp1s0に向かうようWebインターフェイスで設定しています。

image.png

この状態でFirewalldを停止すれば快適に動きます。

逆に言うと、Firewalldを正しく設定しないとFedoraServerとpublicのゾーン間でパケットがfilterされてしまうのです。

転送ポリシーの追加

転送ポリシーというFirewalldの機能を使っていきます。

まず現状確認、すでになにかいますね。

$ sudo firewall-cmd --get-active-policies
allow-host-ipv6
  ingress-zones: ANY
  egress-zones: HOST

ingressがsrc、egressがdist側になるようです。

ここにFedoraServer_to_publicという新しいポリシー……にしたら名前を20文字以下にしろと怒られたので、internal_publicと短い名前で作っていきます。

# ポリシーの作成
$ sudo firewall-cmd --permanent --new-policy internal_public
$ sudo firewall-cmd --permanent --policy internal_public --add-ingress-zone FedoraServer
$ sudo firewall-cmd --permanent --policy internal_public --add-egress-zone public
$ sudo firewall-cmd --permanent --policy internal_public --set-target ACCEPT

# 反映
$ sudo firewall-cmd --reload

# 確認
$ sudo firewall-cmd --info-policy internal_public
internal_public (active)
  priority: -1
  target: ACCEPT
  ingress-zones: FedoraServer
  egress-zones: public
  ...

ingressからegressゾーンに向かう際のipフィルターがACCEPTに設定され、Zone間をパケットが通るようになりました。

これだけ!😊

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?