Ok, to będzie dość długie pytanie. Po pierwsze, trochę tła: Zajmuję się tworzeniem i testowaniem stron internetowych na Macbooku (OSX Lion), używając Parallels do uruchamiania różnych instalacji systemu Windows do testowania IE. Potrzebowałem sposobu, aby zainicjować nowy projekt internetowy za pomocą pliku BASH, automatycznie konfigurując mojego wirtualnego hosta dla projektu i tak dalej. Musiałem jednak, aby moja maszyna wirtualna rozpoznała wirtualnego hosta, bez konieczności ręcznej edycji Plik hostów systemu Windows maszyny Wirtualnej, ale aby to zrobić, potrzebowałem skryptu BASH w systemie OSX, aby móc edytować plik hosts w maszynie Wirtualnej systemu Windows.
Nadal nie jestem pewien, czy to możliwe, ale próbując to rozgryźć, natknąłem się na post na blogu. Ten post na blogu mówił o BIND i używaniu nazwanych stref i wszystkiego, aby skonfigurować serwer DNS, aby moje wirtualne hosty były rozpoznawane przez maszyny wirtualne. Miał formularz z pytaniem o mój adres IP lub coś i wyświetlał skrypt, którego użyłem do skonfigurowania wszystkiego i działał idealnie! Problem jednak jest z jakiegokolwiek idiotycznego powodu, nie dodałem zakładki do tego postu na blogu. Co więcej, kiedy uaktualniłem do Parallels 8, coś zepsuło się i całość przestała działać. Szukałem i szukałem posta na blogu i nie mogę go znaleźć ponownie.
To, co wiem o tym, co zrobił skrypt, to jednak to, że zdecydowanie użył adresu IP karty Parallels Shared # 0 (192.168.2.2) w pliku strefy. Nie jestem pewien, dlaczego to zadziałało przed uaktualnieniem do Parallels 8, ale po uaktualnieniu moje wirtualne hosty działały (nawet na mojej lokalnej maszynie) tylko wtedy, gdy działałem Parallels. Stworzył również folder w / etc / o nazwie resolver, w którym znajduje się plik dla mojego wirtualnego hosta. Nie mam pojęcia, dlaczego działało to bez uruchomionych równoległych programów.
W każdym razie, odkąd zrezygnowałem z prób znalezienia tego posta na blogu, zacząłem sam próbować wymyślić całą tę wiążącą rzecz.
Baza wirtualnego hosta, której chcę użyć, to stupid.local .. więc jeśli mam witrynę o nazwie „test”, można ją uzyskać pod adresem http: //test.stupid.local . Mam poprawnie skonfigurowanego głównego wirtualnego hosta w pliku httpd.conf apache, a mój skrypt BASH generuje dla mnie pliki wirtualnego hosta pojedynczej witryny (które, jak wiadomo, działają). Do tej pory ustawiłem bind / nazwany przez terminal i dodałem to do mojego pliku /etc/named.conf:
zone "local" IN {
type master;
file "local.zone";
allow-update { none; };
};
mój plik /var/named/local.zone wygląda następująco:
$TTL 60
$ORIGIN local.
@ 1D IN SOA localhost. root.localhost. (
46 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
1D IN NS localhost.
1D IN A 127.0.0.1
*.local. 60 IN A 192.168.1.138
stupid.local. 60 IN A 192.168.1.138
*.stupid.local. 60 IN A 192.168.1.138
... 192.168.1.138 to moje IP w pracy. Jak możesz się domyślić, ta konfiguracja działa i jest dostępna dla mojej maszyny wirtualnej z systemem Windows za pośrednictwem IE, ale tylko wtedy, gdy jestem w sieci w pracy. Kiedy zabieram mojego Macbooka do domu, muszę zmienić ten adres IP na adres w mojej sieci domowej, czyli 192.168.1.4. Ponadto, jeśli zmienię ten adres IP na 192.168.2.2 (adres IP karty Parallels Shared # 0), będzie działać i będzie dostępny dla mojej maszyny wirtualnej z systemem Windows za pośrednictwem IE, ale oczywiście tylko wtedy, gdy Parallels jest uruchomiony. Zmiana na 127.0.0.1 sprawia, że konfiguracja działa tylko w systemie OSX, a wcale nie za pośrednictwem mojej maszyny wirtualnej.
Potrzebuję więc utworzyć lub uzyskać dostęp do jakiegoś adresu IP, który pozostanie na moim Macbooku i nie ulegnie zmianie, którego mogę używać z BIND, aby móc uzyskać dostęp do moich wirtualnych hostów na * .stupid.local na obu moją lokalną maszynę OSX i na moich maszynach wirtualnych Parallels.
Wyczerpany, wiem, ale chciałem być dokładny. Więc ... jakieś pomysły? Lub jakieś alternatywne rozwiązania?
źródło