Apache2 无法在端口 80 上运行,但在 Proxmox 中的端口 8000 上运行(相同配置)

Apache2 无法在端口 80 上运行,但在 Proxmox 中的端口 8000 上运行(相同配置)

几个月前,我租用了一个 Kimsufi 服务器,我尝试转发端口,但没有成功。

我放弃了服务器,几天前我开始重新配置一切,但仍然遇到问题。

我发现某些端口默认是被阻止的,但我仍然不知道如何解除阻止。

主要问题是我在虚拟机上安装了 apache2(使用 Debian),如果我使用端口 8000 来托管 Web,则一切正常(使用http://z3nth10n.net:8000)。

这是我的接口配置(/etc/network/interfaces):

auto lo
iface lo inet loopback

iface enp4s0 inet manual

iface enp5s0 inet manual

auto vmbr0
iface vmbr0 inet static
        address  <public ip>
        netmask  24
        gateway  <public gateway>
        bridge-ports enp4s0
        bridge-stp off
        bridge-fd 0

auto vmbr1
iface vmbr1 inet static
        address  192.168.5.99
        netmask  24
        bridge-ports none
        bridge-stp off
        bridge-fd 0
        post-up echo 1 > /proc/sys/net/ipv4/ip_forward
        post-up   iptables -t nat -A POSTROUTING -s '192.168.xx.0/24' -o vmbr0 -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -s '192.168.xx.0/24' -o vmbr0 -j MASQUERADE
        post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 8000 -j DNAT --to 192.168.xx.55:8000
        post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 8000 -j DNAT --to 192.168.xx.55:8000
        post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 80 -j DNAT --to 192.168.xx.55:80
        post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 80 -j DNAT --to 192.168.xx.55:80
        post-up iptables -A FORWARD -p tcp -d 192.168.xx.55 --dport 80 -j ACCEPT
        post-down iptables -D FORWARD -p tcp -d 192.168.xx.55 --dport 80 -j ACCEPT

我添加了以下两行:

        post-up iptables -A FORWARD -p tcp -d 192.168.xx.55 --dport 80 -j ACCEPT
        post-down iptables -D FORWARD -p tcp -d 192.168.xx.55 --dport 80 -j ACCEPT

但这仍然不起作用。

nmap 显示该端口在虚拟机上是打开的,但在主机上是关闭的,所以这让我很困惑。

我读 (iptables 已打开端口 80,但 nmap 显示端口已关闭) 如果端口未被使用,则 nmap 上不会显示为打开。

我也执行了该netstat -lnp | grep 80命令,这是输出:

主机

root@ns324919:~# netstat -lnp | grep 80
tcp        0      0 0.0.0.0:8006            0.0.0.0:*               LISTEN      1572/pveproxy worke
unix  2      [ ACC ]     STREAM     LISTENING     17217    980/qmeventd         /var/run/qmeventd.sock
unix  2      [ ACC ]     STREAM     LISTENING     2380     1/init               /run/rpcbind.sock
unix  2      [ ACC ]     STREAM     LISTENING     18056    991/watchdog-mux     /run/watchdog-mux.sock
unix  2      [ ACC ]     STREAM     LISTENING     34980709 1975/kvm             /var/run/qemu-server/100.vnc
unix  2      [ ACC ]     STREAM     LISTENING     23800    1665/master          private/bsmtp
unix  2      [ ACC ]     STREAM     LISTENING     23803    1665/master          private/scalemail-backend
unix  2      [ ACC ]     STREAM     LISTENING     23806    1665/master          private/mailman

虚拟机

root@debian:~# netstat -lnp | grep 80
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      808/mysqld         
tcp6       0      0 :::80                   :::*                    LISTEN      14825/apache2       
unix  2      [ ACC ]     STREAM     LISTENING     12719    808/mysqld           /var/run/mysqld/mysqld.sock

因此,我可以假设该端口未被主机使用。

另外,我禁用了防火墙:

root@ns324919:~# pve-firewall status
Status: disabled/stopped

我禁用了所有内容以确保它不会干扰我的测试,但我有疑问,因为我不知道我是否创建了 DMZ 网络或者我是否需要使用防火墙转发某些东西。

答案1

检查httpd.conf/apache.conf文件,Listen端口应该是80而不是8000。

这是云实例吗?如果是,即使您允许它,iptables它也不会向外界公开。您需要在提供商的 ACL 中打开端口。

相关内容