Hali,
most ismerkedem a wpad-dal, mert ugy veszem eszre, hogy eleg jol teszi a dolgat. Szeretnem ezert sajat programban is felhasznalni.
Szoval ami idaig megvan:
- a dhcp szerverben be lehet allitani, hogy a kliensnek hirdesse, hogy ilyen is van:
option local-pac-server code 252 = text;
option local-pac-server "http://wpad.example.com/wpad.dat";
Viszont nem tudom, hogy ezt hogy tudom lekerdezni a dhcp szervertol?
A masik opcio, hogy fogom magam es az FQDN hostnevembol elkezdek domain neveket gyartani, mindegyikhez hozzacsapom az elejere a wpad-ot, aztan majd lesz valami. Pont ahogy a wiki-ben irjak. De ez nem tunik nekem elegge elegansnak.
Gyanitom, hogy a skype is wpad-ot hasznal es tokeletesen mukodik, ugy hogy a desktopomnak nincs dns bejegyzese, az ip-nek nincs feloldasa. Valoszinuleg a dhcp szervertol kapja az infot. Na ezt en hogy tudom lekerdezni a dhcp-tol (dhcpinform?)? Keresgeltem mar gugliban, de nem igazan akadtam ra idaig.
- 4827 megtekintés
Hozzászólások
dhcp servertõl ahogy írtad rendes DHCPINFORM tipusú dhcp lekéréssel tudsz kérdezni.
én perl-ben a Net::DHCP::Packet és Net::DHCP::Constants modulokat használom a csomag összeállítására.
mivel normálisan a dhcp szerver az udp/68 portról fogad kérdéseket, a programodnak privilégizalt szinten kell futnia az alacsony portszám használatához.
nekem is sZüksegem volt toolra, ami a rendszer ip beállításait békén hagyva plaintextben visszaadja a dhcp beállításokat egy userspace programomnak.
ha kell, elõkereshetem. linux alá perl-ben írtam. windowsra az oprendszer dhpc kliensének a registryben tárolt saját bináris adatait kiolvasó programot írtam, ezzel a custom dhcp opciókat fel tudja használni egy 3rd party program is.
a linuxos tool maga küld dhcp kérést és értelmezi a választ, lévén hogy lin alatt nincs standard helye a dhcp opcióknak, a legtöbb kliens csak feldolgozza és nem tárolja le a kapott opciókat - még ha fut is dhcp kliens.
az ISC dhcp kliens a'sszem letárolja valahova, milyen beállításokat kapott. a legegyszerũbb ezt kiolvasni a saját progidnak.
a wpad url heurisztikus kitalálása jó ötlet lehet, sok helyen a megszokott wpad.$domain/wpad.dat -ot alkalmazzák, de gondolom arra akarod felkészíteni a programod, hogy egyedi hálózati környezeteken is külön konfiguráció nélkül fusson. ehhez a hálózatban hírdetett beállításokat lenne érdemes észlelni.
~~~~~~~~
deb http://deb.metaltux.tk/ wheezy testing
- A hozzászóláshoz be kell jelentkezni
Hello,
en is ezeket a perl modulokat talaltam meg, de nem fogtam hozza veluk a kuzdesnek, mert valamiert azt hittem, hogy egyszeruen is meg lehet oldani.
Most nekilattam ennek a heuresztikus megoldasnak. De mivel valamiert a kapott ip-m nincs dns-be regisztralva, ezert inkabb az az utat valasztottam, hogy a resolv.conf-ban levo search ertekeket megyek vegig, meg shiftelem ki egyesevel a "domain"-eket a pontok elol, aztan csak lesz valami. Idaig sikeresnek tunik. De mi van ha nem wpad.example.com a hostneve, hanem valami elvetemult mast allitott be a dhcp-ben? Szoval valoszinuleg mind a ket megoldast implementalnom kell, hogy lefedjem az esetek nagy reszet. Meg olyasmit is olvastam, hogy DNS-ben is tarolhatjak, ugyhogy lehet, hogy meg azt is bele kell vennem.
Meglepo;) de en is perl-ben probalok alkotni, habar c-ben, vagy c++-ban is valoszinuleg ossze kellene majd hoznom. De eloszor legyen meg a perl verzio, aztan nekialok mokolni a tobbit.
Na idaig jutottam, ez ugy-ahogy mukodik, de meg csak a fqdn-t keresi, azt egyelore meg nem ellenorzi, hogy van-e ott proxy.pac vagy wpad.dat. Az majd most jon.
#!/usr/bin/perl -w
use strict;
use warnings;
use Net::DNS;
sub search_wpad_hostname {
my $res = Net::DNS::Resolver->new;
foreach ( $res->searchlist ) {
@_ = split /\./;
while ( scalar @_ > 1 ) {
my $hostname = join('.', "wpad", @_);
return $hostname if gethostbyname("$hostname");
shift;
}
}
undef;
}
- A hozzászóláshoz be kell jelentkezni