Apache-2.2

Apache2 Vhosts 和 DnsMasq,無法通過 LAN 從另一台電腦訪問網站:ERR_CONNECTION_REFUSED

  • October 1, 2016

我目前正在我的 LAN 上設置一個 Web 伺服器來滿足一些需求,比如使用 Phabricator 或其他 Intranet 服務。為此,我安裝了 apache2、php5、mysql 和 DNSMASQ,它們允許我管理 DHCP 和 DNS 伺服器。但是現在我被虛擬主機困住了,這些虛擬主機在本地機器上執行良好,但無法從本地網路上的另一台電腦訪問,我得到“ERR_CONNECTION_REFUSED”。

為了測試我的設置,我聲明了一個這樣的虛擬主機:

創建我們網站的根文件夾

$ sudo mkdir -p /var/www/test.devbox/public_html
$ chown -R $USER:$USER /var/www/test.devbox/public_html

放置索引文件並添加隨機文本

$ nano /var/www/test.devbox/public_html/index.html

現在我們創建我們的虛擬主機文件

$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/test.devbox.conf
$ sudo nano /etc/apache2/sites-available/test.devbox.conf

虛擬主機配置文件

<VirtualHost *:80>
   ServerAdmin admin@test.devbox
   ServerName test.devbox
   ServerAlias www.test.devbox
   DocumentRoot /var/www/test.devbox/public_html
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

然後我們使用

$ sudo a2ensite test.devbox

然後我編輯了我的主機文件以適應我的 test.devbox.config 文件(伺服器端)中的 servername 指令

$ sudo nano /etc/hosts

127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

192.168.1.254   bbox

127.0.1.1       MyPie
127.0.0.1       MyPie
127.0.0.1       devbox
127.0.0.1       opcv.devbox www.opcv.devbox
127.0.0.1       test.devbox www.test.devbox

這也是我的 dnsmasq.conf 文件

$ sudo nano /etc/dnsmasq.conf

domain-needed
expand-hosts
bogus-priv
no-resolv
no-poll
localise-queries
no-negcache

# DNS
#interface=eth0
local=/devbox/
domain=devbox

cache-size=10000

server=8.8.4.4
server=8.8.8.8
#server=194.158.122.10
#server=194.158.122.15

# DHCP
dhcp-authoritative
dhcp-range=192.168.1.100,192.168.1.200,10h
dhcp-option=3,192.168.1.254

然後我重新啟動了一切

$ sudo reboot 
  or
$ sudo /etc/init.d/dnsmasq restart
$ sudo service apache2 reload/restart

此時我不知道應該看哪裡,因為虛擬主機在本地工作,但無法從同一網路上的其他電腦訪問。

從我實際得到的另一台機器上使用 NSLOOKUP

c:\WINDOWS\system32>nslookup test.devbox
Server:   UnKnown
Address:  192.168.1.10 (which is the server)

Nom :    test.devbox
Address:  127.0.0.1

當我嘗試訪問http://test.devbox時,我得到 ERR_CONNECTION_REFUSED。我不知道該去哪裡找了。

這是 apache2ctl 命令的答案

$ sudo apache2ctl -S

AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/ports.conf:5
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
*:80                   is a NameVirtualHost
    default server 127.0.0.1 (/etc/apache2/sites-enabled/000-default.conf:1)
    port 80 namevhost 127.0.0.1 (/etc/apache2/sites-enabled/000-default.conf:1)
    port 80 namevhost example.devbox (/etc/apache2/sites-enabled/example.devbox.conf:1)
            alias www.example.devbox
    port 80 namevhost opcv.devbox (/etc/apache2/sites-enabled/opcv.devbox.conf:1)
    port 80 namevhost phabricator.devbox (/etc/apache2/sites-enabled/phabricator.devbox.conf:1)
    port 80 namevhost test.devbox (/etc/apache2/sites-enabled/test.devbox.conf:1)
            alias www.test.devbox
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex rewrite-map: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

謝謝,我希望我們能夠一起解決這個問題。

我想出了我的問題,有兩個問題。

1:我的路由器上仍然啟用了我的 dhcp 伺服器…(儘管我在設置 dhcp 和 dns 伺服器時已經禁用了它…

2:確實我的 DNSMASQ 配置錯誤。現在它被配置為將具有特殊域(此處為 devbox)的流量重定向到 apache 伺服器。我是新手,我明白我做了什麼,但我無法解釋。(不是母語人士)

dnsmasq.conf

#domain-needed not needed
no-hosts 
#expand-hosts not needed
bogus-priv
no-resolv
no-poll
localise-queries
no-negcache

# DNS
#interface=eth0
#local=/lan/
#domain=lan
address=/devbox/192.168.1.10 -> This is the line redirecting traffic. 


cache-size=10000

server=8.8.4.4
server=8.8.8.8
#server=194.158.122.10
#server=194.158.122.15

# DHCP
dhcp-authoritative
dhcp-range=192.168.1.100,192.168.1.200,10h
dhcp-option=3,192.168.1.254

從 nslookup 的輸出可以看出,您的 DNS 條目配置錯誤,它將 test.devbox 指向 127.0.0.1。它應該指向伺服器的 192.168.xx IP。

一旦修復此問題(根據您的評論)首先執行您想要的操作,您必須確保您想要瀏覽您的站點的每台客戶端電腦都使用您的伺服器進行 DNS 解析。

發生的情況是,在客戶端機器 A 上,您打開瀏覽器並輸入:

http://test.devbox/

在位置欄中。

客戶端機器 A 中的瀏覽器向 DNS 伺服器詢問 test.devbox 的 IP 地址,結果得到 192.168.1.10。

瀏覽器打開一個到 192.168.1.80 埠 80 (HTTP) 的 TCP 連接並發送這個請求(我在這裡省略了無趣的標頭):

GET / HTP/1.1
Host: test.devbox
[...]

該地址的 http 伺服器會按照您的配置進行響應。

因此,簡而言之,如果您使用單獨的伺服器和客戶端機器並且想要使用 FQDN 而不是 IP 來導航您的站點,您可以在機器的 /etc/hosts 中添加相關條目(或在 Windows 下等效)或您確保兩台機器都使用您控制的 DNS 伺服器。不,不能在本地機器之外訪問 127.0.0.1 :-)

引用自:https://serverfault.com/questions/806320