Resolusi nama winbind debian memberikan banyak alamat - bagaimana cara memilih satu?

1

Saya mencoba membuat winbind diatur pada instalasi Debian sebagai fallback ketika server DNS kami gagal berfungsi. Saya harus menggunakan winbind (bukan alternatif seperti mDNS / Avahi) karena saya harus menggunakan metode yang akan bekerja dengan pengaturan server kami yang ada.

Instalasi Debian terdiri dari:

  • Debian memeras tamu di Virtualbox (4.1.18)
  • Windows XP host OS dengan jaringan NAT
  • Alamat IP tamu Debian 10.0.2.15
  • Digunakan untuk Subversion / Bugzilla dengan otentikasi LDAP ke pengontrol domain

Mesin host Windows memiliki alamat IP 192.168.1.25.

Pengontrol domain Windows kami adalah Server 2011 Essentials dan saya tidak memiliki akses untuk memperbaiki apa pun yang terjadi dengannya, jadi saya hanya dapat mencari solusi (menggunakan winbind) sampai diurutkan. Alamat IP yang satu ini adalah 192.168.1.1.

Saya menginstal winbind, libnss_winbind dan libpam_winbind pada instalasi Debian. Saya mengubah hosts antri /etc/nsswitch.conf untuk hosts: files dns wins. Jika saya gunakan nmblookup servername maka saya mendapatkan output berikut:

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

Tampaknya ada dua NIC di server, satu memiliki alamat pribadi dan yang lain memiliki alamat di jaringan internal kami (192 ... alamat). Saya telah memverifikasi bahwa apa yang diwakili oleh output dengan mencari komputer lain di mana saya dapat memeriksa alamat semua NIC.

Masalah saya adalah jika saya menggunakan sesuatu seperti ping kemudian ia menggunakan alamat pertama yang dilaporkan (alamat pribadi 169 ...), yang tidak dapat dijangkau. Hal yang sama berlaku untuk kode jaringan lain, seperti ketika apache melakukan otentikasi LDAP untuk Subversion atau BugZilla.

Apakah ada cara untuk mengkonfigurasi nilai yang mengembalikan winbind, atau membuatnya melakukan pemeriksaan status untuk melihat apakah alamat IP dapat dijangkau sebelum mengembalikannya? Saya belum menemukan apa pun di dokumentasi winbind atau online.

Edit: route -n melaporkan yang berikut:

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

Konten saya /etc/network/interfaces adalah sebagai berikut, tetapi saya saat ini tidak yakin apa yang harus dilakukan dengan pengaturan subnet atau perutean (mis. sepertinya tidak memiliki apa pun di sana):

auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet dhcp

Ini tabel routing dari host:

===========================================================================
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

Berikut ini adalah hasil ping alamat IP secara manual di sepanjang jaringan. Output traceroute saya hanya menunjukkan tujuan akhir (jika saya menggunakan -I opsi) atau semua tanda bintang. Jadi tujuan harus dapat dijangkau dengan tabel routing di atas pada host. Saya berasumsi rentang alamat tamu VirtualBox tidak muncul karena dikelola oleh aplikasi VirtualBox itu sendiri dan tidak terkena host. Saya menemukan bahwa 10.0.2.2 adalah gateway VirtualBox dalam jaringan NAT. 192.168.56.1 adalah alamat IP untuk host

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

Dan VirtualBox pasti menggunakan NAT (karena gateway NAT dapat dijangkau di log di atas) dan tidak menggunakan jaringan hanya host. Host Only Adapter di tabel routing host saya adalah herring merah karena saya telah menonaktifkannya dan masih bisa melakukan ping seperti di atas. Lihat juga screengrab di bawah ini yang menunjukkan pengaturan jaringan tamu VirtualBox: VirtualBox guest network settings. Kecuali ada beberapa bug yang mencegahnya menggunakan konfigurasi saya dengan benar. Bagian yang relevan dari konfigurasi:

  <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>
tinman
sumber
Saya pikir smb.conf juga bisa membantu untuk menjawab.
Alexander Kudrevatykh

Jawaban:

1

Jaringan 169.254.0.0 pada Debian adalah jaringan tanpa konfigurasi. Ini dijelaskan di Wikipedia sebagai:

Jaringan konfigurasi nol memungkinkan pengguna pemula untuk menghubungkan perangkat yang diaktifkan jaringan tanpa konfigurasi (nol) apa pun, ini digunakan ketika tidak ada DHCP dan server DNS yang tersedia di jaringan.

Zeroconf menyediakan:

Penetapan otomatis alamat jaringan (tautan-lokal)   Resolusi otomatis nama host melalui DNS multicast   Lokasi otomatis layanan jaringan (mis. Pencetakan) setelah menemukan server DNS secara otomatis.

Itu dapat dinonaktifkan dengan aman di VM, Untuk melakukannya, Anda memodifikasi file / etc / default / avahi-daemon untuk mengandung baris ini:

AVAHI_DAEMON_DETECT_LOCAL=0

Ketika Anda melakukan ini (dan setelah me-restart layanan avahi-daemon), server 169 ... akan hilang.

EDIT: Bagaimanapun, jika Anda menguji konektivitas, skrip kecil ini akan melakukan:

#!/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

Ini akan mengembalikan IP gateway Anda secara otomatis

