min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

fedora30 自宅に内部DNSサーバを立てて、グローバルIP公開している自宅サーバの名前解決を「自宅内から」可能にする

自宅サーバfedora30に内部DNSサーバを立てたくなった。きっかけはwordpress

f:id:min117:20191230133517p:plain

インストールはすんなり終わったけど、名前解決に難がある。ヘアピンNATが必要。

 

要はこうしたい。仮にDDNSサービス(dip.jpとか)でグローバルIPを取得して自宅サーバを公開しているとして

 

家の外(職場とか)から接続する時はdip.jpはグローバルIPとして解決してほしい

家の中(自宅内部)から接続する時はdip.jpは自宅内WebサーバのIPにしてほしい

 

そうしないと、自宅サーバにあるWordPressアドレスサイトアドレスがこんな設定になっている場合に

f:id:min117:20191230164611p:plain

家の外(職場)からは接続できるのに

家の中(自宅内)から接続できない という状況に陥ってしまう。

 

<結論>

自宅に内部DNSを立てて解決できる。設定はこれ。

sudo vim /etc/named.conf

f:id:min117:20191230162859p:plain

内部DNS:192.168.3.11 今回立てるfedora30 ← まずこれでdip.jpを名前解決して

外部DNS:192.168.3.1 NTTのルータ ←  無理だった場合に初めてこっちに行く

 

似たような相談がネットにもあった。

teratail.com

f:id:min117:20191230164153p:plain

f:id:min117:20191230164223p:plain

この回答者のいう「ローカルネットワークに内部DNSを用意する」が今回の対応。

 

 

 

<詳細>

BINDで内部DNSを立てる。

www.hiroom2.com

この記事そのままで my.net というドメインを名前解決してみる。これがうまくいけば、my.net を dip.jp に書き換えるだけでうまくいくはず。

 

まずはBINDをインストールする。

$ yum -y install bind

f:id:min117:20191230074023p:plain

sudo -s して進める。

$ cd /etc

$ sudo -s

# cp named.conf named.conf_original

f:id:min117:20191230134855p:plain

# vim /etc/named.conf

 

f:id:min117:20191230165130p:plain

recursion yes にしておくことで内部DNSで名前解決できないときに外部DNS(NTTのルータ)に聞きに行ってくれるようになる。

f:id:min117:20191230175716p:plain

www.eis.co.jp

 

# cat /etc/named.conf | grep directory

# vim /var/named/my.net.zone

f:id:min117:20191230135722p:plain

 

# vim /var/named/my.net.zone

f:id:min117:20191230141044p:plain

f:id:min117:20191230141006p:plain

 

設定をチェック。

# sudo named-checkconf

# sudo named-checkzone my.net /var/named/my.net.zone

f:id:min117:20191230141214p:plain

 

ファイアウォールに穴あけする。

# sudo firewall-cmd --add-service=dns --permanet

# sudo firewall-cmd --reload

f:id:min117:20191230141454p:plain

 

namedの自動起動を設定する。

# sudo systemctl enable named

# sudo systemctl start named

f:id:min117:20191230141622p:plain

 

クライアントになるPCを設定する(Linuxの場合はresolv.confで名前解決設定)

# cat /etc/resolv.conf

# cp /etc/resolv.conf /etc/resolv.conf_original

f:id:min117:20191230142000p:plain

# sudo vim /etc/resolv.conf

f:id:min117:20191230142827p:plain

search と nameserver の組みを登録する。

 

pingでテスト。

# ping -c 4 fedora30.my.net

f:id:min117:20191230142927p:plain

素晴らしい。

 

同じくクライアントでも、macOSの場合は(resolve.confではなくて)画面からDNSを設定する。こうなる。

f:id:min117:20191230170738p:plain

内部DNS:192.168.3.11 今回立てるfedora30 ← まずこれでdip.jpを名前解決して

外部DNS:192.168.3.1 NTTのルータ ←  無理だった場合に初めてこっちに行く

末尾1(NTTルータ)を設定しておく必要はない。/etc/named.conf で recursion yes にしたから

 

digで自宅内のクライアント(macOS)から名前解決してみる。

f:id:min117:20191230172323p:plain

グローバルに晒してる名前(***.dip.jp)にdigしたのに、しっかりと自宅内サーバ(192.168.3.11)で名前解決されている。Linux最高すぎる。

 

次回はポート変換(NAT)も試してみる。

 

参考)

park1.wakwak.com

 

www.eis.co.jp

f:id:min117:20191230201820p:plain

f:id:min117:20191230201903p:plain

SOAMNAMEの末尾のドット忘れるとdigが何かおかしくなる気がする。

f:id:min117:20191230202054p:plain