背景
さくらVPSでWebサーバーを立ち上げていたが再起動後にHTTPSが通らなくなった時のメモ。
構成
シンプルなWebサーバーとAPサーバーの構成。
- Web サーバー:
- AP サーバー:
- Let’s Encrypt と Node.js のサーバー
なお、ファイアウォールの設定には UFW を使用している。
症状
外部から HTTPS で VPS にアクセスできない。
状況
次の状況だった。
- インスタンスのパケットフィルターは無効化 (さくら VPS 版のセキュリティグループ)
- DNS の A と C レコードは正しく外から VPS に向かっていた (dig で確認)
- 22 番と 80 番はアクセスが可能だった
- UFW で 22, 80, 443 は許可していた (もちろん enabled)
- インスタンス内からだと 443 でもアクセスが可能だった
原因
- iptables の設定だった。
- さくら VPS では iptables の設定もする必要があった。
解決策
さくら VPS の Ubuntu 20.04 では、下のように設定されていた。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| $ cd /etc/iptables
$ cat rules.v4
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
|
これに試しに 443 を追加した。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| *filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
|
その後設定を反映したら外部からアクセスが出来た。
1
| $ sudo iptables-restore < /etc/iptables/rules.v4
|
結論
さくら VSP では、iptables も設定する必要があった。
参考文献