记录一下自己配置甲骨文云VPS网络踩的几个坑
- 内容介绍
- 文章标签
- 相关推荐
甲骨文云的配置页面实在是太复杂了, 自己来来回回折腾很久才配置好, 在这里记录一下下次可以直接参考.
1 虚拟云网络(VCN)
1.1 创建虚拟云网络(VCN)
- 输入名称
- IPv4 CIDR 块: 输入
10.0.0.0/16 - IPv6前缀:
开启分配Oracle分配的IPv6/56前缀 - 点击创建VCN
1.2 创建子网
- 在新建的VCN详细信息页面中上方横向标签中选择
子网, 点击创建子网 - 输入名称
- IPv4 CIDR 块: 输入
10.0.0.0/24 - IPv6 前缀:
勾选分配 Oracle 分配的 IPv6 /64 前缀- Oracle分配的IPv6地址: 填写从00到FF的HEX值, 如
A1
- 安全列表: 选择
Default Security List for ***** - 点击创建子网
1.3 安全列表
- 点击进入新出现的子网, 进入子网详情页
- 在上方横向标签中选择
安全 - 点击安全列表中的
Default Security List for ***** - 在安全列表详情页中上方横向标签中选择
安全规则 - 在入站规则中点击
添加入站规则- 想要开放端口IPv4: 源CIDR
0.0.0.0/0IP协议TCP目的地端口范围想要开放的端口号 - 想要开放端口IPv6: 源CIDR
::/0IP协议TCP目的地端口范围想要开放的端口号
- 想要开放端口IPv4: 源CIDR
如果想要修改ssh端口, 需要提前在这里配置上新的端口号
1.4 预留(固定)公共IP
- 在VNC详情页, 子网详情页等
cloud.oralce.com/networking/下的页面左侧的竖向菜单中选择IP管理 - 在IP管理页面左侧的竖向菜单中选择
预留的公共IP - 在预留的公共 IPv4 地址页面中点击
预留公共IP地址按钮- 输入名称
- 点击
预留公共IP地址按钮
1.5 把使用临时IP的实例改为使用固定IP
- 进入实例的详情页, 在上方的横向标签列表中选择
网络 - 在网络页面中的附加的VNIC列表中, 点击列表中第一项的名称连接, 名称一般是
instance-yyyyMMdd-****, 旁边有一个主要VNIC小Badge - 在VNIC详情页上方水平的标签列表中选择
IP管理 - 在VNIC IP管理详情页中的IPv4地址列表中可以看到当前实例的内网IP和公共IP. 点击列表项最右边
...三个点菜单按钮, 在弹出菜单中选择编辑 - 将弹出抽屉中的公共IP类型改为
没有公共IP, 然后点击更新按钮 - 再次点击列表项右边
...三个点菜单按钮, 在弹出菜单中选择编辑 - 将弹出抽屉中的公共IP类型改为
预留的公共IP, 然后在下方预留的IP地址中选择之前建立的保留IP.
2 让新建的实例接入Internet
建立好实例后ping不通, ssh连不上, 有可能是因为VCN的子网没有连接到Internet
- 点击实例名称进入实例详情页
- 在实例详情页上方的横向标签中选择
网络 - 在网络页面最底下的快速操作部分, 将公共子网连接到Internet中点击
连接按钮
3 Ubuntu 24修改SSH端口
3.1 开启传统SSH服务
Ubuntu 24中的SSH默认不自己监听端口, 而是让systemd监听22端口, 因此直接修改SSH配置文件该端口号无效, 需要先执行
# 禁用系统的SSH Socket监听
sudo systemctl disable --now ssh.socket
# 启动传统的SSH监听服务
sudo systemctl enable --now ssh.service
# 重启SSH服务
sudo systemctl restart ssh.service
可以使用sudo ss -tulpn | grep ssh查看SSH当前监听的端口
3.2 配置防火墙开启新端口
Ubuntu 24默认没有安装ufw, 并且初始iptables自带禁止所有端口的配置, 需要进行相应的修改
执行sudo iptables -L -n --line-numbers查看当前iptables配置, 输出的内容最开通大致是
Chain INPUT (policy DROP)
num target prot opt source destination
1 ACCEPT 0 -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT 1 -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT 0 -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT 6 -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 REJECT 0 -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
其中第5条禁止了所有1-4规则没允许的连接, 执行sudo iptables -D INPUT 5删除第5条
然后执行sudo apt install ufw安装ufw, 安装完毕后执行
sudo ufw allow 你想开放的端口/tcp
# 开机自动启动ufw
sudo ufw enable
# 重新加载ufw配置
sudo ufw reload
3.3 修改SSH配置文件
sudo nano /etc/ssh/sshd_config
将其中的#Port 22开头的#删掉, 然后将22改为想要配置的端口号
按Ctrl+O然后回车保存, 再按Ctrl+X退出
执行sudo systemctl restart ssh重启SSH服务
然后新开一个终端, 在里面尝试用新的端口号登录ssh, 如果能成功登录, 则可以在Oracle安全列表中删除22端口的放行配置
4 服务器启用IPv6 Internet连接
如果服务器在test-ipv6.com等测试网站通不过IPv6测试, 可能是因为IPv6没有正确的配置
4.1 配置Oracle路由表
默认的Oracle路由可能只配置了IPv4 Internet连接, 需要手动添加IPv6 Internet连接.
在虚拟云网络(VCN)详情页上方的横向标签中, 选择路由标签, 点击下方路由表中的Default Route Table for *****进入路由表详情页
在路由表详情页上方的横向标签中选择路由规则标签, 查看下方的路由规则列表, 如果没有目的地为::/0的项, 则需要手动添加, 点击添加路由规则
- 协议版本:
IPv6 - 目标类型:
Internet网关 - 目的地CIDR块:
::/0 - 目标Internet网关: 选择列表中有的网关, 使用前面快速创建生成的网关是
ig-quick-action-IGW - 点击
添加路由规则按钮
4.2 Docker容器使用IPv6
Docker容器想要使用IPv6 Internet连接, 需要将容器的network设置为host模式
4.3 绕过Ubuntu本地DNS代理
有时候在test-ipv6.com等网站测试IPv6会报错:
你的DNS服务器(可能由运营商提供)没有接入或没有配置IPv6, 将来这可能会妨碍你访问纯IPv6网站.
Ubuntu默认在本地跑一个小型DNS代理127.0.0.53, 有时候会造成IPv6解析兼容性问题. 另外Oracle内部还有一个DNS服务器, 如169.254.169.254, 这个DNS有时也会造成IPv6解析兼容性问题. 解决方法是在/etc/resolv.conf中强制写入我们想要设置的DNS服务器, 然后锁定文件, 防止其他进程篡改:
# 删除当前指向本地代理的符号链接
sudo rm /etc/resolv.conf
# Google 的 IPv4
sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'
# Cloudflare 的 IPv4
sudo bash -c 'echo "nameserver 1.1.1.1" >> /etc/resolv.conf'
# Google 的 IPv6
sudo bash -c 'echo "nameserver 2001:4860:4860::8888" >> /etc/resolv.conf'
# 锁定文件
sudo chattr +i /etc/resolv.conf
4.4 增加UDP缓冲区
系统默认的208KB缓冲区有些小, 可以调大一些
# 临时增大 UDP 缓冲区到 2.5 MB
sudo sysctl -w net.core.rmem_max=2500000
sudo sysctl -w net.core.wmem_max=2500000
为了让它重启后依然生效, 可以添加到系统配置中
echo "net.core.rmem_max=2500000" | sudo tee -a /etc/sysctl.conf
echo "net.core.wmem_max=2500000" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
网友解答:
--【壹】--:
可以学习学习大佬的流程,后续使用的时候测试一下
--【贰】--:
oci的网络配置确实复杂的出奇,完全就是给企业集群用的没考虑个人用户。aws azure gcp配置都远没这么复杂
甲骨文云的配置页面实在是太复杂了, 自己来来回回折腾很久才配置好, 在这里记录一下下次可以直接参考.
1 虚拟云网络(VCN)
1.1 创建虚拟云网络(VCN)
- 输入名称
- IPv4 CIDR 块: 输入
10.0.0.0/16 - IPv6前缀:
开启分配Oracle分配的IPv6/56前缀 - 点击创建VCN
1.2 创建子网
- 在新建的VCN详细信息页面中上方横向标签中选择
子网, 点击创建子网 - 输入名称
- IPv4 CIDR 块: 输入
10.0.0.0/24 - IPv6 前缀:
勾选分配 Oracle 分配的 IPv6 /64 前缀- Oracle分配的IPv6地址: 填写从00到FF的HEX值, 如
A1
- 安全列表: 选择
Default Security List for ***** - 点击创建子网
1.3 安全列表
- 点击进入新出现的子网, 进入子网详情页
- 在上方横向标签中选择
安全 - 点击安全列表中的
Default Security List for ***** - 在安全列表详情页中上方横向标签中选择
安全规则 - 在入站规则中点击
添加入站规则- 想要开放端口IPv4: 源CIDR
0.0.0.0/0IP协议TCP目的地端口范围想要开放的端口号 - 想要开放端口IPv6: 源CIDR
::/0IP协议TCP目的地端口范围想要开放的端口号
- 想要开放端口IPv4: 源CIDR
如果想要修改ssh端口, 需要提前在这里配置上新的端口号
1.4 预留(固定)公共IP
- 在VNC详情页, 子网详情页等
cloud.oralce.com/networking/下的页面左侧的竖向菜单中选择IP管理 - 在IP管理页面左侧的竖向菜单中选择
预留的公共IP - 在预留的公共 IPv4 地址页面中点击
预留公共IP地址按钮- 输入名称
- 点击
预留公共IP地址按钮
1.5 把使用临时IP的实例改为使用固定IP
- 进入实例的详情页, 在上方的横向标签列表中选择
网络 - 在网络页面中的附加的VNIC列表中, 点击列表中第一项的名称连接, 名称一般是
instance-yyyyMMdd-****, 旁边有一个主要VNIC小Badge - 在VNIC详情页上方水平的标签列表中选择
IP管理 - 在VNIC IP管理详情页中的IPv4地址列表中可以看到当前实例的内网IP和公共IP. 点击列表项最右边
...三个点菜单按钮, 在弹出菜单中选择编辑 - 将弹出抽屉中的公共IP类型改为
没有公共IP, 然后点击更新按钮 - 再次点击列表项右边
...三个点菜单按钮, 在弹出菜单中选择编辑 - 将弹出抽屉中的公共IP类型改为
预留的公共IP, 然后在下方预留的IP地址中选择之前建立的保留IP.
2 让新建的实例接入Internet
建立好实例后ping不通, ssh连不上, 有可能是因为VCN的子网没有连接到Internet
- 点击实例名称进入实例详情页
- 在实例详情页上方的横向标签中选择
网络 - 在网络页面最底下的快速操作部分, 将公共子网连接到Internet中点击
连接按钮
3 Ubuntu 24修改SSH端口
3.1 开启传统SSH服务
Ubuntu 24中的SSH默认不自己监听端口, 而是让systemd监听22端口, 因此直接修改SSH配置文件该端口号无效, 需要先执行
# 禁用系统的SSH Socket监听
sudo systemctl disable --now ssh.socket
# 启动传统的SSH监听服务
sudo systemctl enable --now ssh.service
# 重启SSH服务
sudo systemctl restart ssh.service
可以使用sudo ss -tulpn | grep ssh查看SSH当前监听的端口
3.2 配置防火墙开启新端口
Ubuntu 24默认没有安装ufw, 并且初始iptables自带禁止所有端口的配置, 需要进行相应的修改
执行sudo iptables -L -n --line-numbers查看当前iptables配置, 输出的内容最开通大致是
Chain INPUT (policy DROP)
num target prot opt source destination
1 ACCEPT 0 -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT 1 -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT 0 -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT 6 -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 REJECT 0 -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
其中第5条禁止了所有1-4规则没允许的连接, 执行sudo iptables -D INPUT 5删除第5条
然后执行sudo apt install ufw安装ufw, 安装完毕后执行
sudo ufw allow 你想开放的端口/tcp
# 开机自动启动ufw
sudo ufw enable
# 重新加载ufw配置
sudo ufw reload
3.3 修改SSH配置文件
sudo nano /etc/ssh/sshd_config
将其中的#Port 22开头的#删掉, 然后将22改为想要配置的端口号
按Ctrl+O然后回车保存, 再按Ctrl+X退出
执行sudo systemctl restart ssh重启SSH服务
然后新开一个终端, 在里面尝试用新的端口号登录ssh, 如果能成功登录, 则可以在Oracle安全列表中删除22端口的放行配置
4 服务器启用IPv6 Internet连接
如果服务器在test-ipv6.com等测试网站通不过IPv6测试, 可能是因为IPv6没有正确的配置
4.1 配置Oracle路由表
默认的Oracle路由可能只配置了IPv4 Internet连接, 需要手动添加IPv6 Internet连接.
在虚拟云网络(VCN)详情页上方的横向标签中, 选择路由标签, 点击下方路由表中的Default Route Table for *****进入路由表详情页
在路由表详情页上方的横向标签中选择路由规则标签, 查看下方的路由规则列表, 如果没有目的地为::/0的项, 则需要手动添加, 点击添加路由规则
- 协议版本:
IPv6 - 目标类型:
Internet网关 - 目的地CIDR块:
::/0 - 目标Internet网关: 选择列表中有的网关, 使用前面快速创建生成的网关是
ig-quick-action-IGW - 点击
添加路由规则按钮
4.2 Docker容器使用IPv6
Docker容器想要使用IPv6 Internet连接, 需要将容器的network设置为host模式
4.3 绕过Ubuntu本地DNS代理
有时候在test-ipv6.com等网站测试IPv6会报错:
你的DNS服务器(可能由运营商提供)没有接入或没有配置IPv6, 将来这可能会妨碍你访问纯IPv6网站.
Ubuntu默认在本地跑一个小型DNS代理127.0.0.53, 有时候会造成IPv6解析兼容性问题. 另外Oracle内部还有一个DNS服务器, 如169.254.169.254, 这个DNS有时也会造成IPv6解析兼容性问题. 解决方法是在/etc/resolv.conf中强制写入我们想要设置的DNS服务器, 然后锁定文件, 防止其他进程篡改:
# 删除当前指向本地代理的符号链接
sudo rm /etc/resolv.conf
# Google 的 IPv4
sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'
# Cloudflare 的 IPv4
sudo bash -c 'echo "nameserver 1.1.1.1" >> /etc/resolv.conf'
# Google 的 IPv6
sudo bash -c 'echo "nameserver 2001:4860:4860::8888" >> /etc/resolv.conf'
# 锁定文件
sudo chattr +i /etc/resolv.conf
4.4 增加UDP缓冲区
系统默认的208KB缓冲区有些小, 可以调大一些
# 临时增大 UDP 缓冲区到 2.5 MB
sudo sysctl -w net.core.rmem_max=2500000
sudo sysctl -w net.core.wmem_max=2500000
为了让它重启后依然生效, 可以添加到系统配置中
echo "net.core.rmem_max=2500000" | sudo tee -a /etc/sysctl.conf
echo "net.core.wmem_max=2500000" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
网友解答:
--【壹】--:
可以学习学习大佬的流程,后续使用的时候测试一下
--【贰】--:
oci的网络配置确实复杂的出奇,完全就是给企业集群用的没考虑个人用户。aws azure gcp配置都远没这么复杂

