![Apache2 无法在端口 80 上运行,但在 Proxmox 中的端口 8000 上运行(相同配置)](https://linux22.com/image/745245/Apache2%20%E6%97%A0%E6%B3%95%E5%9C%A8%E7%AB%AF%E5%8F%A3%2080%20%E4%B8%8A%E8%BF%90%E8%A1%8C%EF%BC%8C%E4%BD%86%E5%9C%A8%20Proxmox%20%E4%B8%AD%E7%9A%84%E7%AB%AF%E5%8F%A3%208000%20%E4%B8%8A%E8%BF%90%E8%A1%8C%EF%BC%88%E7%9B%B8%E5%90%8C%E9%85%8D%E7%BD%AE%EF%BC%89.png)
几个月前,我租用了一个 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 中打开端口。