NATテーブル溢れ対策の第三弾です。前回はTailscaleの通信を削減しましたが、今回はGoogle Homeの通信を対策します。
NATテーブル溢れ対策
Tailscaleで利用するDERPサーバーのリージョンを制限する
現状確認
第1弾の対策記事でGoogle HomeのGoogle DNSリクエストの数の多さについて言及しました。
すべてがDNS通信ではなく、Google Homeから通信すべてをカウントしたものですが24時間で各デバイス7千〜1万回の通信が行われています。この通信数は内部宛の通信もカウントしていますが、宅内メインのNASより多い通信数をしていて異常とも言える通信数です。
1分に1回程度Google DNSへのアクセスが行われており、DHCPで別のDNSサーバーを配信してもかたくなにGoogle DNSへのアクセスを行います。今回はこの通信を無理矢理宅内のDNSサーバーへ書き換える事で通信数を削減します。
UniFi Dream Machineの設定
現在、ルーターはUniFi Dream Machine(以下、UDM)を利用しています。DHCPでのDNSサーバーはUDM宛のxxx.xxx.xxx.254に設定しています。UDMからはオンプレしているAdGuard Homeに問い合わせています。
今回はUDM側のNATでGoogle DNSへのアクセスをUDM宛として書き換え、最終的にはAdGuard Homeに問い合わせるようにします。
UDM側で設定からポリシーを新規作成します。ポリシーの設定は下記の画像を参考に設定してください。
種類はDest.NATを選択します。Interfaceは今回対象としたいIoT用のVLANを指定しています。セキュリティが脆弱になりやすいIoTデバイスをVLANを分けてネットワーク分離を行っています。今回指定するオンプレのDNSサーバーと同じVLAN内にある場合はSourceの設定を正しくしないとすべてのDNS通信がループしてしまうので注意してください。
Translated IP AddressはIoT VLANのルーターのIPを指定しました。IoTネットワークからServerネットワークへの接続は弾いているのでルーター宛に指定してルーター側がオンプレDNSに問い合わせるようにします。
Sourceは今回はVLAN内のIoTデバイスすべてを対象として問題なにのでAnyに指定しています。
DestinationはIPのListとして8.8.8.8と8.8.4.4を指定しています。ポートは53単体で良いのですがIPをListにするとポートもListにしないと設定できなかったのでポートもListで設定しています。
動作確認
動作確認のためにAdGuard HomeでDNS書き換え設定を追加します。今回はudm.ynr.jpでルーターのIPを引けるように設定しました。
これでIoT用のVLANにスマホを接続してDNSの設定を8.8.8.8に設定します。その状態でudm.ynr.jpにアクセスしてルーターの管理画面が見られれば動作確認OKです。
この設定を行ってもUDMのInsight上ではGoogle DNSのアクセスログは減少しませんでした。
しかしAdGuard Homeのクエリ数は合計4万回ほど24時間で増えましたし、NATテーブル不足もより起こりづらくなったので無事対策はできていると思います。
自宅には4台のGoogle Homeがありますが4台で24時間4万回もDNSが叩かれるのはどうにかならないものかと思います……複数台のGoogle Homeがあれば同期して音楽を流せるのでこの機能で自宅内どこにいても音楽が聞こえて良いなーと思っているのですがこの通信量をだと端末数を増やせないので困りものです……