Debianのwinbindによる名前解決で複数のアドレスが指定されています


1

私のDNSサーバーが機能しなくなったときの代替手段として、winbindをDebianインストール環境にセットアップしようとしています。既存のサーバー設定で機能する方法を使用する必要があるため、(mDNS / Avahiなどの代替手段の代わりに)winbindを使用する必要があります。

Debianのインストールは以下から構成されています。

  • DebianがVirtualboxでゲストを圧迫する(4.1.18)
  • NATネットワークを備えたWindows XPホストOS
  • DebianゲストIPアドレス10.0.2.15
  • Subversion / Bugzillaのドメインコントローラに対するLDAP認証

WindowsホストマシンのIPアドレスは192.168.1.25です。

私たちのWindowsドメインコントローラはServer 2011 Essentialsであり、私はそれに関係しているものは何でも修正することができません。このIPアドレスは192.168.1.1です。

私はDebianインストールにwinbind、libnss_winbind、libpam_winbindをインストールしました。私は変わった hosts 並ぶ /etc/nsswitch.confhosts: files dns wins。私が使うなら nmblookup servername それから私は次のような出力を得ます:

querying servername on 10.0.2.255
169.254.2.33 servername<00>
192.168.1.1 servername<00>

サーバには2つのNICがあり、1つはプライベートアドレスを持ち、もう1つは内部ネットワークのアドレス(192 ...アドレス)を持ちます。私はすべてのNICのアドレスをチェックすることができる別のコンピュータを調べることによって、出力が何を表しているのかを確認しました。

私の問題は、私が次のようなものを使用した場合です。 ping それからそれは到達不可能であると報告された最初のアドレス(private 169 ...アドレス)を使用します。 ApacheがSubversionまたはBugZillaのLDAP認証を実行する場合など、他のネットワークコードにも同じことが当てはまります。

winbindが返す値を設定する方法、またはIPアドレスが返される前にIPアドレスに到達できるかどうかを確認するステータスチェックを実行する方法はありますか? winbindのドキュメントやオンラインには何もありません。

編集する route -n 以下を報告します。

Desintation Gateway  Genmask       Flags Metric Ref Use Iface
10.0.2.0    0.0.0.0  255.255.255.0 U     0      0   0   eth0
0.0.0.0     10.0.2.2 0.0.0.0       UG    0      0   0   eth0

私の内容 /etc/network/interfaces 次のようになりますが、私は現在、それがサブネットやルーティングの設定とどう関係しているのかわからない(つまり、そこに何かがあるようには見えません)。

auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet dhcp

これはホストからのルーティングテーブルです:

===========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0x2 ...00 13 72 e0 93 4d ...... Broadcom NetXtreme 57xx Gigabit Controller - Pac
ket Scheduler Miniport
0x3 ...08 00 27 00 90 b3 ...... VirtualBox Host-Only Ethernet Adapter - Packet S
cheduler Miniport
===========================================================================
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0    192.168.1.254    192.168.1.25       20
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1
      192.168.1.0    255.255.255.0     192.168.1.25    192.168.1.25       20
     192.168.1.25  255.255.255.255        127.0.0.1       127.0.0.1       20
    192.168.1.255  255.255.255.255     192.168.1.25    192.168.1.25       20
     192.168.56.0    255.255.255.0     192.168.56.1    192.168.56.1       20
     192.168.56.1  255.255.255.255        127.0.0.1       127.0.0.1       20
   192.168.56.255  255.255.255.255     192.168.56.1    192.168.56.1       20
        224.0.0.0        240.0.0.0     192.168.1.25    192.168.1.25       20
        224.0.0.0        240.0.0.0     192.168.56.1    192.168.56.1       20
  255.255.255.255  255.255.255.255     192.168.1.25    192.168.1.25       1
  255.255.255.255  255.255.255.255     192.168.56.1    192.168.56.1       1
Default Gateway:    192.168.1.254
===========================================================================
Persistent Routes:
  None

これは手動でネットワークに沿ってIPアドレスをpingした結果です。 tracerouteの出力には、最終目的地だけが表示されます( -I オプション)またはすべてのアスタリスク。そのため、宛先はホスト上の上記のルーティングテーブルに到達できるはずです。 VirtualBoxのゲストアドレス範囲はVirtualBoxアプリケーション自体によって管理され、ホストには公開されないため表示されないと思います。 10.0.2.2がNATネットワーク内のVirtualBoxゲートウェイであることがわかりました。 192.168.56.1はホストのIPアドレスです。

