CentOS Stream 8
Sponsored Link

Firewalld : IP マスカレードの設定2021/03/02

 
Firewalld における IP マスカレードの設定です。
当例では以下のような環境で設定します。
          Internet
-------------+-------------
      Gateway|10.0.0.1
             |
External     |
       enp1s0|10.0.0.30
+------------+------------+
|                         |
|      dlp.srv.world      |
|                         |
+------------+------------+
       enp7s0|192.168.0.30
Internal     |
             |

[1] それぞれのインターフェースのゾーン設定を変更します。
# 現在の状態を表示

[root@dlp ~]#
firewall-cmd --get-active-zone

public
  interfaces: enp1s0 enp7s0

# ゾーン変更

[root@dlp ~]#
nmcli connection modify enp7s0 connection.zone internal

[root@dlp ~]#
nmcli connection modify enp1s0 connection.zone external
[root@dlp ~]#
firewall-cmd --get-active-zone

external
  interfaces: enp1s0
internal
  interfaces: enp7s0
[2] External 側のゾーンに IP マスカレードの設定をします。
# IP マスカレードを設定

[root@dlp ~]#
firewall-cmd --zone=external --add-masquerade --permanent

success
[root@dlp ~]#
firewall-cmd --reload

success
# 確認

[root@dlp ~]#
firewall-cmd --zone=external --query-masquerade

yes
# [ip_forward] はマスカレーディング有効化により自動的に有効となる

[root@dlp ~]#
cat /proc/sys/net/ipv4/ip_forward

1
[3] 例として、External 側のゾーンへ来た 22 番ポート宛てのパケットをローカルの 1234 番ポートへ転送する。
(これより以下全て、永続化する場合は [--permanent] オプションを付加)
[root@dlp ~]#
firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=1234

success
[root@dlp ~]#
firewall-cmd --list-all --zone=external

external (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp1s0
  sources:
  services: ssh
  ports:
  protocols:
  masquerade: yes
  forward-ports:
        port=22:proto=tcp:toport=1234:toaddr=
  source-ports:
  icmp-blocks:
  rich rules:
[4] 例として、External 側のゾーンへ来た 22 番ポート宛てのパケットを、他ホスト [192.168.0.31] の 22 番ポートへ転送する。
[root@dlp ~]#
firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=22:toaddr=192.168.0.31

success
[root@dlp ~]#
firewall-cmd --list-all --zone=external

external (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp1s0
  sources:
  services: ssh
  ports:
  protocols:
  masquerade: yes
  forward-ports:
        port=22:proto=tcp:toport=1234:toaddr=
        port=22:proto=tcp:toport=22:toaddr=192.168.0.31
  source-ports:
  icmp-blocks:
  rich rules:
[5] 例として、Internal ネットワーク [192.168.0.0/24] 内の任意のコンピュータから [dlp.srv.world] を経由して External 側へ出ていくパケットの転送/許可設定です。
# internal ゾーンに IP マスカレードを設定

[root@dlp ~]#
firewall-cmd --zone=internal --add-masquerade --permanent

success
[root@dlp ~]#
firewall-cmd --reload

success
[root@dlp ~]#
firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -o enp1s0 -j MASQUERADE

[root@dlp ~]#
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i enp7s0 -o enp1s0 -j ACCEPT

[root@dlp ~]#
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i enp1s0 -o enp7s0 -m state --state RELATED,ESTABLISHED -j ACCEPT

関連コンテンツ