很幸运注册到了甲骨文,却发现了许多问题

一:甲骨文SSH连接后,上传文件失败

甲骨文默认禁止root直连,你用的普通用户(如opc/ubuntu)不是系统目录的属主,往/var/www、/usr/local这类目录上传文件自然会失败。

方法一:切换到root
su -i

方法二:修改目录权限

sudo chmod -R 777 /etc/ssl
这允许任何人写入,用完建议改回 755
sudo chmod -R 755 /etc/ssl

方法三:更改目录属主

sudo chown -R 你的用户名 /目标/路径

二、装好了网站却打不开


甲骨文Ubuntu 镜像虽然没装 UFW,但系统内核自带 iptables 防火墙,并且甲骨文的镜像里预置了一些默认拒绝规则,这就导致即使你在云控制台放行了端口,流量还是被系统挡住了。

第一步:检查并临时开放 iptables


请通过 SSH 连接到服务器,然后执行以下操作:

查看当前规则,确认是否有拦截:
sudo iptables -L -n
如果看到类似 Chain INPUT (policy DROP) 或 REJECT 的字样,说明系统防火墙确实在拦截流量。

临时开放所有流量(用于快速测试,判断是否为此问题):

设置默认策略为允许

sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

清空所有现有规则

sudo iptables -F
执行完这几条命令后,立即在本地浏览器尝试访问你的网站。如果能打开了,那就确认是 iptables 的问题,可以继续看下面的”持久化保存”步骤。如果还不行,请跳到第二步继续排查。

二.持久化保存规则(防止重启后失效):


Ubuntu 的 iptables 规则重启后会丢失,需要安装工具来保存。执行以下命令:

安装保存工具

sudo apt update && sudo apt install iptables-persistent -y

保存当前规则(刚才已设为 ACCEPT)

sudo netfilter-persistent save
一个小提示:如果你希望更精细地控制,只开放特定端口(比如 80 和 443),可以用下面的命令代替上面的”开放所有”:

先清空规则

sudo iptables -F

允许 SSH(22端口),非常重要!否则你可能断连

sudo iptables -A INPUT -p tcp –dport 22 -j ACCEPT

允许 HTTP(80)和 HTTPS(443)

sudo iptables -A INPUT -p tcp –dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp –dport 443 -j ACCEPT

最后设置默认拒绝其他入站流量

sudo iptables -P INPUT DROP

三、安装 iptables-persistent 后反而又连接不了,因为它自动加载了之前保存的旧规则,覆盖了你之前清空后的临时规则

步骤 1:立即清空所有 iptables 规则

设置默认策略为 ACCEPT

sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

清空所有规则

sudo iptables -F
sudo iptables -X

清空 NAT 表(如果有)

sudo iptables -t nat -F
sudo iptables -t nat -X

清空 mangle 表

sudo iptables -t mangle -F
sudo iptables -t mangle -X

执行完后,立即在本地浏览器测试网站能否打开。如果还是打不开,再执行:

彻底清空所有链

sudo iptables -F INPUT
sudo iptables -F OUTPUT
sudo iptables -F FORWARD

步骤 2:验证规则已清空


sudo iptables -L -n
应该看到类似这样的输出(所有链都是 ACCEPT,且没有规则):

text
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

步骤 3:保存当前清空后的规则(重要!)

保存当前规则(即空规则)到配置文件

sudo netfilter-persistent save
这会覆盖 /etc/iptables/rules.v4 和 /etc/iptables/rules.v6 文件,防止重启后旧规则再次加载。

步骤 4:验证保存成功

查看保存的规则文件内容

sudo cat /etc/iptables/rules.v4 | grep -E “COMMIT|^-P” | head -10
应该看到默认策略是 ACCEPT。

更精细的方案(如果你想要只开放特定端口)
如果你不希望完全开放所有端口,而是只想开放 80、443、22 等必要端口,可以这样配置:

b# 清空所有规则
sudo iptables -F
sudo iptables -X

设置默认策略为 DROP(拒绝所有)

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

允许本地回环

sudo iptables -A INPUT -i lo -j ACCEPT

允许已建立的连接(重要:保证 SSH 不断连)

sudo iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

开放 SSH(22 端口)

sudo iptables -A INPUT -p tcp –dport 22 -j ACCEPT

开放 HTTP(80)和 HTTPS(443)

sudo iptables -A INPUT -p tcp –dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp –dport 443 -j ACCEPT

开放 ICMP(ping)

sudo iptables -A INPUT -p icmp –icmp-type echo-request -j ACCEPT

保存规则

sudo netfilter-persistent save

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注