ぷちスタディ@AWS DHCPオプションセットの設定

前回、EC2のDNSを緊急避難的に設定しましたがdockerブリッジインターフェイス上でのコンテナ展開が原因でインスタンスのステータスチェックで接続性エラーが出ていたことを悔い改めるとともにdnsmasqコンテナで簡易DNSをアップ、DHCPオプションセットの設定をした顛末をここに記します。

前回、ぷちスタディ@docker-compose IPアドレス固定 でEC2のインスタンスのステータスチェックで「インスタンスの接続性チェックに失敗しました。」と出たのでdockerブリッジインターフェイスIPv4に合わせてコンテナを起動しました。

原因はインスタンスのプライベートIPとコンテナのブリッジIPのセグメントの相違でした。

今回は、お使いのVPCのDHCPオプションセットを設定、dnsmasqを簡易ネームサーバーとしてコンテナ起動したので経緯をめもします。

[エラーの出ていたネットワーク構成]

インスタンスIPv4アドレス 172.31.15.141
docker ブリッジIPアドレス 172.31.0.0/24
コンテナゲートウェイ 172.31.0.1
dnsmasq ネームサーバー 172.31.0.2
wordpressのIPアドレス 172.31.0.3

[インスタンスIP(eth0)に従ってコンテナIP固定した構成]

インスタンスIPv4アドレス 172.31.15.141
コンテナサブネット 172.31.15.0/24
コンテナゲートウェイ 172.31.15.1
dnsmasq ネームサーバー 172.31.15.2
mysqlのIPアドレス 172.31.15.3
wordpressのIPアドレス 172.31.15.4
https-portalのIPアドレス 172.31.15.10

VPCのDHCPオプションセットでネームサーバーを設定する

DHCP オプションセットのドメイン名を変更すると EC2 のホスト名も変更されるのか確認してみた | DevelopersIO

1.DHCPオプションセットを作る

2.VPCに適用する

続いて [02] docker-compose を使って即座に dnsmasq を立てる (解説) を参考に既存のdocker-compose.yml にサービスを追加して同一サブネット上に dnsmasq を建てることにしました。

vi docker-compose.yml
  
・
・
  dnsmasq:
    restart: always
    image: 4km3/dnsmasq
    container_name: mydnsmasq
    environment:
      TZ: "Asia/Tokyo"
    ports:
      - "53:53/udp"
      - "53:53/tcp"
    # PC を DNS に登録したい場合は ./PV/etc/dnsmasq.d/add_hosts を編集する
    volumes:
      - './PV/etc/dnsmasq.d:/etc/dnsmasq.d'
    networks:
      wp000net1:
        ipv4_address: 172.31.15.2
    dns:
      # 本ファイルの「dns」に対して、上位の DNSサーバを定義してしまえば、
      # PV/etc/dnsmasq.d/my.conf に上位 DNSサーバを定義する手間が省ける.
      - 8.8.8.8
      - 127.0.0.1
    cap_add:
      - NET_ADMIN

docker-compose up -d してdnsmasq のコンテナIPを確認。

docker-compose exec -it mydnsmasq /bin/sh -c "cat /etc/hosts"
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.31.15.2     ffc7fa388d26

digでwordpressコンテナIPを確認。

[ec2-user@sanaru wordpress]$ dig sanaru.info

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.5.2 <<>> sanaru.info ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24032 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;sanaru.info. IN A ;; ANSWER SECTION: sanaru.info. 600 IN A 172.31.15.4 ;; Query time: 0 msec ;; SERVER: 172.31.15.2#53(172.31.15.2) ;; WHEN: Wed Jan 11 15:43:50 JST 2023 ;; MSG SIZE rcvd: 56

インスタンス再起動すると接続性チェックに合格しました。

同じカテゴリーの記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です