【git】ローカルにgitリポジトリーを構築してDNSで外部から接続するその3 DNS設定、外部接続

概要

gitリポジトリーの構築は可能になったので外部ネットワークからリポジトリーをクローンなどできるようにします。

ドメインhoge.com
gitのドメインgit.hoge.com

として設定を進めていく。

ご自身のグローバルIPアドレスは確認しておきましょう。

ルーター側の設定

自身のルータの設定Webサイトにアクセスしてポートマッピングを行う。

自分はAterm WG1900HP2を利用しているので参考程度。

ご自身のgitリポジトリーのローカルIPアドレスに対してポート番号を設定します。

ここではgitリポジトリー構築でssh接続を行っているのでポート番号は22です。

NECはポート番号をWAN側とLAN側で変更できないみたいなのでどちらも同じです。

DNSレコード設定(お名前.com)

お名前.comの自身で取得したドメインを選択して「ネームサーバーの設定」から「DNS設定/転送設定」を選択

グローバルIPアドレスを固定していない場合

定期的にグローバルIPアドレスが変更されてそのたびにお名前.comのDNSを設定しなおさないといけないのはとても面倒です。なのでリポジトリーサーバから定期的にグローバルIPアドレスとお名前.comに登録したグローバルIPアドレスを比較して更新するようにします。

リポジトリーサーバーでシェルスクリプト(update-onamae-dns.sh)を書きます。

# 設定 update-onamae-dns.sh
domain="ドメイン名"   # お名前.comで購入したドメイン名
onamecom_userid="ユーザー名"   # お名前.comのユーザ名
onamaecom_passwd="パスワード" # お名前.comのパスワード
target_hostname="git"          # 更新したいホスト名
target_domain="${domain}"   # 更新したいドメイン名
dig_domain="${target_hostname}.${target_domain}"

# 現在のグローバルIPアドレスを取得
current_global_ip_addr=$(curl inet-ip.info)

# 現在、ドメイン名に紐づいているグローバルIPアドレスを取得
domain_ip_addr=`dig ${dig_domain} +short`
echo "check now ${current_global_ip_addr} dnss ${domain_ip_addr}"

# ドメイン名に紐づいているIPアドレスを更新
if [ "${current_global_ip_addr}" != "${domain_ip_addr}" ]; then
  command_line="LOGIN\nUSERID:${onamecom_userid}\nPASSWORD:${onamaecom_passwd}\n.\nMODIP\nHOSTNAME:${target_hostname}\nDOMNAME:${target_domain}\nIPV4:${current_global_ip_addr}\n.\nLOGOUT\n.\n"
  echo -e "${command_line}" | openssl s_client -connect ddnsclient.onamae.com:65010 -quiet
  echo "更新をしました。${domain_ip_addr} => ${current_global_ip_addr}"
else
  echo "更新は、必要ありませんでした。"
fi

cronで定期実行するので

crontab -e

どのような時間で実行するかを定義する

00 9 * * * シェルスクリプトのパス/update-onamae-dns.sh > ログを出力したい場合は指定/cron.log

この場合は毎日9:00に実行するようにしている。

終わりに

実際に外部ネットワークから自分のサーバーに構築したgitリポジトリーをクローンなどできるようになったら変な容量制限などなくなるので便利、だたプルリクエストやマージリクエストなどはないので個人製作で行うことになりそう。

コメント