• Oracle Cloud Shell(甲骨文云Shell)+ FRP(反向代理)实现防火墙穿透,内网端口映,射公网


    我们知道 “甲骨文云Shell” 有两种网络模式,一为:Public Network(公共网络),二为:Private Network(专用网络)

    那么 “专用网络” 可以用于连接并且管理,本云账户主区域,虚拟VNC子网内得云服务器,而 “公共网络” 可以自由访问公网,但只能以C模式,因为其公网防火墙是被屏蔽IN方向得。

    但是,人们仍旧可以让甲骨文云Shell,控制台运行的服务器端口被映射到公网,并且加以访问,毕竟人们要知道,甲骨文云Shell,控制台运行的服务器,可是足足分配了10G的内存,并且CPU双核并且性能非常强悍的。

    而且甲骨文云Shell,控制台分配的公网IP还是 “静态IP”,就是它的IP地址几个月都不会发生任何改变非常之香气,只要不更换 “甲骨文云账户” 或者切换到其它的主区域,并且无限上下行流量,保底宽频大小上GE。

    但我们需要准备以下几个工作:

    1、准备一台具有公共IP且可以开放外网端口的服务器,可以是NAT/VPS,上行带宽口子越大越好

    2、分析甲骨文云Shell,机器的公网IP地址、还有本机IP地址。

         2.1、本机IP地址,无法通过 ip a、ifconfig 命令来获取本机IP地址,关于网卡IP配置文件均不可以访问。

                 可尝试以下方法:

                 方法一:awk '/32 host/ { print f } {f=$2}' <<< "$(

                 方法二:nano showips.sh

    1. #!/bin/bash
    2. ft_local=$(awk '$1=="Local:" {flag=1} flag' <<< "$(")
    3. for IF in $(ls /sys/class/net/); do
    4. networks=$(awk '$1=="'$IF'" && $3=="00000000" && $8!="FFFFFFFF" {printf $2 $8 "\n"}' <<< "$(" )
    5. for net_hex in $networks; do
    6. net_dec=$(awk '{gsub(/../, "0x& "); printf "%d.%d.%d.%d\n", $4, $3, $2, $1}' <<< $net_hex)
    7. mask_dec=$(awk '{gsub(/../, "0x& "); printf "%d.%d.%d.%d\n", $8, $7, $6, $5}' <<< $net_hex)
    8. awk '/'$net_dec'/{flag=1} /32 host/{flag=0} flag {a=$2} END {print "'$IF':\t" a "\n\t'$mask_dec'\n"}' <<< "$ft_local"
    9. done
    10. done
    11. exit 0

              2.2、

                   方法一:获取公网IP地址,这种方法比较多,可以显示来源客户端IP地址的工具有很多,比如人们使用 perf、perf3 的客户端/服务器模式来测试公网IP地址。

                  方法二:curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'

    3、由于不能使用 rz/sz 这类型的工具,但人们可以采用 scp 命令或把资源传到自己的HTTP服务器上面使用 wget/curl 命令来下载工具。

    4、推测甲骨文云运行 Cloud Shell Console 的母鸡服务器,应该是采用的标准版本的 BBR+FQ 拥塞控制算法,所以如果线路质量极差的情况下,另一端可以考虑采用 “锐速、BBR+”,并且对TCP内核协议栈参数进行调优。

    本文实战的甲骨文云 Shell 控制台主区域是韩国首尔,本来以为是可以自带流媒体解锁 Netflix、Disney+,然而错亿了,所以人们可以尝试其它主区域的 Cloud Shell 控制台能不能解锁流媒体。

    现在开始部署FRP工具。

    1、甲骨文云 Shell 控制台上部署FRP工具的客户端模式 

    开源项目:liulilittle/frp: Fast reverse proxy supports UDP/TCP tunnel proxy. (github.com)

    下载官方编译好的ELF二进制程序,甲骨文云 Shell 控制台服务器是 AMD_X86_64 指令集处理器平台:

    https://github.com/liulilittle/frp/releases/download/1.0.0.0/frp-linux-x86_64.zip

    ZIP压缩包内自带三个文件:

    frp 工具ELF二进制程序(默认带X可执行权限)

    frpc.ini 客户端配置

    frps.ini 服务器配置 

    修改客户端模式配置 frpc.ini

    1. [app]
    2. alignment=4096
    3. mode=client
    4. ip=反向代理服务器IP地址
    5. port=反向代理服务器端口号
    6. backlog=511
    7. fast-open=true
    8. turbo.lan=true
    9. turbo.wan=true
    10. connect.timeout=10
    11. inactive.timeout=72
    12. protocol=websocket
    13. websocket.host=frp.org
    14. websocket.path=/tunnel
    15. [http]
    16. type=tcp
    17. local-ip=185.207.153.31
    18. local-port=80
    19. remote-port=80

    protocol 目前可选两个协议:tcp、websocket

    2、具有公网IP的运行反向代理服务器程序的VPS/VDS机器

    服务器指令集是X86_64就下X86_64,是AARCH64(ARM64)就下AARCH64的压缩包,解压以后配置 frps.ini 文件。

    1. [app]
    2. alignment=4096
    3. mode=server
    4. ip=::
    5. port=7000
    6. backlog=511
    7. fast-open=true
    8. turbo.lan=true
    9. turbo.wan=true
    10. connect.timeout=10
    11. inactive.timeout=72
    12. protocol=websocket
    13. websocket.host=frp.org
    14. websocket.path=/tunnel

    运行FRP反向代理工具程序

    如果本地配置文件只有 frpc.ini、frps.ini 则FRP程序运行时自动选择配置文件,但如果目录下这两个文件都有那么运行的时候需要手动执行命令 frp -c 配置文件路径。

    参考命令:frp -c frpc.inii、frp -c frps.ini

    FRP可以识别当前目录下的默认配置文件命:frp.ini、frpd.ini、frpc.ini、frps.ini

    一切准备就绪以后,我们来实战上网访问的效果,速度及效果非常给力,测试本地环境: 

    甲骨文云韩国首尔 Cloud Shell Console + 甲骨文云韩国首尔ARM64 2GE + 中国大陆成都移动

     

     

     

     

     

  • 相关阅读:
    C/C++学习 -- SHA-256算法
    QT软件开发-基于FFMPEG设计视频播放器-支持软解与硬解(一)
    什么?又来看驱动的过程了?是滴,必需滴--I2C设备的注册过程(小白篇)
    chromedp库编写程序
    【SQL语法基础】什么是存储过程,在实际项目中用得多么?
    JetBrains产品字体大小调整
    学习如何在 Vue.js 中实现车牌号校验
    如果给你一次机会,你想对前任说什么?是祝福他还是恨他
    Android开发第二课
    【新知实验室--音视频通话】腾讯云TRTC-实时音视频---多人会议视频通话SDK基础搭建
  • 原文地址:https://blog.csdn.net/liulilittle/article/details/126619215