たぶん動く...

多分GIS系の人。あくまで個人的見解であり、所属団体を代表するものではありません。

IPv6のみのEC2を一か月稼働させた料金

3月よりAdGuad HomeをIPv6のみのEC2サーバで稼働させています。

AdGuard HomeをAzure VMで稼働させる - たぶん動く...

その記事では、月額費用の見積もりをしました。2024年4月丸々一か月稼働させました。今回は費用がいくらかかったか確認します。

  • かかった費用について
続きを読む

VPCフローログを観察する (IPv6)

ipv4を使用しないEC2でAdGuard Homeを現在運用していますが、たまにAdGuard Homeのログを観察すると、自宅のISPが使用するアドレスと携帯キャリアのアドレスしかありませんでした。 ipv4を使用していたときは海外からよくわからん場所からのクローラーと思われるアクセスがあったりしましたが、AdGuard Homeのダッシュボードを見る限り、ipv6のみにした場合は、自分の身に覚えのあるアクセスログがありませんでした。
ほんとうに、身に覚えのあるアクセスしかないのか、フローログを採ってみてログを見てみます。

どこのフローログを採る?

フローログを採るタイミングが2か所あるように思われます。 VPCフローログとENIネットワークログです。

VPCフローログではACLに対する評価 ACCEPT/REJECTを行います。 ENIネットワークフローログの場合は、セキュリティグループの評価 ACCEPT/REJECT を行います。今回はどの特定のポートで通信を許可した、弾いたを観察したいのでENIフローログを採取してみます。

フローログの設定

こちらのサイトを参考に、IAMロールの設定とフローログの設定を行いました。
ログ出力の保存期間は7日とします。

フローログを観察する

しばらく日を置いてから、DNSサーバへアクセスしてきたIPアドレスをLog Insightsで調べてみます。
まずはアクセスしてきたIPアドレスとその回数を出力してみます。

実行したクエリ

fields @timestamp, srcAddr, dstAddr, srcPort, dstPort
| filter dstAddr = '<DNSサーバのIPアドレス>' | stats count() as AccessCount by srcAddr
| sort AccessCount desc

クエリ結果

アクセスが多い順に並べると、身に覚えのないIPv6がありました。しかも1番アクセスしてくるアドレスが知らないアドレスとは...
2620:fe:0:0:0:0:0:10 が誰が使っているのか IPひろば で調べてみると、 Quad9クローラーのようです。 14番目の 2001:500:13:0:0:0:0:46 については、whois.arin.net が所有していることが分かりました。 whois情報作成のための、クローラーがアクセスしてきているのかもしれません。

次に、セキュリティグループの設定で許可していない(身に覚えのない)、80番や22番へのアクセス履歴はないか、調べてみます。

fields @timestamp, srcAddr, dstAddr, srcPort, dstPort, action
| filter dstAddr = '2406:da14:a37:8d00:c617:170:5bc1:98e1' and dstPort in ['22','80']

クエリ結果

身に覚えのない22番ポートへの通信、またセキュリティグループで許可されていない80番への通信は拒否されていることもわかりました。 アクセス数でいうと、iPv4に比べて少ない印象を受けます。
2a06:4880:a000:0:0:0:0: というIPアドレス群がアクセスして生きていますが、こちらは internet-measurement.com というところのクローラーのようです。 ipv4のときはもっといろいろなクローラーがアクセスしてきたように思います。

所感

ログの量だけをみた感覚ですが、ipv4のときよりもipv6のほうが、クローラー等の知らないアドレスからのアクセスが少ないような印象を受けました。 比較対象としてipv4インスタンス立てて同じようにログ収集すればよかった...

参考文献

VPC Flow Logs で取得したフローログを CloudWatch Logs に発行する - technical notes

CloudWatch Logsを使用して、VPCフローログを覗いてみよう

AdGuard HomeをEC2で稼働させる (IPv6)

前回の記事ではAdGuard HomeをAzure VM上で稼働させました。稼働開始から約3か月が過ぎ、Certbotで導入したSSL証明書の期限近づいてきたのでこの際より安い価格のコンピューティングサービスを提供しているAWSに乗り換えます。さらなるコスト削減を目的としてIPv4を使用しない、IPv6のみで稼働させます。

月額費用の比較

2024年2月 1月でAdGuard Homeの維持費がいくらだったか見てみます。

サービス 料金(円/月)
VM (Standard B1ls) 698.9
VMディスク (Standard SSD LRS) 427.66
パブリックIPv4アドレス Static Public IP 513.98
合計 1737.56

VMディスクが30GBあるのでそこでかかってしまってますね... あとグローバルIPアドレスの維持費も高い...

AWSで稼働させる際には、以下の設定で組みたいと思います。ひとまずネットワーク転送量は無視します。またIPv4は使用しません。

