LoginSignup
1
0

More than 1 year has passed since last update.

ESP32 / Arduino でDHCPでIPを取得後にDNSサーバを変更する方法

Last updated at Posted at 2022-08-20

ESP32 / Arduino でDHCPでIPを取得後にDNSサーバを変更する方法

ESP32/Arduinoで、DHCPでIPを取得しつつ、DNSサーバのみ独自に設定したいことがあり、その方法を試行錯誤しました。

結論

lwip/dns.h をincludeし、DHCPでWIFIに接続した後に、set_dnsserver()で設定できました。

setdns.cpp
#include "lwip/dns.h"
...
void setup()
{
  WiFi.begin("XXXX", "YYYY");
  while (WiFi.status() != WL_CONNECTED) delay(1000);
  ip_addr_t dnsserver = IPADDR4_INIT_BYTES(8,8,8,8);  // googleのDNSサーバを使う
  dns_setserver(0,&dnsserver);
  ...

現在設定されているDNSサーバ設定は使いつつ、リストの最後に追加する場合

setdns.cpp
#include "lwip/dns.h"
...
void setup()
{
  WiFi.begin("XXXX", "YYYY");
  while (WiFi.status() != WL_CONNECTED) delay(1000);
  for(int i=0;i<DNS_MAX_SERVERS;i++){
    if(WiFi.dnsIP(i)==IPAddress(0,0,0,0)){
      ip_addr_t dnsserver = IPADDR4_INIT_BYTES(8,8,8,8);
      dns_setserver(i,&dnsserver);
      break;
    }
  }
  ...
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0