PING 10.0.2.2 (10.0.2.2) 56(84) bytes of data.
64 bytes from 10.0.2.2: icmp_req=1 ttl=63 time=0.498 ms
64 bytes from 10.0.2.2: icmp_req=2 ttl=63 time=0.490 ms
64 bytes from 10.0.2.2: icmp_req=3 ttl=63 time=0.516 ms
64 bytes from 10.0.2.2: icmp_req=4 ttl=63 time=0.515 ms

--- 10.0.2.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.490/0.504/0.516/0.029 ms
PING 192.168.56.1 (192.168.56.1) 56(84) bytes of data.
64 bytes from 192.168.56.1: icmp_req=1 ttl=128 time=0.755 ms
64 bytes from 192.168.56.1: icmp_req=2 ttl=128 time=1.04 ms
64 bytes from 192.168.56.1: icmp_req=3 ttl=128 time=0.545 ms
64 bytes from 192.168.56.1: icmp_req=4 ttl=128 time=0.606 ms

--- 192.168.56.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 0.545/0.738/1.047/0.194 ms
PING 192.168.1.25 (192.168.1.25) 56(84) bytes of data.
64 bytes from 192.168.1.25: icmp_req=1 ttl=128 time=0.610 ms
64 bytes from 192.168.1.25: icmp_req=2 ttl=128 time=0.639 ms
64 bytes from 192.168.1.25: icmp_req=3 ttl=128 time=0.570 ms
64 bytes from 192.168.1.25: icmp_req=4 ttl=128 time=0.659 ms

--- 192.168.1.25 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 0.570/0.619/0.659/0.041 ms
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_req=1 ttl=128 time=1.15 ms
64 bytes from 192.168.1.1: icmp_req=2 ttl=128 time=0.934 ms
64 bytes from 192.168.1.1: icmp_req=3 ttl=128 time=0.941 ms
64 bytes from 192.168.1.1: icmp_req=4 ttl=128 time=0.856 ms

--- 192.168.1.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 0.856/0.971/1.154/0.112 ms

そしてVirtualBoxは(NATゲートウェイが上記のログで到達可能であるため)NATを確実に使用しており、ホストのみのネットワークを使用していません。私のホストルーティングテーブルのHost Only Adapterは無効にしているので赤いニシンでしたが、それでも上記のようにpingを実行できます。 VirtualBoxのゲストネットワーク設定を表示している以下のスクリーングラブも参照してください。 VirtualBox guest network settings。それが私の設定を正しく使用することを妨げるいくつかのバグがない限り。設定の関連セクション:

  <Network>
    <Adapter slot="0" enabled="true" MACAddress="08002780662C" cable="true" speed="0" type="82540EM">
      <DisabledModes/>
      <NAT>
        <DNS pass-domain="true" use-proxy="false" use-host-resolver="false"/>
        <Alias logging="false" proxy-only="false" use-same-ports="false"/>
        <Forwarding name="http" proto="1" hostport="80" guestport="80"/>
        <Forwarding name="https" proto="1" hostport="443" guestport="443"/>
      </NAT>
    </Adapter>

私はsmb.confも答えに役立つことができると思います。
Alexander Kudrevatykh

回答:


1

Debian上の169.254.0.0ネットワークは設定不要のネットワークです。それはウィキペディア上で記述されています:

ゼロ構成ネットワーキングは、初心者ユーザーが(ゼロ)構成なしでネットワーク対応デバイスを相互接続することを可能にします、それはネットワーク上で利用可能なDHCPおよびDNSサーバーがないときに使用されます。

Zeroconfは以下を提供します。

ネットワークアドレスの自動割り当て(リンクローカル)   マルチキャストDNSを介したホスト名の自動解決   DNSサーバーを自動検出した後のネットワークサービスの自動検索(印刷)。

それはVMで安全に無効にすることができます、そうするためには、この行を含むようにファイル/ etc / default / avahi-daemonを修正します:

AVAHI_DAEMON_DETECT_LOCAL=0

これを行うと(そしてavahi-daemonサービスを再起動した後に)、169 ...サーバーは消えます。

編集:とにかく、あなたが接続性をテストする場合は、この小さなスクリプトは行います:

#!/bin/sh
ping -c1 TheIpWhoseConnectionYouWantToTest
if [ $? -eq 0 ]; then 
    Specify here the actions you wish to insert IF there is connection
fi

If you also wish to determine the Gateway automatically, you can do it as follows:

IP=$(route -n | grep UG | awk '{print $2}')
echo $IP

これは自動的にあなたのゲートウェイIPアドレスを返します