サービス 想定料金(円/月)
EC2インスタンス (t3a.nano) 667.5
EBS (gp3) 8 GB 115.5
合計 783

※ 1$ = 150円換算

t4g.nanoでもいいのですが、CloudWatchとかログ収集ツールも動かしたいので余裕をもたせるためにt3a.nanoを選択しました。 現在の半額くらいの値段で稼働できる??? これなら費用対効果が期待できそうです。

VPCの設定

IPv6での送信/受信ができるようにVPCの設定を追加します。 こちら を参考にして、IPv6専用のサブネットを作成しました。筆者の場合は、ルートテーブルに Egress Only インターネットゲートウェイを使用しているため、これに追加してIPv6で送受信できるように専用のルートテーブルを作成しました。

VPC内の通信フローは以下のようなイメージです。

IPv6の割り当てについて

IPv4の場合、動的割り当てだと、EC2インスタンスを停止、開始するたびに新しいIPv4アドレスが割り当てられます。 IPv6の場合はどうでしょうか? インスタンスを終了しない限り、同じアドレスを使用することができるようです。

IPv6 アドレスは、インスタンスの停止して起動、または休止して起動する際には保持され、インスタンスの終了時にリリースされます。IPv6 アドレスは、別のネットワークインターフェイスに割り当てられている間は再割り当てできません。最初に割り当てを解除する必要があります。

Amazon EC2 インスタンスの IP アドレス指定 - Amazon Elastic Compute Cloud

AdGuard Homeの導入

前回と同様の手順でAdGuard Homeを導入します。 AdGuard HomeをAzure VMで稼働させる - たぶん動く...

1か月後くらいに見積もりと実績を比較してみたいと思います。

参考文献

VPC に IPv6 サポートを追加する - Amazon Virtual Private Cloud

Amazon EC2 インスタンスの IP アドレス指定 - Amazon Elastic Compute Cloud

AWS EC2をIPv6のみ(パブリックIPv4アドレスなし)で作ってssh接続する #AWS - Qiita

AdGuard HomeをAzure VMで稼働させる

筆者のスマホソフトバンクのミニフィットプランを契約しています。外出中はスマホでゲームをしたり、動画をみたりしないので、3GBあればデータ通信量は十分なはずですでした。しかし最近出社する頻度が増えたことで通勤の電車の中でスマホでXをみたり、2chまとめを見ていたせいか、3GB以上を使い通信制限に遭うようになりました。(契約変えろよって話ですが...)
そこで今回は、AdGuard Homeを使用して、自前のDNSサーバを作成しネット広告を減らすことでスマホのデータ通信料を削減したいと思います。

続きを読む

NSGフローログを確認する

AzureでVMの通信ログを取得しようとしたとき、Azure FirewallNSGフローログ、ネットワーク診断ツールなどが挙げられると思います。さらにAzureではTraffic Analyticsなど可視化ツールも用意されています。 今回は AdGuard HomeでDNSサーバをVMで作成し、しばらくスマホDNSサーバとして運用しました。NSGフローログで取得したトラフィックを見てみたいとおもいます。

  • 構成図
  • NSGフローログを設定
  • NSGフローログのファイルを確認する
  • Traffic Analysisでログを可視化する
  • 参考文献
続きを読む

オンプレ環境からAzure Database フレキシブルサーバへ接続する方法 3パターン

Azureのデータベースサービスである Azure Database for MySQLフレキシブルサーバーを触る機会があり、その際にローカル環境から接続する方法について調べる(悩む)ことがありました。いくつかパターンが考えられるので挙げていきます。
仕事でAzure Database for MySQL フレキシブルサーバーやAzure Database for PostgreSQL フレキシブルサーバーへオンプレ(ローカル)環境から接続したいときの参考にしてください。

続きを読む

データベースサービスを停止し忘れていたら止めるAzure Functions

以前、AWSのRDSを起動していて停止し忘れていたらスケジュールで止めるLambdaを作成しました。

RDS停止を忘れていたら止めるLambda - たぶん動く...

Azureを最近使用しており、Azure Database for MySQLを使用後、停止するのを忘れて不用意に課金されてしまう事態が度々発生しました。
AWSだとLambdaをスケジュールでRDSを起動、停止するPythonスクリプトがネットで探すとよく出て来ますが、Azure Functionsで同じような試みをしている記事が出てこないので作ってみました。
今回は、StopDBというAzure Functionsを作成し、その中でStopMySQLという関数を作成します。Azure Functionsを毎日22時に起動する設定とします。

  • サクッと作りたい人へ
  • 諸注意
  • ローカル環境を整備する
  • ローカルで関数プロジェクト作成
  • ローカル関数コーディング
  • 関数アプリ作成
  • 関数アプリのデプロイ
  • カスタムロール作成
  • ロール付与
  • PostgreSQLはどうする?
  • データベースを起動したい
  • 今回作成したリソース
  • 参考文献
続きを読む