고쳐 쓰다:따라서 LAN 외부의 컴퓨터에서 사이트에 액세스할 수 있는 것 같습니다. 서버와 동일한 LAN에 있는 컴퓨터에서 끌어오려고 하면 문제가 발생합니다. 내가 알 수 있듯이 이것은 NAT 문제인 것 같습니다. 문제를 완전히 이해하지는 못하지만 라우터에 연결된 서버에서 실제로 호스팅되는 공개 도메인에 액세스하려는 트래픽을 라우터가 처리하는 방식과 관련이 있다는 것을 알고 있습니다. 내 라우터에는 IP 트리거링이 있으며 메모리에서 이를 구성해야 할 수 있습니다.
VirtualBox에서 테스트 서버 VM을 설정하고 WordPress 블로그를 호스팅하여 몇 가지 서버 기본 사항을 스스로 가르치려고 합니다. 이는 주로 제가 논문을 마칠 때를 위한 준비 작업으로, 제가 직접 호스팅할 수 있기를 희망하는 디지털/온라인 버전이 포함될 것입니다. 모든 것이 순조롭게 진행되었습니다. LAMP를 설정하고 몇 가지 테스트 가상 호스트를 생성하고 WordPress를 설치했으며 WordPress 블로그용 호스트를 포함하여 LAN 내에서 모든 가상 호스트에 액세스할 수 있었습니다. 문제가 있는 부분은 서버를 인터넷에 열려고 하는 것입니다. 도메인을 구입하고 다음 명령을 사용하여 동적 DNS를 설정했습니다(주거용 Comcast 계정을 사용하고 있습니다).이 가이드, 작동하는 것 같지만 제 인생에서는 작동하지 않는 것 같고 문제에 대한 해결책이 전혀 없습니다.
설정 세부정보:
- 가상 머신이 있는 데스크톱은 Windows 7을 실행하고 있습니다. 하드웨어 세부 정보가 모두 필요한지 확실하지 않지만 상당히 유능한 게임 머신입니다.
- VirtualBox를 가상 머신으로 사용하고 있으며 브리지 연결이 설정되어 있습니다.
- VM의 운영 체제는 Ubuntu Server 14.04입니다.
- LAMP 설정을 사용하여 문서 루트를 /srv로 변경했는데, 이것이 나에게 더 적합합니다.
- 동적 DNS에는 Namecheap.com을 사용하세요. 위의 가이드를 사용하여 설정했고 성공 메시지를 받았습니다. 또한 namecheap.com 호스트 설정의 IP도 업데이트했는데, 이 모든 사실을 통해 내 동적 DNS가 올바르게 구성되었을 수 있다고 믿게 되었습니다.
- 만일을 대비해 내 라우터에서는 포트 80, 443, 심지어 8080까지 전달했습니다. 또한 서버를 DMZ에 배치하고 방화벽을 완전히 끄기도 했습니다.
- 저는 Comcast의 2-in-1 모뎀과 라우터를 사용합니다. "eMTA & DOCSIS 소프트웨어 버전: 7.6.116"을 실행 중입니다.
모든 로그/구성 정보가 얼마나 도움이 될지 확신할 수 없으므로 이것이 과잉이 아니기를 바랍니다...
Apache2.conf
# Global configuration
#
#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# NOTE! If you intend to place this on an NFS (or otherwise network)
# mounted filesystem then please read the Mutex documentation (available
# at <URL:http://httpd.apache.org/docs/2.4/mod/core.html#mutex>);
# you will save yourself a lot of trouble.
#
# Do NOT add a slash at the end of the directory path.
#
#ServerRoot "/etc/apache2"
# Trying to fix internet acessability issue...
# ServerName anarchoanthro.com <-- this got rid of that startup error, but otherwise didn't work.
#
# The accept serialization lock file MUST BE STORED ON A LOCAL DISK.
#
Mutex file:${APACHE_LOCK_DIR} default
#
# PidFile: The file in which the server should record its process
# identification number when it starts.
# This needs to be set in /etc/apache2/envvars
#
PidFile ${APACHE_PID_FILE}
#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 300
#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On
#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100
#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 5
# These need to be set in /etc/apache2/envvars
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
#
# HostnameLookups: Log the names of clients or just their IP addresses
# e.g., www.apache.org (on) or 204.62.129.132 (off).
# The default is off because it'd be overall better for the net if people
# had to knowingly turn this feature on, since enabling it means that
# each client request will result in AT LEAST one lookup request to the
# nameserver.
#
HostnameLookups Off
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here. If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog ${APACHE_LOG_DIR}/error.log
#
# LogLevel: Control the severity of messages logged to the error_log.
# Available values: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the log level for particular modules, e.g.
# "LogLevel info ssl:warn"
#
LogLevel warn
# Include module configuration:
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
# Include list of ports to listen on
Include ports.conf
# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual host.
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Directory /srv/>
Options FollowSymLinks IncludesNOEXEC
XBitHack on
AllowOverride None
Require all granted
</Directory>
# AccessFileName: The name of the file to look for in each directory
# for additional configuration directives. See also the AllowOverride
# directive.
#
AccessFileName .htaccess
#
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>
#
# The following directives define some format nicknames for use with
# a CustomLog directive.
#
# These deviate from the Common Log Format definitions in that they use %O
# (the actual bytes sent including headers) instead of %b (the size of the
# requested file), because the latter makes it impossible to detect partial
# requests.
#
# Note that the use of %{X-Forwarded-For}i instead of %h is not recommended.
# Use mod_remoteip instead.
#
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
# Include of directories ignores editors' and dpkg's backup files,
# see README.Debian for details.
# Include generic snippets of statements
IncludeOptional conf-enabled/*.conf
# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
UserDir disabled root
포트 구성 파일
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf
Listen 80
Listen 8080
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
내-wpsite.conf<-- 이것은 활성화된 유일한 사이트입니다. 방금 default.conf를 복사하고 편집했습니다.
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin [email protected]
ServerName www.anarchoanthro.com
ServerAlias anarchoanthro.com
DocumentRoot /srv/wp-anarchoanthro
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
# Set /srv/testsite1/cgibin/ as CGI script directory.
ScriptAlias "/cgi-bin/" "/srv/wp-anarchoanthro/cgi-bin/"
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
이것은 내 로그입니다. 이것을 얻기 전에 내 블로그 anarchoanthro.com을 로드해 보았습니다. 또한, 오늘의 기록만 포함하고 있으니 범위가 좁아졌으면 좋겠습니다.
액세스 로그
95.134.193.184 - - [01/Aug/2015:04:17:41 -0500] "\x0fK\x17\xaf$W\xff'" 200 28811 "-" "-"
199.30.228.129 - - [01/Aug/2015:05:07:30 -0500] "GET / HTTP/1.1" 200 7795 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 GTB7.1"
38.105.109.12 - - [01/Aug/2015:05:12:36 -0500] "GET / HTTP/1.1" 200 29152 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"
38.105.109.12 - - [01/Aug/2015:05:12:38 -0500] "GET / HTTP/1.1" 200 29151 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"
38.105.109.12 - - [01/Aug/2015:05:12:39 -0500] "GET /wp-content/themes/arcade-basic/library/js/html5.js HTTP/1.1" 200 2734 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"
38.105.109.12 - - [01/Aug/2015:05:12:39 -0500] "GET /wp-includes/js/wp-emoji-release.min.js?ver=4.2.3 HTTP/1.1" 200 14953 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"
38.105.109.12 - - [01/Aug/2015:05:12:39 -0500] "GET /wp-includes/js/jquery/jquery.js?ver=1.11.2 HTTP/1.1" 200 96260 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"
38.105.109.12 - - [01/Aug/2015:05:12:40 -0500] "GET /wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1 HTTP/1.1" 200 7506 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"
38.105.109.12 - - [01/Aug/2015:05:12:40 -0500] "GET /wp-content/themes/arcade-basic/library/js/bootstrap.min.js?ver=3.0.3 HTTP/1.1" 200 6980 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"
38.105.109.12 - - [01/Aug/2015:05:12:40 -0500] "GET /wp-content/themes/arcade-basic/library/js/fillsize.js?ver=4.2.3 HTTP/1.1" 200 2576 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"
38.105.109.12 - - [01/Aug/2015:05:12:40 -0500] "GET /wp-content/themes/arcade-basic/library/js/jquery.arctext.js?ver=4.2.3 HTTP/1.1" 200 10612 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"
38.105.109.12 - - [01/Aug/2015:05:12:40 -0500] "GET /wp-content/themes/arcade-basic/library/js/theme.js?ver=4.2.3 HTTP/1.1" 200 3052 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"
64.69.91.210 - - [01/Aug/2015:06:02:54 -0500] "GET / HTTP/1.1" 200 29128 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322)"
192.187.110.98 - - [01/Aug/2015:06:54:53 -0500] "GET http://testp2.czar.bielawa.pl/testproxy.php HTTP/1.1" 404 356 "-" "Mozilla/5.0 (Windows NT 5.1; rv:32.0) Gecko/20100101 Firefox/31.0"
141.212.122.59 - - [01/Aug/2015:07:56:56 -0500] "CONNECT proxytest.zmap.io:80 HTTP/1.1" 200 27778 "-" "Mozilla/5.0 zgrab/0.x"
141.212.122.59 - - [01/Aug/2015:07:56:57 -0500] "GET / HTTP/1.1" 200 30504 "-" "Mozilla/5.0 zgrab/0.x"
104.238.194.164 - - [01/Aug/2015:09:32:09 -0500] "GET / HTTP/1.1" 200 29153 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)"
46.172.71.251 - - [01/Aug/2015:12:12:51 -0500] "GET /rom-0 HTTP/1.1" 404 367 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
오류 기록
[Sat Aug 01 06:54:53.947240 2015] [:error] [pid 4035] [client 192.187.110.98:56439] script '/srv/wp-anarchoanthro/testproxy.php' not found or unable to stat
[Sat Aug 01 11:23:56.393436 2015] [mpm_prefork:notice] [pid 3918] AH00169: caught SIGTERM, shutting down
[Sat Aug 01 11:23:57.476298 2015] [mpm_prefork:notice] [pid 4943] AH00163: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.11 OpenSSL/1.0.1f configured -- resuming normal operations
[Sat Aug 01 11:23:57.476333 2015] [core:notice] [pid 4943] AH00094: Command line: '/usr/sbin/apache2'
[Sat Aug 01 12:30:02.492747 2015] [mpm_prefork:notice] [pid 4943] AH00169: caught SIGTERM, shutting down
[Sat Aug 01 12:30:03.513348 2015] [mpm_prefork:notice] [pid 5037] AH00163: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.11 OpenSSL/1.0.1f configured -- resuming normal operations
[Sat Aug 01 12:30:03.513384 2015] [core:notice] [pid 5037] AH00094: Command line: '/usr/sbin/apache2'
other_vhosts_access.log
127.0.1.1:80 216.218.206.68 - - [01/Aug/2015:01:31:36 -0500] "\x16\x03\x01" 400 0 "-" "-"
127.0.1.1:80 141.212.122.42 - - [01/Aug/2015:03:15:26 -0500] "\x16\x03\x01" 400 0 "-" "-"
127.0.1.1:80 65.31.172.201 - - [01/Aug/2015:06:20:06 -0500] "\x80F\x01\x03\x01" 400 0 "-" "-"
127.0.1.1:80 50.77.106.104 - - [01/Aug/2015:06:44:22 -0500] "\x80F\x01\x03\x01" 400 0 "-" "-"
127.0.1.1:80 71.174.188.128 - - [01/Aug/2015:07:29:10 -0500] "\x80F\x01\x03\x01" 400 0 "-" "-"
127.0.1.1:80 98.251.14.214 - - [01/Aug/2015:09:31:43 -0500] "\x80F\x01\x03\x01" 400 0 "-" "-"
127.0.1.1:80 89.248.171.137 - - [01/Aug/2015:10:22:04 -0500] "\x16\x03\x01" 400 0 "-" "-"
anarchoanthro.com:80 177.206.182.186 - - [01/Aug/2015:12:08:54 -0500] "\x80F\x01\x03\x01" 400 0 "-" "-"
route
명령 결과
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.0.0.1 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 * 255.255.255.0 U 0 0 0 eth0
답변1
먼저 LAN의 두 번째 PC에서 웹 서버에 액세스할 수 있는지 확인합니다. hosts
도메인 이름을 내부 주소에 매핑하려면 파일에 항목을 추가 해야 할 수도 있습니다 . 이렇게 하면 서버가 적절하게 브리지되고 방화벽 뒤에 있지 않으며 LAN으로 라우팅될 수 있음이 확인됩니다.
그런 다음 서버에 게이트웨이를 가리키는 기본 경로가 있는지 확인합니다. 이것이 없으면 인바운드 요청에 응답하거나 승인할 수 없습니다.
마지막으로 서버에서 네트워크 스니퍼(예: Wireshark)를 실행하고 LAN 외부에서 제어되는 인바운드 연결을 모니터링합니다. 이렇게 하면 트래픽이 올바르게 라우팅되는지 확인할 수 있습니다.
일부 ISP(특히 미국의 ISP)는 포트 80 트래픽을 차단합니다. 귀하의 상황에 맞는다면 확인해 보는 것이 좋습니다.
http에는 포트 80이 필요하고, https에는 포트 443이 필요합니다. 8080은 필요하지 않습니다. 핑을 전달하거나 적어도 라우터가 핑에 응답하도록 할 수 있습니다.
많은 홈 라우터는 외부 IP 주소에 대한 내부 요청을 처리할 수 없으며 내부적으로 전달됩니다. 적어도 처음에는 이러한 상황을 테스트에서 제외하십시오.
답변2
조각조각 나누어 보세요. 접속 시도 시 Apache 접속/오류 로그를 확인하시기 바랍니다. Apache가 아무 것도 기록하지 않으면 tcpdump를 사용하여 요청이 서버에 도달했는지 확인하세요. 네트워크가 요청을 통과시키고 있는지 확실하지 않은 경우에는 구성을 자세히 살펴볼 필요가 없습니다.