[MEGOLDVA]RHEL 5/CentOS 5 hostname beállítási sorrend

hello

Kérem javítsatok ki, de eddig úgy tudtam, hogy a hostname az érintett rendszerekben úgy kerül beállításra hogy először az /etc/sysconfig/network fáljból kiveszi a hostname értéket majd, hozzáteszi ha kell az /etc/hosts tartalmát.

Most azt tapasztalom, hogy a domain beállításnál szépen feloldja a saját IP címét és amit válasznak kap az lesz az FQDN.
Grrrr.... Ez így nem jó.

Más is tapasztalta ezt?


UPDATE

Nos, mit találtam a kernel konfigban:
kernel.hostname=NEW_HOSTNAME
:)

szóval a probléma megoldva. köszönöm a tippeket és az időt amit rámszántatok.

Hozzászólások

CentOS 6 alatt nem tapasztalom ezt, a rendszer a HOSTNAME változóban megadott értéket használja mindig.

Nem tudom, mennyiben működik ez másképp 5-ös CentOS/RHEL alatt, én inkább arra tippelnék, hogy nem FQDN-t adtál meg, ezért reverz DNS-sel próbálja kideríteni a szkript, hogy mi lehet a domainnév:

http://www.centos.org/docs/5/html/5.2/Deployment_Guide/s2-sysconfig-net…

"HOSTNAME=<value>, where <value> should be the Fully Qualified Domain Name (FQDN)"

igen pontosan. csak hostnevet adtam meg. mert az FQDN-t a hostname -f parancsal kell visszaadja különben az applikáció nem működik megfelelően.
Ha FQDN adok meg a network fájlban akkor a hosname parancsra az FQDN íródik ki ami nekem most nem jó.
--
A legértékesebb idő a pillanat amelyben élsz.
https://sites.google.com/site/jupiter2005ster/

Kipróbáltam, CentOS 6 alatt sajnos nem működik így, akkor is az FQDN-t kapom vissza, ha simán a "hostname" parancsot futtatom. Érdekes módon, ha megcserélem a hosts fájlban az FQDN-t, és a hostname-et, akkor fordított logika szerint viselkedik, a "-f" adja meg a sima hosztnevet, a paraméterek nélküli futtatásnál pedig FQDN-t kapok vissza...

Kicsit utánaolvasva azt vettem észre, hogy nagyon nem egyértelmű, hogy az egyes disztróknál melyik formátumot kell használni, hol az FQDN-t, hol a sima hosztnevet említik a doksikban. Az egyetlen használható tanács az, hogy következetesen állítsa be az ember mindenhol, vagy az egyik, vagy a másik formátumot használva.

Ha a topikindító esetében egy alkalmazás azt várja, hogy a "hostname" csak a nevet adja vissza, akkor a dokumentációban foglaltakkal ellentétben jó lehet ez a megoldás is, csak következetesen kell használni mindenütt.

Hogy mi van??? Mit tesz hozzá, "ha kell"?

A névfeloldási sorrend a nsswitch.conf-tól függ.
hosts: files dns

Vagy fordítva. Melyiket szeretnéd, honnan oldja fel, melyikkel próbálkozzon először?

man nsswitch.conf

Az hogy boot során beállítja a nevet a network file-ból semmit nem jelent. Lehet egy gép neve mákostészta is, míg a hálózaton webserver-ként érik el. A lokális név kb. lényegtelen (szokott lenni). De ha nagyon nem tetszik, akkor bármikor átállíthatod a 'hostname' paranccsal arra, amit szeretnél. Rebooting (vagy a következő hostname paranccsig) úgy fog maradni.

Másik, hogy jó lenne tudni, hogy az adott program mit használ a névfeloldáshoz. Vannak olyan programok (leellenőrzik ezzel, hogy működik e a névfeloldás, pl. Directory Server setup), amik nem használják a gethostbyaddr-t/getnameinfo-t, hanem direkt DNS névfeloldást csinálnak, így tök mindegy mit állítasz be host névnek, vagy mi van az állományokban.

ja igen, az nsswitch.conf kiment a fejemből. majd holnap lecsekkolom.

UPDATE:
megnéztem és rendben van,
nsswitch.conf tartalma

passwd: files nis
shadow: files nis
group: files nis

hosts: files dns nis

szóval vlami más lesz...
--
A legértékesebb idő a pillanat amelyben élsz.
https://sites.google.com/site/jupiter2005ster/

Ez teljesen korrekt, alapból a hosts fájlt nézi, ha ott nem találja a keresett címet vagy nevet, akkor a DNS-szerverekhez fordul (files dns). A legtöbb (az összes?) Linux disztró így működik.

A probléma ott van, hogy ahogy a fentebbi posztomban írtam, a hostname akkor is az FQDN-t adja vissza, ha megadod korrektül a kvalifikált és a nem kvalifikált hosztnevet egyaránt. Vagyis, jelen esetben az egyetlen járható út a HOSTNAME változóban megadni a sima hosztnevet, majd a hosts fájlban a hosztnevet és az FQDN-t.

igy van beallitva ahogy irod.

/etc/sysconfig/network:HOSTNAME=alma
/etc/hosts: IPalma.example.com alma

igy a hostname, hostname -s, hostname -d es a hostname -f is azt adja vissza amit kell. viszont a restart utan az 'alma'.example.com-bol alma.korte.com lesz.

A fura hogy a rendszerben nem talallok korte.com bejegyzest, csak is a DNS-ben van igy regisztralva a gep.

--
A legértékesebb idő a pillanat amelyben élsz.
https://sites.google.com/site/jupiter2005ster/

Biztosan nincs elirva a hosts fajlban a gep neve?

Illetve: probald meg a hosts fajlba a localhost bejegyzeshez felvenni a gep nevet, igy:


127.0.0.1    alma.example.com alma localhost
::1          alma.example.com alma localhost

--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

Szóval egy kis strace és olvasás után.

a gethostname() aljáról:
The GNU C library does not employ the gethostname() system call; instead, it implements gethostname() as a library function that calls uname(2)

Az uname meg a kerneltől kérdezi le.

Ha a /proc/sys/kernel/hostname-ba beleírod:
echo "ezlegyen.ahost.name" > /proc/sys/kernel/hostname

Akkor a hostname, ezt fogja visszaadni.

Tehát a hostname parancs nem fogja olvasni az /etc/hosts állományt. Ez az strace futtatásakor amúgy látszik is.