У меня есть локальная сеть с apache2 и "named", работающая в OpenSuse 13.1 Linux.
Я использовал "именованный" сервис, чтобы использовать мой компьютер в качестве сервера домена. Я настроил мой маршрутизатор так, чтобы он запрашивал у моего компьютера поиск доменов, поэтому у меня есть возможность переписать несколько доменов в моей сети на свой собственный локальный IP, 192.168.0.111.
Это прекрасно работает.
Я использую конфигурацию виртуального хоста, чтобы позволить различным доменам и поддоменам (перенаправленным на один и тот же IP-адрес через named) загружать разные каталоги на моем компьютере.
ОБНОВЛЕНИЕ - (добавлена информация о базовом домене VirtualHost) Для моих доменов:
<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>
А потом для моих поддоменов:
<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>
Это позволяет мне подключиться к cvalley.wa.net с любого устройства в моей сети и получить сайт, который находится в /home/work/wa.net/cvalley_local
Я решил перенаправить порт 80 на этот компьютер, чтобы я мог поделиться несколькими сайтами разработки с коллегами. Я не могу контролировать, какой сайт они видят с помощью одной и той же службы, потому что им придется использовать мой компьютер в качестве сервера имен доменов ...
Поэтому я добавил такую строку:
<VirtualHost *:80>
ServerName 192.168.0.111
ServerAlias MY.IP.XXX.XX
DocumentRoot /home/work/wa.net/cvalley
</VirtualHost>
Где «MY.IP.XXX.XX» - мой публичный IP-адрес.
Это работает, как и ожидалось, когда вы нажимаете на мой IP-адрес из общедоступной сети, вы видите сайт, который находится в /home/work/wa.net/cvalley.
ОБНОВЛЕНИЕ - разъяснение точки смущения Точка смущения, которая у меня возникает, заключается в том, что в моих журналах есть публичные IP-адреса в дополнение к сайтам wa.net. Я ожидал бы, что у "wa.net" будет публичный IP-доступ, но я не понимаю, как публичные боты получают доступ к сайтам "for.us".
Я ожидал бы, что будет невозможно получить доступ к сайтам "for.us" в моей сети, если общедоступный пользователь каким-то образом не поймет, как я называю свои ServerAliases, и не подражает настройке моего домена ...
Как общественный трафик может попасть на мои сайты for.us ? Как я могу восстановить этот вид доступа?
Вот несколько примеров того, как публичные IP-адреса попадают на мои сайты VirtualHost:
Обновление - лучшее описание журнала
этот журнал показывает активность в VirtualHost "for.us" - я ожидал, что активность будет существовать только в домене "wa.net" , где я ожидаю журналы
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 - "-" "-"
Могу ли я что-нибудь сделать, чтобы по умолчанию надежно запретить публичный доступ, но разрешить это только в одном VirtualHost?