Debian VMにはavahiがインストールされておらず、私の知る限りでは( ifconfig (出力)リンクローカルIPv4アドレスはありません。 winbindによって報告されているリンクローカルアドレスは、他のコンピュータの2番目のNICに属しているため、Windowsにはリンクローカルアドレスが割り当てられていません。ターゲットホストは何らかの方法でソートしたすべてのIPアドレスを報告しているようで、winbindはホスト名検索のための最初のIPアドレスを報告しています。
tinman

ルーティングテーブルが正しく設定されていません。奇妙な間違い...それはあなたのデフォルトゲートウェイは10.02.0であり、ネットワークではなくPCであると言っています。ホスト仮想インタフェースがそれに設定されていると仮定して、おそらくこれを10.0.2.1に変更する必要があります。
MariusMatutiae

ホストのルーティングテーブルも表示できますか?
MariusMatutiae

加えて、私はDebianのルーティングテーブルの一部を使ってタイプミス(すみません、VMからコピーすることはできません)をしました、それは確かにネットワークではなくホストインターフェースを指しています。
tinman

あなたのホストルーティングテーブルはあなたがホストオンリーネットワークを持っていると言っています。ホストオンリーネットワークでも正しく設定されていません。ゲストIPが10.0.2.0ネットワークに属し、ホストが19.168.56.0に属していることがわかりますか?二人は互いに話すことはできません。ホストオンリーネットワークを修正するか、VMに192.168.1.0のLANへのアクセスを許可します。あなたはどちらを好みますか?
MariusMatutiae

1

まず第一に、私はあなたが間違った場所で問題を探していると述べたいと思います。

  • を含むすべてのプロトコル マルチキャストDNS そして winbind 安全に戻ることができるはずです すべて 利用可能なアドレス
  • それからあなたのアプリケーション(を含む ping )アドレス情報レコードのリストを取得するためにオペレーティングシステムのAPIを使うべきです。
  • 最後に、アプリケーションは接続に成功するまで情報レコードを1つずつ試してみる必要があります( ping ここでは正しいテストツールではないかもしれません。

トリックはそれでも winbind (または他のプラグイン)は複数のアドレスを含むリストを返します。それらすべてはあなたが連絡できる有効なアドレスであるべきです。それ以外の場合は、サーバーまたはネットワーク構成に問題があります。それでもアプリケーションが接続しようとしたときでも、それは拒否されるべきです。 宛先ホストに到達できません すぐにリストの次の項目を試すべきです。

上記が適用されず、サーバーもネットワーク構成もローカルアプリケーションも修正できない場合でも、あなたは失われません。オペレーティングシステムの名前解決API( getaddrinfo() (function)いくつかの基準に従ってリストを並べ替えます。そして、あなたは編集によってその基準に影響を与えることができます /etc/gai.conf これは主にIPv4アドレスとさまざまな種類のIPv6アドレスのバランスを設定するために導入されました。そのようにしながら winbind nsswitchプラグインは多数のアドレスを返します。 君は 誰がそれらのうちどれが優先されるかについての最後の言葉を持っています。

他の答えで述べたように、 169.254/16 アドレス空間は、IPv4リンクローカルアドレス用に予約されています。オペレーティングシステムは一般的に(はるかに良いサポートを持っているIPv6リンクローカルアドレスとは対照的に)IPv4リンクローカルアドレスをあまりサポートしていません。通常の方法は 避ける 適切なIPv4アドレスを持つホストのIPv4リンクローカルアドレス。

上記のいずれも不可能な場合は、インストール環境で/etc/gai.confを使用して、おそらくLinuxディストリビューションではデフォルトでもIPv4アドレスの優先順位を下げることをお勧めします。

また、あなたのローカルシステムはたぶんからのアドレスを持っていないので 169.254/16 サブネット あなたのリゾルバライブラリは結果からそのようなアドレスを削除できるはずです 手が届かない 。配布メンテナと議論を始めることを検討する価値があるかもしれません。

もう一つの解決策はあなたを守ることです winbind IPv4リンクローカルアドレスが予想どおりに機能する単一のイーサネットセグメント内のマシン。仮想化にはNATではなくネットワークブリッジを使用する必要があります。


ありがとう。私が最初に思っていたよりもはるかに大きなトピックであるように私はまだ私の質問に対する解決策を得ていません。あなたの答えはそれゆえに賞金として尋ねられた質問をカバーしています。
tinman

ありがとう。それでは、今の主な関心事は何ですか?
Pavel Šimerda

0

好奇心から、あなたのルートはデフォルトのルートが何であるかを示していますか? :route -nのようなものはあなたのシステムのデフォルトルートを表示します。

奇妙な理由で、169.254.0.0 / 16サブネットがどこかにデフォルトゲートウェイとして設定されている場合、私は興味があります。たぶんあなたのネットワーク設定、または/ etc / network / interfacesに、あなたはサブネット、ネットワーク、そして潜在的にあなたの "default"インターフェースのためのセットアップを持っていますか。


あなたが尋ねた情報については編集された質問を見なさい。
tinman
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.