NAPTの構築 変えるファイルは3つ - /etc/default/ufw - /etc/ufw/sysctl.conf - /etc/ufw/before.rules

>の方に合わせる sudo 権限を使って書き換えること

$ diff /etc/default/ufw ufw
diff /etc/default/ufw ufw
19c19
< DEFAULT_FORWARD_POLICY="DROP"
---
> DEFAULT_FORWARD_POLICY="ACCEPT"

$ diff /etc/ufw/sysctl.conf sysctl.conf
diff /etc/ufw/sysctl.conf sysctl.conf
10c10
< #net/ipv4/ip_forward=1
---
> net/ipv4/ip_forward=1
$ sudo diff /etc/ufw/before.rules before.rules
diff /etc/ufw/before.rules before.rules
10a11,15
> *nat
> -F
> :POSTROUTING ACCEPT [0:0]
> -A POSTROUTING -s 192.168.20.0/24 -o ens160 -j MASQUERADE
> COMMIT
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:50:56:94:ea:ed brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.20.1/24 brd 192.168.20.255 scope global ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::250:56ff:fe94:eaed/64 scope link
       valid_lft forever preferred_lft forever
3: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:50:56:94:bf:15 brd ff:ff:ff:ff:ff:ff
    altname enp11s0
    inet 10.204.227.167/24 brd 10.204.227.255 scope global ens192
       valid_lft forever preferred_lft forever
    inet6 fe80::250:56ff:fe94:bf15/64 scope link
       valid_lft forever preferred_lft forever

/etc/ufw/before.rules ---追記内容(*filterの上に書く)---

/etc/ufw/before.rules
*nat
-F
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.20.0/24 -o ens192 -j MASQUERADE
COMMIT

napt.shを作成

napt.sh
#!/bin/bash
set -eux

ufw logging low
ufw allow ssh
echo "y" | ufw enable
ufw reload
ufw status verbose

$ sudo napt.sh
+ ufw logging low
Logging enabled
+ ufw allow ssh
Rules updated
Rules updated (v6)
+ echo y
+ ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? Firewall is active and enabled on system startup
+ ufw reload
Firewall reloaded
+ 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
22/tcp (v6)                ALLOW IN    Anywhere (v6)