背景
WAN側に来たポート80,443のパケットをLAN内のサーバに転送する設定。
例のごとくCLIで設定を行う。
前回までの設定を前提としている。
サーバのIPアドレスは192.168.0.2/24。
Firewallの設定
# set firewall name WAN_IN rule 30 action accept
# set firewall name WAN_IN rule 30 destination address 192.168.0.2
# set firewall name WAN_IN rule 30 destination port 80,443
# set firewall name WAN_IN rule 30 protocol tcp
上記設定、ご指摘いただいたので修正した。
- # set firewall name WAN_IN rule 30 destination address 192.168.0.2/24
+ # set firewall name WAN_IN rule 30 destination address 192.168.0.2
特定のホストのネットマスクなんてルータからしたらどうでもよく、指定しなくてもよいそう。
ホスト単体を指定するなら、192.168.0.2/32が正しい。
ネットワーク範囲なら192.168.0.0/24が正しい。
今回の場合は、ホスト単体を指定しているがなしでもいけるので上記のようにした。
NATの設定
「vyOSと同じだろう」と思って試したが、NATがなかったので焦った。
よく見たらservice内にあったので解決。
ポート80と443の記述が冗長な気がする。
あと、ポートの指定も。
# set service nat rule 10 description "port forward to Server (http)"
# set service nat rule 10 destination port 80
# set service nat rule 10 inbound-interface pppoe0
# set service nat rule 10 inside-address address 192.168.0.2
# set service nat rule 10 inside-address port 80
# set service nat rule 10 protocol tcp
# set service nat rule 10 type destination
# set service nat rule 20 description "port forward to Server (https)"
# set service nat rule 20 destination port 443
# set service nat rule 20 inbound-interface pppoe0
# set service nat rule 20 inside-address address 192.168.0.2
# set service nat rule 20 inside-address port 443
# set service nat rule 20 protocol tcp
# set service nat rule 20 type destination
気になること
逆向きの設定(SNAT)はいらないのかな?
なんとなくで設定して、これでSSHやhttp使えてるけど。
ステートフルなNATなため要らない、とご指摘いただきました。
今回の設定で入ってきたパケットから始まるTCPセッションを追いかけていくので、戻りもTCPセッションが閉じるまで変換され続けるそう。