Ubuntu 22.04
Sponsored Link

UFW : IP マスカレードの設定2022/10/06

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

[1] Forward ポリシーを有効にします。
root@dlp:~#
vi /etc/default/ufw
# 19行目 : 変更

DEFAULT_FORWARD_POLICY="
ACCEPT
"
root@dlp:~#
vi /etc/sysctl.conf
# 28行目 : コメント解除

net.ipv4.ip_forward=1
# 設定リロード

root@dlp:~#
sysctl -p

root@dlp:~#
ufw reload

[2] UFW デフォルト設定に加えて、Internal 側の任意のコンピューターが、[10.0.0.30] をゲートウェイとして、インターネット側に接続できるよう設定します。
root@dlp:~#
ufw status verbose

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), allow (routed)
New profiles: skip

root@dlp:~#
vi /etc/ufw/before.rules
.....
.....
# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT

# 最終行に追記
# NAT
*nat
-F
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.0.0.0/24 -o enp1s0 -j MASQUERADE

COMMIT

root@dlp:~#
ufw reload

[3] 例として、[2] の設定に加えて、下記設定を追加します。
* External 側の [enp1s0] で受信した 22 番と 80 番ポート宛てのパケットを Internal 側のホスト [10.0.0.51] の同ポートへ転送
* External 側の [enp1s0] で受信した 3306 番ポート宛てのパケットを Internal 側のホスト [10.0.0.52] の同ポートへ転送
root@dlp:~#
ufw allow ssh

Rule added
Rule added (v6)
root@dlp:~#
ufw allow http

Rule added
Rule added (v6)
root@dlp:~#
ufw allow mysql

Rule added
Rule added (v6)
root@dlp:~#
ufw status verbose

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), allow (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere
80/tcp                     ALLOW IN    Anywhere
3306/tcp                   ALLOW IN    Anywhere
22/tcp (v6)                ALLOW IN    Anywhere (v6)
80/tcp (v6)                ALLOW IN    Anywhere (v6)
3306/tcp (v6)              ALLOW IN    Anywhere (v6)

root@dlp:~#
vi /etc/ufw/before.rules
.....
.....
# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT

# NAT
*nat
-F
:POSTROUTING ACCEPT [0:0]
# 追記
:PREROUTING ACCEPT [0:0]

-A PREROUTING -p tcp --dst 192.168.0.30 -m multiport --dports 22,80 -j DNAT --to-destination 10.0.0.51
-A POSTROUTING -p tcp --dst 10.0.0.51 -m multiport --dports 22,80 -j SNAT --to-source 10.0.0.30

-A PREROUTING -p tcp --dst 192.168.0.30 --dport 3306 -j DNAT --to-destination 10.0.0.52:3306
-A POSTROUTING -p tcp --dst 10.0.0.52 --dport 3306 -j SNAT --to-source 10.0.0.30

-A POSTROUTING -s 10.0.0.0/24 -o enp1s0 -j MASQUERADE

COMMIT

root@dlp:~#
ufw reload

関連コンテンツ