Posted at

ufwでNATとポートフォーワード

Ubuntu 18.04のufwでNATを作成する方法です。

それと、一部のPCへポートフォーワードを設定し、リモートからのsshも出来るようにしています。


環境


NATサーバー

WAN側:xxx.xxx.xxx.xxx

WAN側ゲートウェイ:yyy.yyy.yyy.yyy

LAN側:192.168.50.1

LAN内

192.168.50.0/24


NATサーバーのIPアドレスを固定に

NATサーバーはUbuntu 18.04ですので、50-cloud-init.yaml変更します。


/etc/netplan/50-cloud-init.yaml


network:
ethernets:
eth0:
addresses:
- xxx.xxx.xxx.xxx/24
dhcp4: false
gateway4: yyy.yyy.yyy.yyy
nameservers:
addresses:
- 8.8.8.8
search: []
eth1:
addresses:
- 192.168.50.1/24
dhcp4: false
gateway4: xxx.xxx.xxx.xxx
nameservers:
addresses:
- 8.8.8.8
search: []
version: 2

LAN内のPCは、192.168.50.2から振ってください。


ufwの設定

ポートフォーワードを有効にします。


/etc/default/ufw.  (ファイル名の.はいりません)

DEFAULT_FORWARD_POLICY=“ACCEPT"



/etc/ufw/sysctl.conf

net/ipv4/ip_forward=1


ufwコマンドから、ログの記録と、各ポートの通信を有効にします。

特にsshは、忘れないでください。

$ sudo ufw logging low

$ sudo ufw allow ssh
$ sudo ufw allow 53
$ sudo ufw allow 443
$ sudo ufw allow 80

NATとポートフォーワードの設定をします。

「*filter」より上か COMMIT より下に追加します。

*natの下の「-F」は、「ufw reload」のたびにnatテーブルが増えて行くのを防ぐために入れています。

「外側から内側」が文字通り、リモートからのsshでつなげるポートフォーワードの部分になります。

ここでは、WANの50001ポートにアクセスされたものを、LANの192.168.50.100に転送する設定をしています。


/etc/ufw/before.rules

# NAT

*nat
-F
:POSTROUTING ACCEPT [0:0]
# 内側から外側
-A POSTROUTING -s 192.168.50.0/24 -o eth0 -j MASQUERADE
# 外側から内側
-A PREROUTING -i eth0 -d xxx.xxx.xxx.xxx -p tcp --dport 50001 -j DNAT --to-destination 192.168.50.100:22
COMMIT

最後に、ufwを有効にします。

$ sudo ufw enable