小さなホームサーバーがあり、ラップトップ上のプログラムがLANとWANの両方からアクセスできるようにしたいと考えています。これを実現する最もクリーンな方法は、カスタムホスト名を定義し、接続先のネットワークに基づいて異なる方法で解決することだと思います。
言い換えれば、ホスト名を解決することは可能ですか[〜#〜] x [〜#〜] IPアドレスとして[〜#〜] a [〜#〜] ifネットワークに接続Foo、IPアドレスとして[〜#〜] b [〜#〜]それ以外の場合は?
ArchLinuxとnetctl
をネットワークマネージャーとして使用しています。私が望むことを達成する方法は、Fooのネットワークプロファイルにフックを設定して、何らかの方法でhostsファイルを変更することだと思いますが、後者の方法がわかりません。
もちろん、もっと良い解決策についても聞きたいです。
この問題はdnsmasq
で解決しました。質問の例に従って、ラップトップでDNSキャッシュとして機能するようにdnsmasq
を設定した後に行ったことを次に示します。
ディレクトリを作成します/etc/hosts.d
次のスクリプトを/etc/netctl/X/
に入れて、実行可能にします
#!/bin/sh
# /etc/netctl/X/X_local.sh
echo 'A X' > /etc/hosts.d/X
chmod 744 /etc/hosts.d/X
#!/bin/sh
# /etc/netctl/X/X_remote.sh
echo 'B X' > /etc/hosts.d/X
chmod 744 /etc/hosts.d/X
/etc/netctl/Foo
ExecUpPost=/etc/netctl/X/X_local.sh
ExecDownPre=/etc/netctl/X/X_remote.sh
addn-hosts=/etc/hosts.d
を/etc/dnsmasq.conf
に追加しますこれは、addn-hosts
オプションがdnsmasq
に追加のホスト名の関連付けを/etc/hosts.d
ディレクトリで探すように指示するために機能します。