無料のDDNSサービスieServerの更新作業をcurlで自動化している人もそれなりにいると思います。
先日Raspberry Pi 4を入手したのでRaspberry Pi OS busterを入れて、ieServerに対してcurlコマンドを使用したところ、
curl: (35) error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure
とエラー。どうやらサーバー側のSSLが脆弱性のある古いものの場合、最近のクライアントは接続拒否する らしい。SSLライブラリで拒否しているみたいなのでwgetでもエラー。
サーバー側が対応してくれるのが一番いいのですが、とりあえずクライアントで対処してみます。古いcurlにダウングレードするのも手ですが、問題があるから接続拒否するようになったわけで、他サーバーへのアクセスまで巻き込みたくない。というわけで古いcurlを入れたDockerコンテナを作り、ieServerだけこいつでアクセスすることにします。
まずDockerfile。Alpineを使いたいところですがARMがサポートされだした3.6でもcurlがエラーを出したのでDebian Jessieにしてます。x86ならAlpineでも行けるかと。FROM debian:8.11-slim RUN apt-get update && apt-get install -y curl CMD curl -X POST -F "username=$USERNAME" -F "password=$PASSWORD" -F "domain=$DOMAIN" -F 'updatehost=1' https://ieserver.net/cgi-bin/dip.cgiビルド&ラン。sudo省略 & 全角は各自の環境に置き換えてください。
docker build -t イメージタグ . docker run -e USERNAME=ユーザー名 -e PASSWORD=パスワード -e DOMAIN=ドメイン --name コンテナ名 イメージタグieServerのIP更新ページ にアクセスして、アドレス更新時刻がdocker runが終わった時くらいになっていれば成功。次回からはcronなどで
docker container start コンテナ名で回せば良いかと。
[参考]
Comments