저는 Oracle VM VirtualBox를 사용하고 있으며 CentOS 7 인스턴스를 실행하고 있습니다. 이 컴퓨터에는 두 개의 네트워크 어댑터가 설정되어 있습니다. 하나는 호스트 전용 모드로 설정되고 다른 하나는 NAT 모드로 설정됩니다. SSH를 통해 가상 머신에 연결할 수 있습니다. 이제 이 가상 머신에서 웹 서버가 실행되고 있으며 동일한 방식으로 액세스하려고 합니다. 그러나 그것은 작동하는 방식이 아닙니다. 또한 호스트에서는 포트 3000, 게스트에서는 포트 80과 같은 다른 규칙도 시도했습니다.
호스트에서는 포트 12000, 게스트에서는 포트 80입니다.
호스트에 동일한 IP:3000이 있고 게스트에 정확한 IP:포트가 있습니다.
호스트에는 IP 및 포트 3000이 없지만 게스트에는 정확한 IP:포트가 있습니다.
작동하지 않습니다. 또한 호스트에서 VM으로 또는 그 반대로 핑을 보낼 수도 있습니다. VM-Server 내에서 Apache HTTPD 구성이 시작되는지 테스트했습니다.
나는 Lynx를 사용하여 사이트에 액세스하는데, 이 역시 잘 작동하지만 가상 머신 내에서만 작동합니다. 기계나 호스트 운영 체제 외부에서는 발생하지 않습니다.
호스트에서 게스트로의 PING 출력 -
C:\Users\apandey>ping 192.168.56.101
Pinging 192.168.56.101 with 32 bytes of data:
Reply from 192.168.56.101: bytes=32 time<1ms TTL=64
Reply from 192.168.56.101: bytes=32 time<1ms TTL=64
Reply from 192.168.56.101: bytes=32 time=1ms TTL=64
Reply from 192.168.56.101: bytes=32 time<1ms TTL=64
Ping statistics for 192.168.56.101:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 1ms, Average = 0ms
게스트 네트워크 연결 -
[root@phsita phsita_]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:35:35:5b brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
valid_lft 63341sec preferred_lft 63341sec
inet6 fe80::a49c:d796:6e85:93a3/64 scope link
valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:fa:0c:03 brd ff:ff:ff:ff:ff:ff
inet 192.168.56.101/24 brd 192.168.56.255 scope global enp0s8
valid_lft forever preferred_lft forever
inet6 fe80::552d:c3b3:245a:ca7d/64 scope link
valid_lft forever preferred_lft forever
게스트 내부에서 컬 -
[root@phsita phsita_]# cat /var/www/html/index.html
It worked. This is a test page running on Apache HTTPD.
[root@phsita phsita_]# curl localhost
It worked. This is a test page running on Apache HTTPD.
CentOS VM의 iptables 구성은 다음과 같습니다.
[root@phsita phsita_]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
INPUT_direct all -- 0.0.0.0/0 0.0.0.0/0
INPUT_ZONES_SOURCE all -- 0.0.0.0/0 0.0.0.0/0
INPUT_ZONES all -- 0.0.0.0/0 0.0.0.0/0
DROP all -- 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
FORWARD_direct all -- 0.0.0.0/0 0.0.0.0/0
FORWARD_IN_ZONES_SOURCE all -- 0.0.0.0/0 0.0.0.0/0
FORWARD_IN_ZONES all -- 0.0.0.0/0 0.0.0.0/0
FORWARD_OUT_ZONES_SOURCE all -- 0.0.0.0/0 0.0.0.0/0
FORWARD_OUT_ZONES all -- 0.0.0.0/0 0.0.0.0/0
DROP all -- 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
OUTPUT_direct all -- 0.0.0.0/0 0.0.0.0/0
이것은 CentOS VM의 Netstat 출력입니다.
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 5777/httpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1059/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1379/master
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 6702/nrpe
tcp 0 0 192.168.56.101:22 192.168.56.1:50997 ESTABLISHED 8059/sshd: root@not
tcp 0 36 192.168.56.101:22 192.168.56.1:50996 ESTABLISHED 8054/sshd: root@pts
tcp6 0 0 :::22 :::* LISTEN 1059/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1379/master
tcp6 0 0 :::5666 :::* LISTEN 6702/nrpe
udp 0 0 127.0.0.1:323 0.0.0.0:* 619/chronyd
udp 768 0 10.0.2.15:42450 10.100.1.21:53 ESTABLISHED 9559/ping
udp 0 0 0.0.0.0:15961 0.0.0.0:* 8008/dhclient
udp 0 0 0.0.0.0:68 0.0.0.0:* 8008/dhclient
udp6 0 0 ::1:323 :::* 619/chronyd
udp6 0 0 :::9882 :::* 8008/dhclient
내 거포트 전달 규칙아래에서 언급했듯이 -
Name Protocol Host IP Host Port Guest IP Guest Port
HTTPD TCP 50000 80
SSHD Rule TCP 2222 22
내 Windows 호스트의 Netstat 응답은 다음과 같습니다.
C:\Windows\system32>netstat -antb | findstr 50000
TCP 0.0.0.0:50000 0.0.0.0:0 LISTENING
TCPDUMP는 호스트에서 게스트 URL로 요청할 때 패킷을 캡처합니다.
[root@phsita phsita_]# tcpdump -v -i enp0s8 port 80
tcpdump: listening on enp0s8, link-type EN10MB (Ethernet), capture size 65535 bytes
17:08:00.255009 IP (tos 0x0, ttl 128, id 8851, offset 0, flags [DF], proto TCP (6), length 52)
82693-t430.corp.abc.com.58114 > phsita.http: Flags [S], cksum 0xca36 (correct), seq 2879587372, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
17:08:00.505569 IP (tos 0x0, ttl 128, id 8853, offset 0, flags [DF], proto TCP (6), length 52)
82693-t430.corp.abc.com.58115 > phsita.http: Flags [S], cksum 0xc579 (correct), seq 1429233499, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
17:08:03.254847 IP (tos 0x0, ttl 128, id 8855, offset 0, flags [DF], proto TCP (6), length 52)
82693-t430.corp.abc.com.58114 > phsita.http: Flags [S], cksum 0xca36 (correct), seq 2879587372, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
17:08:03.505192 IP (tos 0x0, ttl 128, id 8857, offset 0, flags [DF], proto TCP (6), length 52)
82693-t430.corp.abc.com.58115 > phsita.http: Flags [S], cksum 0xc579 (correct), seq 1429233499, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
17:08:09.255273 IP (tos 0x0, ttl 128, id 8859, offset 0, flags [DF], proto TCP (6), length 48)
82693-t430.corp.abc.com.58114 > phsita.http: Flags [S], cksum 0xde45 (correct), seq 2879587372, win 8192, options [mss 1460,nop,nop,sackOK], length 0
17:08:09.505718 IP (tos 0x0, ttl 128, id 8861, offset 0, flags [DF], proto TCP (6), length 48)
82693-t430.corp.abc.com.58115 > phsita.http: Flags [S], cksum 0xd988 (correct), seq 1429233499, win 8192, options [mss 1460,nop,nop,sackOK], length 0
17:08:21.507198 IP (tos 0x0, ttl 128, id 8863, offset 0, flags [DF], proto TCP (6), length 52)
82693-t430.corp.abc.com.58119 > phsita.http: Flags [S], cksum 0x9a4d (correct), seq 4194231732, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
17:08:24.507418 IP (tos 0x0, ttl 128, id 8865, offset 0, flags [DF], proto TCP (6), length 52)
82693-t430.corp.abc.com.58119 > phsita.http: Flags [S], cksum 0x9a4d (correct), seq 4194231732, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
17:08:30.507292 IP (tos 0x0, ttl 128, id 8867, offset 0, flags [DF], proto TCP (6), length 48)
82693-t430.corp.abc.com.58119 > phsita.http: Flags [S], cksum 0xae5c (correct), seq 4194231732, win 8192, options [mss 1460,nop,nop,sackOK], length 0
누구든지 도와주세요. 일을 정말 중요하게 여기려고 노력 중인데, 이게 너무 어리석은 상황이라 온라인상에서 충격을 받을 정도다.
모두를 도와주세요.
고마워요, 프시타.
답변1
실제로 차단하는 것은 방화벽 자체입니다.
INPUT 체인에 TCP 포트 80에 대한 규칙을 추가했지만 여전히 CentOS 7의 iptables의 광범위한 기본 구성으로 인해 일부 다른 체인의 일부 규칙은 VM에서 외부로의 트래픽을 차단했습니다.
방금 방화벽을 중지하려고 시도했는데 이제 작동합니다.