Po ostatniej akcji Microsoftu z przejęciem i zablokowaniem domen należących do No-IP miałem przez moment umiarkowany problem z dostępem do jednej z moich maszyn, bo nie znałem IP. Nic krytycznego i szybko rozwiązałem, ale stwierdziłem, że warto by się zabezpieczyć na przyszłość. Początkowo chciałem uruchomić po prostu innego dostawcę dyndns, z inną domeną, co dałoby całkiem niezłą – jak mi się wydaje – redundancję w tym względzie, ale prowizorycznie uruchomiłem coś innego, własnego i znacznie prostszego. W komentarzu do poprzedniego wpisu padło pytanie co dokładnie zrobiłem, więc opisuję.
Tak się składa, że mam serwer dedykowany ze stałym IP (nie jest konieczne zamiast tego można skorzystać z domeny), na którym stoi serwer WWW (lighttpd). Na wszystkich maszynkach potrzebujących dyndns mam dostęp do crona (zresztą, korzystałem z crona już przy zwykłym koncie dyndns, patrz update wpisu). Rozwiązanie jest proste: klient wywołuje okresowo unikatowy URL na moim serwerze, serwer okresowo parsuje log w poszukiwaniu tego unikatowego ciągu znaków i zapisuje IP z którego nastąpiło odwołanie w określonym pliku.
Poniżej wklejki ze wszystkimi onelinerami (gotowiec dla lighttpd, w przypadku innego serwera WWW trzeba dostosować):
# po stronie klienta*/5 * * * * /usr/bin/wget -4 -q -O /dev/null http://mojadomena.com/losowyciagznakow4346456543324645 > /dev/null
# po stronie serwera*/5 * * * * /usr/bin/awk '/losowyciagznakow4346456543324645/ {ip=$1} END {print ip}' /var/log/lighttpd/access.log > /var/www/dyndns_host1.txt
# pobranie IPwget -O - http://mojadomena.com/dyndns_host1.txt
Po namyśle, rozwiązanie nawet lepsze niż drugi dostawca dyndns. Mniej kont, prostsza konfiguracja, mając stałe IP na upartego można całkowicie uniezależnić się od DNSów, jeśli ktoś odczuwa potrzebę.
Oczywiście nie od razu tak to wyglądało, w szczególności po stronie serwera był grep, awk, tail w użyciu. Ale skoro da się wszystko załatwić awk (a nie tylko wyświetlanie określonej kolumny, chyba najczęstsze zastosowanie awk…), to czemu nie? Tu polecam zbiór przydatnych onelinerów w awk.
UPDATE: IPv6 się popularyzuje. Okazało się, że mój skrypt nie działa poprawnie, bo łączenie między maszynami następuje po IPv6. Dodany parametr -4 do wget w celu naprawy tego problemu.
Łeeee, z komentarzy do poprzedniej notki wynikało, że masz sposób na różne usługi, tymczasem zaprezentowałeś rozwiązanie podobne do tego jakie zastosowałem u siebie.
PS. Znów mam problem z wklejką GIT.
Uprzedzałem, że podobna i niewiele można wymyślić w tym zakresie. Tzn. można w sumie postawić swój serwer DNS i aktualizować wpis, tylko… po co? Twój redirect daje dostęp wygodniejszy, ale tylko dla WWW.
Z wklejką nie wiem OCB. Mam różne przeglądarki, z różnymi dodatkami (noscript, adblock, ghostery), w różnych miejscach i wszędzie działa. Poszukaj problemu u siebie (co blokuje, czemu blokuje), stawiam na któryś z dodatków. Po stronie kodu strony to zwykły JS jest…
Ad.1. – spoko, jak IP jest już znane to nie samo WWW można potem opędzić, tylko ciut więcej.
Ad.2. Pisałem w poprzednim komentarzu, może umknęło – sprawdzałem z pracy, terminale z XP i Win7 oraz w miarę nowym IE (nic nie da się zainstalować samodzielnie, bo to Embedded). I na obu wklejki brak, a IE nie ma dodanych żadnych blokerów. Zaglądając w kod tego JS mamy tam niemal same document.write – może domyślny mechanizm zabezpieczeń przeglądarki tego nie przepuszcza – i dobrze, bo zdaje się jest to jedna z metod infekowania złośliwym oprogramowaniem.
@Monter Odnośnie IE i wklejek JS. Dzięki za info, ale nie bardzo widzę co mógłbym zmienić[1] i w jaki sposób odbiegam od standardu. Raczej stawiam na ustawienia IE lub radosne pomysły MS, których w zakresie sieci mają długą historię. Zakładając, że chciałbym zmieniać, bo problem dotyczy maksymalnie 13% użytkowników (udział silnika MSIE w Polsce). Maksymalnie, bo na tym blogu jest to mniej (ten rok – 6%, historycznie ~10%), no i na części IE działa (sprawdziłem na jakimś 8, którego akurat miałem pod ręką – wszystko wyświetla się od kopa). Korzystanie z IE/blokowanie części funkcji JS to jednak wybór użytkownika jest. Są darmowe alternatywy, są inne metody blokowania JS.
[1] To najprostsza metoda na eleganckie, nierozjeżdżające się fragmenty kodu, wersjonowanie i kolorowanie gratis… Jest to zewnętrzny serwis, czego nie lubię i nie działa w przeglądarkach tekstowych, czego nie lubię jeszcze bardziej, ale nie widzę alternatyw.