Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Część osób pewnie korzysta z mniej lub bardziej losowego adresu MAC w trosce o swoją prywatność w sieciach WiFi ale pewnie zapomina o tym, że linuxowy klient DHCP przesyła standardowo hostname do serwera DHCP i w ten sposób zmiana adresu MAC jest pozbawiona sensu. Przesyłanie hostname można wyłączyć w konfiguracji dhclienta i to nie problem. Ja jednak chciałbym by mój system w sieciach WiFi generował na czas podłączenia "losowy" hostname. Oczywiście on nie może być do końca losowy, np. "HDA291JS1", bo to się rzuca w oczy. Mi by zależało na generowaniu tego hostname w oparciu o jakieś imiona + "-Komputer", czyli wynikowa nazwa miałyby postać "Rysiek-Komputer". Nie wiem czy dhclient pozwala na tego typu operacje ale przy pomocy jego skryptów można by przestawić globalny hostname na ten losowy tuż przed wysłaniem zapytania o adresacje do serwera DHCP i po jej otrzymaniu przestawić hostname z powrotem na starą nazwę. Nadal nie wiem jak najlepiej wygenerować taką nazwę hosta. Ktoś ma może jakiś pomysł? Wystarczy jakaś shellowa linijka.
Offline
Metoda słownikowa
#changing hostname to random word from dictionary FILE=/usr/share/dict/american-english WORD=$(sort -R $FILE | head -1) printf “%s\nChanging Hostname…\n” OLDHOST=$(hostname) hostname $WORD if [ $? == 0 ]; then printf “%sPrevius Hostname: $OLDHOST \n” printf “%sRandom Hostname: $WORD \n” else printf “%sScript encounter an error, sorry…\n” exit 1 fi
Offline
Ja wykombinowałem coś takiego:
# rm -f /var/lib/dhcp/dhclient.* && \ sed "s=$(hostname)=REPLACEME=g" -i /etc/hosts && \ hostname "$(shuf -n 1 /home/morfik/Desktop/names)-Komputer" && \ sed "s=REPLACEME=$(hostname)=g" -i /etc/hosts # rm -f /var/lib/dhcp/dhclient.* && \ sed "s=$(hostname)=REPLACEME=g" -i /etc/hosts && \ hostname "morfikownia" && \ sed "s=REPLACEME=$(hostname)=g" -i /etc/hosts
Tzn, ta pierwsza zwrotka jest dla ustawienia losowej nazwy, druga przywraca. Teraz wystarczy znaleźć jakiś słownik polskich imion bez polskich znaków. xD
Offline
znajdz z polskimi znakami i przepuść przez konwerta. iconv z //TRANSLIT tez powinien dac rade.
Offline
Słownik wygenerowałem ze 100 najpopularniejszych imion (zarówno z dużych jak i małych liter pisane):
# iconv -f utf-8 -t ASCII//TRANSLIT a > b # cat b | tr '[:upper:]' '[:lower:]' > c
Tylko ten cały mechanizm generowania losowego hostname nie działa za bardzo tak jak ja bym tego chciał. Niby zarówno skrypty dhclient jak i /etc/network/interfaces działają tylko w przypadku pierwszego zapytania o adres via DHCP. To jest okres między PREINIT i BOUND . Na ten czas można bez problemu zmienić hostname i to on zostanie wysłany przez sieć. Problem pojawia się z RENEW. Niby dhclient ma taki "powód" zdefiniowany i można skrypt wykonać przed jak i po nim ale odnowienie lease dokonuje się po skrypcie tak czy inaczej. I nie da rady w ten sposób tego hostname na chwilę zmienić tak by podczas RENEW był ten losowy.
W taki sposób albo lepiej już nie wysyłać żadnego horname albo przez cały okres od PREINIT do RELEASE (ifup, ifdown) jechać na wybranej nazwie. Problem w tym, że mój system nie lubi innej nazwy niż morfikownia. xD Nie działa sudo, a xserver ma problemy z DISPLAY i ciasteczkami. xD Także to chyba nie jest dobry pomysł by te hostname zmieniać na stałe. Gdyby można było je zmieniać tak na chwilę, jak ja chciałem, to ten sposób mógłby się sprawdzić. A tak to mi pozostaje jedynie uciszyć dhclient, by nazwy hosta nie słał w zapytaniach DHCP.
Może coś jeszcze wymyślę ale raczej wątpię.
Offline
Spróbuj generować tą losową nazwę do konfiguracji klienta dhcp pod opcje:
send host-name "nazwahosta" supersede host-name "nazwahosta"
Z tego co wyczytałem, wtedy pozostaje dla innych usług hostname z /etc/hostaname a jedynie dhclient zgłasza swoją z własnego pliku konfiguracyjnego.
Ostatnio edytowany przez arecki (2016-05-24 19:28:37)
Offline
No tak, tylko ja chce losową nazwę hosta z tych 200 imion (100 z małych liter, 100 z dużych) i chcę aby ta nazwa była ustawiana tylko na czas kontaktu z serwerem DHCP. Póki co nie mam pojęcia jak takie coś zrobić.
Offline
Nie wiem z czym masz problem.
Zamiast zmieniać hostname zmieniaj te opcje w pliku konfiguracyjnym klienta dhcp.
Offline
Tak samo jak to robisz swoim skryptem.
Offline
Tylko ten skrypt jest wołany bezpośrednio przez dhclient i mam dostępne w nim całe środowisko, przykładowo:
Tue May 24 20:09:32 CEST 2016: entering /etc/dhcp/dhclient-enter-hooks.d, dumping variables. reason='PREINIT' interface='wwan0' -------------------------- Tue May 24 20:09:32 CEST 2016: entering /etc/dhcp/dhclient-exit-hooks.d, dumping variables. reason='PREINIT' interface='wwan0' -------------------------- Tue May 24 20:09:41 CEST 2016: entering /etc/dhcp/dhclient-enter-hooks.d, dumping variables. reason='BOUND' interface='wwan0' new_ip_address='10.143.56.87' new_network_number='10.143.56.80' new_subnet_mask='255.255.255.240' new_broadcast_address='10.143.56.95' new_routers='10.143.56.81' new_domain_name_servers='89.108.195.20 89.108.202.20' old_ip_address='10.143.90.72' old_network_number='10.143.90.64' old_subnet_mask='255.255.255.240' old_broadcast_address='10.143.90.79' old_routers='10.143.90.65' old_domain_name_servers='89.108.195.20 89.108.202.20'
Już widzisz, czemu z tych skryptów korzystam? xD
Offline
Z takiej metody nie korzystałem.
Offline
Albo domyślny localhost - sporo linuxów takiego używa, min 90% buntów.
:D
Ostatnio edytowany przez Jacekalex (2016-05-25 05:30:04)
Offline
[quote=Jacekalex]Albo domyślny localhost - sporo linuxów takiego używa, min 90% buntów.
:D[/quote]
No to może być mylące, ktoś myśli sobie że to *buntu i Debiany w domyślnej konfiguracji, a przy próbie włamania napotyka szyfrowanie, cgroupy, regułki i inne pamy.
Offline
Mogę w sumie dodać 100 pozycji z localhost do listy nazw. Zrobić też ten Rysiek-Komputer, bo takie coś chyba jest na windowsach ale nadal potrzebuje jakiegoś sposobu na zmianę nazwy hosta na czas RENEW. xD
A i jeszcze taki bajer, ten hostname podczas RENEW musi pasować do tego wcześniejszego. xD To akurat nie problem. Trzeba będzie podczas PREINIT zapisać gdzieś ustawianą nazwę hosta i później wykorzystać ją w RENEW, to chyba dam radę zrobić.
# shuf -n 1 /etc/dhcp/names localhost # shuf -n 1 /etc/dhcp/names sebastian-Komputer # shuf -n 1 /etc/dhcp/names Hubert # shuf -n 1 /etc/dhcp/names localhost # shuf -n 1 /etc/dhcp/names Nina-komputer
Chyba wtapiam się w tłum wystarczająco teraz. xD
Ostatnio edytowany przez morfik (2016-05-25 11:08:42)
Offline
Time (s) | Query |
---|---|
0.00019 | SET CHARSET latin2 |
0.00008 | SET NAMES latin2 |
0.00148 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.137.159.134' WHERE u.id=1 |
0.00112 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.137.159.134', 1732746658) |
0.00053 | SELECT * FROM punbb_online WHERE logged<1732746358 |
0.00076 | SELECT topic_id FROM punbb_posts WHERE id=301825 |
0.00007 | SELECT id FROM punbb_posts WHERE topic_id=28654 ORDER BY posted |
0.00062 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=28654 AND t.moved_to IS NULL |
0.00007 | SELECT search_for, replace_with FROM punbb_censoring |
0.00093 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=28654 ORDER BY p.id LIMIT 0,25 |
0.00129 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=28654 |
Total query time: 0.00714 s |