MariusMatutiae
sumber
Debian VM tidak memiliki avahi yang diinstal dan sejauh yang saya bisa lihat (dari ifconfig output) tidak memiliki tautan alamat IPv4 lokal. Tautan alamat lokal yang dilaporkan oleh winbind milik NIC kedua komputer lain yang tidak terhubung dengan apa pun sehingga Windows memberi mereka alamat lokal tautan. Host target tampaknya melaporkan semua alamat IP yang telah disortir dengan cara apa pun dan winbind melaporkan yang pertama untuk pencarian nama host dan kebetulan itu adalah alamat lokal tautan yang tidak terhubung dengan apa pun.
tinman
tabel perutean Anda tidak terkonfigurasi dengan benar. Kesalahan aneh ... dikatakan gateway default Anda adalah 10.0.2.0, yang merupakan jaringan, bukan pc. Anda harus mengubahnya, kemungkinan besar, ke 10.0.2.1, dengan asumsi antarmuka virtual host Anda diatur untuk itu.
MariusMatutiae
Bisakah Anda menunjukkan tabel routing host juga?
MariusMatutiae
Ditambahkan, ditambah saya telah membuat kesalahan ketik (maaf, saya tidak bisa menyalin dari VM) dengan bagian dari tabel routing Debian, memang menunjuk ke antarmuka host, bukan jaringan.
tinman
Tabel perutean host Anda mengatakan Anda memiliki jaringan hanya host, yang tidak akan pernah mengizinkan Anda untuk berbicara dengan jaringan 192.168.1.0 Anda, menurut definisi. Bahkan jaringan host-only tidak dikonfigurasi dengan benar: dapatkah Anda melihat ip tamu Anda milik jaringan 10.0.2.0, sedangkan host milik 19.168.56.0? Keduanya tidak dapat berbicara satu sama lain. Saya dapat memperbaiki jaringan host-only, atau memberikan akses VM Anda ke LAN 192.168.1.0. Yang mana yang Anda sukai?
MariusMatutiae
1

Pertama-tama saya ingin menyatakan bahwa Anda mencari masalah di tempat yang salah.

  • Semua protokol termasuk DNS multicast dan winbind harus dapat kembali dengan aman semua alamat yang tersedia.
  • Kemudian aplikasi Anda (termasuk ping ) harus menggunakan API sistem operasi untuk mendapatkan daftar catatan informasi alamat.
  • Akhirnya, aplikasi Anda harus mencoba catatan informasi satu per satu sampai berhasil terhubung ping mungkin bukan alat tes yang tepat di sini).

Kuncinya adalah meskipun winbind (atau plugin lain) mengembalikan daftar yang berisi banyak alamat, semuanya harus alamat yang valid yang dapat Anda hubungi. Kalau tidak, ada masalah di server atau di konfigurasi jaringan. Tetapi bahkan ketika aplikasi mencoba untuk terhubung, itu harus ditolak host tujuan tidak dapat dijangkau dan harus segera mencoba item berikutnya dalam daftar.

Bahkan jika hal di atas tidak berlaku dan Anda tidak dapat memperbaiki server atau konfigurasi jaringan atau aplikasi lokal, Anda tidak hilang. API resolusi nama sistem operasi (the getaddrinfo() fungsi) mengatur ulang daftar sesuai dengan beberapa kriteria. Dan Anda dapat memengaruhi kriteria itu dengan mengedit /etc/gai.conf yang diperkenalkan sebagian besar untuk mengkonfigurasi keseimbangan antara alamat IPv4 dan berbagai jenis alamat IPv6. Dengan begitu, selagi Anda winbind Plugin nsswitch mengembalikan sejumlah alamat, itu kamu siapa yang memiliki kata terakhir yang mana yang akan disukai.

Sebagaimana dinyatakan dalam jawaban lain, 169.254/16 ruang alamat disediakan untuk alamat IP-link-lokal IPv4. Sistem operasi umumnya tidak memiliki dukungan yang sangat baik untuk alamat link-local IPv4 (berbeda dengan alamat link-local IPv6, yang memiliki dukungan jauh lebih baik). Cara yang biasa adalah dengan menghindari Alamat IPv4 link-local sama sekali untuk host yang memiliki alamat IPv4 yang tepat.

Jika tidak ada di atas yang mungkin, itu akan menjadi ide yang baik untuk menentukan prioritas alamat IPv4 oleh /etc/gai.conf dalam instalasi Anda dan mungkin bahkan secara default di distribusi Linux.

Juga, karena sistem lokal Anda mungkin tidak memiliki alamat dari 169.254/16 subnet, perpustakaan resolver Anda harus dapat menghapus alamat tersebut dari hasil karena itu tidak bisa dijangkau . Mungkin ada baiknya mempertimbangkan memulai diskusi dengan pengelola distribusi.

Solusi lain adalah menjaga Anda winbind mesin di segmen ethernet tunggal di mana alamat tautan-lokal IPv4 berfungsi seperti yang diharapkan. Anda harus menggunakan penghubung jaringan alih-alih NAT untuk virtualisasi Anda.

Pavel Šimerda
sumber
Terima kasih. Saya belum mendapatkan solusi untuk pertanyaan saya karena tampaknya topik yang jauh lebih besar daripada yang saya pikirkan. Jawaban Anda mencakup pertanyaan sebagaimana ditanyakan maka hadiahnya.
tinman
Terima kasih. Jadi apa yang menjadi perhatian utama sekarang?
Pavel Šimerda
0

Karena penasaran, rute apa yang Anda tampilkan sebagai rute default? Sesuatu seperti: route -n akan menunjukkan rute default pada sistem Anda.

Saya ingin tahu apakah, untuk beberapa alasan aneh, subnet 169.254.0.0/16 ditetapkan sebagai gateway default di suatu tempat. Mungkin dalam konfigurasi jaringan Anda, atau / etc / network / interfaces, apakah Anda memiliki pengaturan subnet, jaringan, dan rute yang berpotensi untuk antarmuka "default" Anda.

MikeDawg
sumber
Lihat pertanyaan yang diedit untuk informasi yang Anda tanyakan.
tinman