昨天,我设置了我的第一个始终免费的计算 VM。我在我的虚拟机上安装了 ubuntu 18.04 minimal。为了我的网络服务需要,我安装了 Nginx。我很困惑,因为当我尝试通过网络浏览器访问我的公共 IP 时,Nginx 欢迎页面没有加载。我认为那是因为端口 80 没有打开。因此,我尝试通过在安全列表详细信息菜单中设置入口规则来打开它,如下图所示。
但是现在,我仍然无法访问我的虚拟机中的网络服务器。可能在 Oracle Cloud 中有更多有经验的人可以帮助我解决这个问题。谢谢
我在这上面浪费了很多时间。 我希望我先找到这个: https://docs.cloud.oracle.com/en-us/iaas/developer-tutorials/tutorials/apache-on-ubuntu/01oci-ubuntu-apache-summary.htm
为端口 80 配置入口路由
安装 ubuntu.
安装apache/nginx
curl localhost
应该以文本格式返回网页,但是在互联网上失败。
忘记 ufw 防火墙 - 这可能会导致 Oracle 防火墙出现问题
使用
$ sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j ACCEPT
$ sudo netfilter-persistent save
这就是我在没有直接干预
iptables
的情况下做到的。
首先在Oracle Cloud vps的dashboard/Networking/Virtual Cloud Networks中创建一个
Ingress Rule
,例如端口范围为23-90
接下来,在ubuntu中安装
firewalld
(firewalld
我觉得centos有)
sudo apt-get install firewalld
sudo systemctl enable firewalld
sudo systemctl start firewalld
你只需要这样做一次。重启后它仍然存在。
然后,打开80端口:
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent # or --add-service=http
sudo firewall-cmd --reload
验证:
sudo firewall-cmd --list-all
输出:
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client ssh
ports: 80/tcp
...
同样适用于打开其他端口。您可以轻松删除端口(
--remove-port=80/tcp
+ --reload
),请参阅firewalld
文档。
从远程计算机进行测试
python3 -m http.server 80
curl ip-of-oc-vps:80
我还在 Oracle Cloud Always Free vps 的防火墙上浪费了很多时间。我希望这可以节省其他人一些时间。
如果您有互联网网关并且还配置了路由表,您可能仍需要检查操作系统级别的防火墙。如果未配置,您可能需要执行此命令:
sudo ufw allow http
有关更多详细信息,请参阅:How to Open/Allow incoming firewall port on Ubuntu
就我而言——CentOS 8 Image,firewall-cmd 保存了规则,但端口不起作用。原因是系统使用了 iptables 而不是 nftables。所以,改变这个 /etc/firewalld/firewalld.conf 文件
# FirewallBackend=nftables
FirewallBackend=iptables
和
#firewall-cmd restart
成功了。
你需要为你想要的端口允许防火墙
假设您希望实例上的 HTTP 和 HTTPS 端口启动,那么以下命令就足够了。
sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT
然后在下次重启后保存 iptable 规则
sudo service iptables save
还要确保您保留了 Oracle 云控制台上端口的入口规则。
$ sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j ACCEPT
$ sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 443 -j ACCEPT
$ sudo netfilter-persistent save