
ポート 443 で https 経由で配信される Web サイトをホストするサーバーがあります。Web サイトはパブリック インターネットに直接公開されていませんが、トラフィックはパブリック IP を持つ EC2 インスタンスから VPN 経由でルーティングされます。
ウェブサイトには、EC2 インスタンス以外のホスト サーバー、同じ内部ネットワーク上のコンピューター、VPN 上のコンピューターからアクセスできます。
openssl s_client -connect www.mydomain.tld:443
これらのマシンのいずれかからコマンドを発行すると、次の応答が返されます。
CONNECTED(00000003)
depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = R3
verify return:1
depth=0 CN = cloud.hss.ac.uk
verify return:1
---
Certificate chain......
[Truncated for brevity]
ただし、EC2 インスタンス、または内部ネットワークや VPN ネットワークの外部のマシンから同じコマンドを発行すると、次の応答が返されます。
CONNECTED(00000003)
つまり、接続はできるのですが、SSL 証明書がないということですか?
Apache conf ファイルでログ レベルをデバッグに設定すると、SSL 証明書が提供されていることが示されますが、何らかの理由で EC2 インスタンスに到達しません。
EC2インスタンスは、IFtablesを使用して、ポート80と443の受信リクエストをホスティングサーバーにNATするだけです。設定は次のとおりです。/etc/nftables.conf
#!/usr/sbin/nft -f
flush ruleset
table ip nat {
chain prerouting {
meta nftrace set 1
type nat hook prerouting priority -100; policy accept;
iifname "eth0" tcp dport { 80, 443 } dnat to x.x.x.x
counter
}
chain postrouting {
meta nftrace set 1
type nat hook postrouting priority 100; policy accept;
masquerade
}
}
これらはすべてポート 80 で正常に動作します。
アイデアが尽きてきたので、ここで探しています。
関係があるなら、VPN は Hamachi VPN です。
IP 転送が有効になっています:
sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1