私は Oracle VM VirtualBox を使用していて、その上で CentOS 7 インスタンスを実行しています。このマシンには 2 つのネットワーク アダプターをセットアップしました。1 つはホスト専用モードに設定され、もう 1 つは NAT モードに設定されています。VM に SSH 接続できます。現在、この VM で Web サーバーも実行しており、同じ方法でアクセスしたいと考えています。しかし、この方法では機能しません。ホストのポート 3000、ゲストのポート 80 など、他のルールも試しました。
ホストのポートは 12000、ゲストのポートは 80 です。
ホスト上の IP:3000 は同じで、ゲスト上の IP:ポートは正確です。
ホストには IP とポート 3000 がなく、ゲストには正確な IP:ポートがあります。
動作しません。ホストから VM へ、またその逆方向にも ping を実行できます。VM 内の Apache HTTPD 構成をテストしました。サーバーは稼働しています。
私は Lynx を使用してサイトにアクセスしましたが、これも VM 内でのみ機能しています。マシンまたはホスト OS の外部からは機能しません。
ホストからゲストへの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
どなたか助けてください。私はここで本当に重要な仕事をしようとしているのですが、ネットワークだけに困っているという非常に愚かな状況です。
助けてよみんな。
ありがとう、phsita。
答え1
実際にブロックしていたのはファイアウォールそのものでした。
TCP ポート 80 の INPUT チェーンにルールを追加しましたが、CentOS 7 の iptables の広範なデフォルト構成が原因で、他のチェーンの一部のルールが VM から外部へのトラフィックをブロックしていました。
試しにfirewalldを停止してみたところ、動作するようになりました。