Eu tenho uma rede local configurada com apache2 e "named" em execução no OpenSuse 13.1 Linux.
Eu usei o serviço "nomeado" para usar meu computador como um servidor de domínio. Eu configurei meu roteador para apontar para o meu computador para pesquisas de domínio, então eu tenho a chance de reescrever um monte de domínios na minha rede para o seu próprio IP local, 192.168.0.111
Isso funciona muito bem.
Eu uso a configuração de host virtual para permitir vários domínios e subdomínios (reencaminhados para o mesmo IP pelo named) para obter diretórios diferentes no meu computador.
UPDATE - (adicionado o domínio base VirtualHost info)
Para meus domínios:
<VirtualHost *:80>
ServerName 192.168.0.111
ServerAlias for.us 192.168.0.111
DocumentRoot /home/personal/network/for.us
# if not specified, the global error log is used
ErrorLog /var/log/apache2/for.us-error_log
CustomLog /var/log/apache2/for.us-access_log combined
</VirtualHost>
<VirtualHost *:80>
ServerName 192.168.0.111
ServerAlias wa.net 192.168.0.111
DocumentRoot /home/work/wa.net
# if not specified, the global error log is used
ErrorLog /var/log/apache2/ip-error_log
CustomLog /var/log/apache2/ip-access_log combined
</VirtualHost>
E depois para os meus subdomínios:
<VirtualHost *:80>
ServerName 192.168.0.111
ServerAlias fmb.wa.net
DocumentRoot /home/work/wa.net/fmb
</VirtualHost>
<VirtualHost *:80>
ServerName 192.168.0.111
ServerAlias postrecord.wa.net
DocumentRoot /home/work/wa.net/postrecord
</VirtualHost>
<VirtualHost *:80>
ServerName 192.168.0.111
ServerAlias cvalley.wa.net
DocumentRoot /home/work/wa.net/cvalley_local
</VirtualHost>
Isso possibilita que eu acesse o cvalley.wa.net de qualquer dispositivo da minha rede e obtenha o site que mora em /home/work/wa.net/cvalley_local
Decidi encaminhar a porta 80 para este computador, para poder compartilhar alguns sites de desenvolvimento com colegas de trabalho. Não consigo controlar qual site eles veem com o mesmo serviço nomeado, porque eles precisariam usar meu computador como servidor de nomes de domínio ...
Então, adicionei uma linha como esta:
<VirtualHost *:80>
ServerName 192.168.0.111
ServerAlias MY.IP.XXX.XX
DocumentRoot /home/work/wa.net/cvalley
</VirtualHost>
Onde "MY.IP.XXX.XX" é o meu endereço IP público.
Isso funciona como esperado, quando você acessa meu endereço IP de uma rede pública, vê o site que mora em /home/work/wa.net/cvalley.
ATUALIZAÇÃO - esclarecendo ponto de confusão
O ponto de confusão que tenho é que existem endereços IP públicos nos meus logs nos sites "for.us", além dos sites "wa.net". Eu esperaria que o "wa.net" tivesse algum acesso IP público, mas eu não entendo como os bots públicos estão chegando aos sites "for.us".
Eu teria esperado que fosse impossível acessar os sites "for.us" em minha rede, a menos que o usuário público de alguma forma descobrisse o que estou chamando de ServerAliases e esteja imitando meus configuração de domínio ...
Como o tráfego público pode atingir meus sites "for.us" ? Como posso recriar esse tipo de acesso?
Aqui estão alguns exemplos de IP públicos acessando meus sites do VirtualHost:
Atualização - melhor descrição do log
este log mostra atividade no "for.us" VirtualHost - Eu teria esperado que a atividade existisse apenas no domínio "wa.net" , onde eu tem logs esperados
162.253.66.76 - - [15/Aug/2014:19:20:47 -0600] "GET /xmlrpc.php HTTP/1.0" 404 1004 "-" "-"
162.253.66.74 - - [16/Aug/2014:10:50:28 -0600] "GET / HTTP/1.0" 200 262 "-" "masscan/1.0 (https://github.com/robertdavidgraham/masscan)"
185.4.227.194 - - [16/Aug/2014:11:16:45 -0600] "GET http://24x7-allrequestsallowed.com/?PHPSESSID=1rysxtj500143WQMVT%5E_NAZ%5BQ HTTP/1.1" 200 262 "-" "-"
101.226.254.138 - - [16/Aug/2014:13:32:14 -0600] "HEAD / HTTP/1.0" 200 - "-" "-"
162.253.66.74 - - [16/Aug/2014:14:26:19 -0600] "GET / HTTP/1.0" 200 262 "-" "masscan/1.0 (https://github.com/robertdavidgraham/masscan)"
212.129.2.119 - - [16/Aug/2014:16:00:51 -0600] "HEAD / HTTP/1.0" 200 - "-" "-"
91.240.163.111 - - [16/Aug/2014:18:34:32 -0600] "GET / HTTP/1.0" 200 262 "-" "masscan/1.0 (https://github.com/robertdavidgraham/masscan)"
162.253.66.74 - - [16/Aug/2014:19:02:53 -0600] "GET / HTTP/1.0" 200 262 "-" "masscan/1.0 (https://github.com/robertdavidgraham/masscan)"
122.226.223.69 - - [17/Aug/2014:05:53:09 -0600] "GET http://www.k2proxy.com//hello.html HTTP/1.1" 404 1006 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"
::1 - - [17/Aug/2014:10:19:26 -0600] "OPTIONS * HTTP/1.0" 200 - "-" "Apache/2.4.6 (Linux/SUSE) OpenSSL/1.0.1e PHP/5.4.20 (internal dummy connection)"
162.209.65.196 - - [17/Aug/2014:15:31:53 -0600] "HEAD / HTTP/1.0" 200 - "-" "-"
111.206.199.163 - - [18/Aug/2014:11:12:56 -0600] "HEAD / HTTP/1.0" 200 - "-" "-"
37.187.180.168 - - [18/Aug/2014:15:40:00 -0600] "HEAD / HTTP/1.0" 200 - "-" "-"
62.210.38.226 - - [18/Aug/2014:18:35:16 -0600] "HEAD / HTTP/1.0" 200 - "-" "-"
Existe algo que eu possa fazer para negar publicamente o acesso público por padrão, mas permitir somente em um VirtualHost?