Назад | Перейти на главную страницу

VirtualBox и CentOS 6 не могут подключиться к httpd

Я пытаюсь создать CI-сервер на виртуальной машине, используя CentOS 6 Minimalist Install и VirtualBox 4.1.4r74291 на хост-компьютере Windows 7.

Прежде чем вы спросите:

Вот некоторые выходные данные команды:

ifconfig -a eth1
eth1      Link encap:Ethernet  HWaddr 08:00:27:2B:4E:3C
      inet addr:192.168.1.104  Bcast:192.168.1.255  Mask:255.255.255.0
      inet6 addr: fe80::a00:27ff:fe2b:4e3c/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:320629 errors:0 dropped:0 overruns:0 frame:0
      TX packets:171826 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:445888239 (425.2 MiB)  TX bytes:14540682 (13.8 MiB)

nmap localhost
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.0000080s latency).
    Hostname localhost resolves to 2 IPs. Only scanned 127.0.0.1
    Not shown: 994 closed ports
    PORT     STATE SERVICE
    22/tcp   open  ssh
    25/tcp   open  smtp
    80/tcp   open  http
    8009/tcp open  ajp13
    8080/tcp open  http-proxy
    9418/tcp open  git

    Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds

iptables -vL
    Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination
     315K  441M ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED
        0     0 ACCEPT     icmp --  any    any     anywhere             anywhere
     6010  281K ACCEPT     all  --  lo     any     anywhere             anywhere
        4   208 ACCEPT     tcp  --  any    any     anywhere             anywhere            state NEW tcp dpt:ssh
     8676  668K REJECT     all  --  any    any     anywhere             anywhere            reject-with icmp-host-prohibited

    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination
        0     0 REJECT     all  --  any    any     anywhere             anywhere            reject-with icmp-host-prohibited

    Chain OUTPUT (policy ACCEPT 184K packets, 13M bytes)
     pkts bytes target     prot opt in     out     source               destination

netstat -aln | grep 80
    tcp        0      0 :::8009                     :::*                        LISTEN
    tcp        0      0 :::8080                     :::*                        LISTEN
    tcp        0      0 :::80                       :::*                        LISTEN
    tcp        0      0 ::ffff:127.0.0.1:8005       :::*                        LISTEN
    unix  2      [ ACC ]     STREAM     LISTENING     8093   public/cleanup
    unix  3      [ ]         STREAM     CONNECTED     8099
    unix  3      [ ]         STREAM     CONNECTED     8098
    unix  3      [ ]         STREAM     CONNECTED     8096
    unix  3      [ ]         STREAM     CONNECTED     8095
    unix  3      [ ]         STREAM     CONNECTED     8092
    unix  3      [ ]         STREAM     CONNECTED     8091
    unix  3      [ ]         STREAM     CONNECTED     8089
    unix  3      [ ]         STREAM     CONNECTED     8088
    unix  2      [ ]         DGRAM                    8054
    unix  2      [ ]         DGRAM                    8013

И от хозяина:

telnet 192.168.1.104 80
    Could not open connection to the host, on port 80: Connect failed

Итак, оба порта открыты, и похоже, что брандмауэр позволяет подключать эти порты извне (но, честно говоря, я только догадываюсь об этом. Я действительно не знаю, как читать вывод из iptables -L.) Тем не менее, всякий раз, когда я пытаюсь зайти на 192.168.1.104:(80|8080) в Chrome с хоста, я получаю печально известное:

Oops! Google Chrome could not connect to 192.168.1.104

Это возможно, поскольку я делал это раньше с установкой Kubuntu (тем не менее, на .1.103), и я пытался перейти на виртуальную машину с меньшим объемом памяти и немного большей безопасностью.

Какие-либо предложения? Нужна дополнительная информация? Я сейчас весь в ушах.

РЕДАКТИРОВАТЬ:

После ответа Янне httpd теперь слушает 192.168.1.104:80. Таким образом, я больше не могу рысь на локальном хосте и выполняю wget 127.0.0.1 дает мне ошибку отказа в соединении. Это уместно, потому что теперь я должен lynx/wget 192.168.1.104 чтобы получить результаты, которые я получал заранее с 127.0.0.1 (страница «Это работает!» из Apache и загрузка index.html, соответственно.) Еще одна подсказка, возможно?

Я не вижу в вашем iptable4s правила, которое разрешает соединение через порт 80 (кроме разрешения blanket на lo). Попробуйте открыть порт 80.

iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT

или

iptables -I INPUT -i eth1 -p tcp -m tcp --dport 80 -j ACCEPT

если вы хотите ограничить доступ к соединениям на eth1.

Это дикий выстрел в темноте: я думаю, ваш Apache слушает 127.0.0.1 и нет 192.168.1.104.

Если netstat -tlnp возвращает, что Apache слушает 127.0.0.1:80, то он вообще не будет отвечать на трафик eth1.

Видеть Listen директива из вашего httpd.conf. Следует сказать 192.168.1.104:80

РЕДАКТИРОВАТЬ: Эй, должно быть, дело в iptables. Когда вы говорите «Я могу использовать git», вы имеете в виду, что используете git вместо ssh?

В настоящее время ваши правила INPUT iptables, похоже, разрешают новые подключения только к порту ssh, а не к порту 80. Попробуйте добавить это в свои правила iptables:

iptables -I INPUT 1 -i eth1 -p tcp -d 0/0 --dport 80 -j ACCEPT