首页 >>  正文

linux访问ip和端口

来源:baiyundou.net   日期:2024-09-23

作者:丶Source

写在前面

本文主要基于微信回调需求整理的 frp 内网穿透脚本。
最终效果就是通过一台带有公网 IP 的服务器实现通过在公网访问你的 Nas 上的应用
因为确实涉及到服务器配置、命令行操作,有一定的门槛,我会尽量以新手友好的方式来分享教程

本文大纲如下,可按需选择感兴趣部分查看:

微信回调

最初就是为了配置 NasTools 支持微信回调,实现微信搜索影片自动下载:

  • 回调是由微信的服务器发起,需要提供一个 NasTools 的公网访问入口

  • 目前使用的是移动宽带,只有公网 IPv6,没有提供公网 IPv4

  • 企业微信回调目前不支持 IPv6

那么最终就只能做利用内网穿透代理来暴露公网了
文章篇幅原因且企业微信回调支持通过 IP 访问,本文未涉及域名及Https配置

内网穿透

内网穿透软件,之前也有介绍过 ZeroTier

但 ZeroTier 更多是用于异地组网实现类似 VPN 的功能,不太适用于这个需求场景:

通过内网穿透,将 NasTools 的微信回调接口暴露到公网给企业微信应用发访问

而这恰恰是 frp 的目标场景,正如官网介绍的:

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

其工作流程如下:

  1. 外网机器无法访问到 Nas,但是 Nas 可以主动访问公网的 vps

  2. 在 Nas 运行 frpc 客户端主动与 vps 上的 frps 服务端建立连接

  3. 运行在公网 vps 的 frps 服务端将特定端口的请求转发给 Nas

通过在公网 vps 上进行内网穿透代理,最终实现了企业微信回调访问 NasTools

准备工作

在配置内网穿透前需要完成以下前提条件:

前提条件作用
一台有公网 IPv4 的 vps部署 frps 提供穿透代理
支持通过 ssh 登录到服务器的终端登录 vps 进行命令行配置
内网穿透软件本文选择了 frp 作为内网穿透工具

针对 vps 的选择,可以考虑:

  1. 国内的大厂提供的 vps,如腾讯云、阿里云、华为云等等

  2. 仅用于做内网穿透代理,使用最低配置即可,但必须要分配独占的公网 IP

  3. 不做其他用途的话,1Mbps 的带宽就足够提供回调访问了

  4. 选择 linux 系统,如 debian、ubuntu、centos 等

具体的 vps 购买及系统安装,厂商提供的教程已经非常全了,这里就不再展开细说

服务端配置

安全组开放端口

这里以目前我使用的腾讯云为例,仅列出关键步骤,完整操作见官网文档

完成 vps 购买及系统初始化后,需要规划服务器端口开放,有两种方式:

  • 放通所有端口,相当于不做任何访问控制

  • 放通自定义端口,仅开放指定的端口暴露公网,其他端口则不允许访问

嫌配置麻烦的话,可以选第一种,牺牲一定的安全性来换取便利

以腾讯云为例,新增一个安全组选择放通全部端口模版,然后关联 vps 实例即可
但更推荐按照最小权限开放来配置允许特定端口,也就是选择自定义模版

然后手动配置入站规则,也就是将需要暴露的端口开放访问,具体如下

端口用途默认推荐端口
ssh 登录端口22一般保持默认 22 端口即可
frps 服务端连接端口5443建议设置随机端口,如 44443
frps 仪表盘管理界面6443建议设置随机端口,如 44444
frps 穿透代理 NasTools 端口建议设置随机端口,如 44445

本文场景下最终需要用到的就是上述 4 个端口,frps 其他端口不是必须的

在刚才新建的自定义安全组中修改安全规则,添加入站规则:

  • 来源 设置0.0.0.0/0表示允许所有来源 IP

  • 协议端口设置 TCP:22TCP44443-44445 开放上述提到的端口

  • 策略 选择允许

  • 备注 自己随便填,这里我填了ssh 、frp

最后记得关联到云服务器 vps 生效,具体操作见官网文档

SSH登录服务器

这里主要介绍 windows 下的登录场景,如果是 macOS 可使用 iterm2 命令行登录

因为 frp 服务端需要登录到 vps 服务器上配置,因此需要一款 ssh 登录软件
这里以 putty 为例,其他还有 xshell 甚至 windows wsl 自带的 ssh client,自行选择

进入 putty官网 后点击 Download PuTTY 跳转到下载页面

  1. 找到 Alternative binary files 下载免安装版本

  2. 目前大部分 Windows 都是 64 位版本了,因此下载 64-bit x86 版本

下载后双击运行,进入 putty 配置页面准备登录服务器

运行之后开始登录服务器:

  • Host Name 部分输入你的 vps 分配的 IP

  • Port 保持默认的 22 端口,除非你有修改过 ssh 服务的端口

  • 最后点击 Open 按钮开始登录

因为是第一次连接到这台 vps 服务器,所以会有这个提示,点击 ACCEPT 即可

之后就是输入你 vps 的登录用户及密码完成登录配置

因为我主要是使用 macOS 因此下面的涉及到命令行操作都是在 iterm2 中完成

配置 frps 服务端

通过 ssh 登录服务器之后,使用一键配置脚本来部署 frps,复制以下命令执行:

wget https://code.aliyun.com/MvsCode/frps-onekey/raw/master/install-frps.sh -O /tmp/install-frps.sh 
bash /tmp/install-frps.sh install

首先会自动进行基础环境的检查,并安装相关的依赖软件,然后就开始进入配置页面

如上图提示是希望从哪里下载 frps 服务端软件:

这里保持默认阿里云即可,接下来设置 frps 服务端的监听端口,我使用44443端口:

仪表盘信息部分也需要进行调整:

  1. 仪表盘端口调整为随机端口,这里我使用44444端口

  2. 仪表盘登录的用户密码按需进行修改

其他参数全部保持默认,一直按回车就行,Token 建议保持随机字符串
最后会输出最终详情,记得保存下来方便后续使用

配置完成后,再通过以下命令来确定 frps 已经正常运行:frps status

之后访问 dashboard 并输入用户名密码登录,能看到这个页面就是已经配置完成

客户端配置

因为我们的目标是将 NasTools 的回调接口,那么 frpc 客户端可选择就有:

  • 运行在路由器上,并配置代理到 Nas 上的 Nastools 入口

  • 运行 Nas 上,并代理到本机的 NasTools 入口

可以根据自己实际情况来选择对应方案,下文会分别介绍具体的配置方式

Openwrt 部署 frpc

以 openwrt 为例,目前大部分的 op 固件会内置 frp 内网穿透
如果你的固件没有内置,也可自行下载安装:系统 - 软件包 - 过滤器 输入 frpc

需要安装以下两个软件包(如果没有搜到的话,需要刷新一下列表)

  • frpc 二进制可执行文件

  • luci-app-frpc 在 openwrt 提供 frpc 配置页面,这样就不需要进入命令行配置

尽量选择与你部署的 frps 服务端相同或接近的版本,版本想差太多无法保证功能可用

之后就可以在 openwrt 管理后台 服务 页面下找到 frp 内网穿透进行配置:

  • 勾选 启用

  • 填入服务器端口

  • 令牌 则是我们生成的 Token

  • 其他参数保持默认即可

接下来拉到服务列表点击添加按钮开始将 NasTools 暴露到公网:

  • Enable State 设置为启用

  • 使用 TCP 类型即可,VPS 暴露端口为 44445,这个端口已经开放了安全组

  • 内网设置到 NasTools 的入口,我的是10.0.0.2:3000按照你自己的修改

  • 服务备注名 设置一个唯一标识,当你同时通过 frp 暴露多个服务时需要区分开来

  • 建议开启数据加密,以保证 vps 到路由器之间的数据传输安全

配置完成后点击保存&应用,回到 frp 主页还需要在点击一次保存&应用

至此,路由器配置 frpc 完成

Nas 部署 frpc

如果是在 Nas 上,则建议通过 docker 来部署 frpc
我使用的镜像是 snowdreamtech/frpc,如果是通过 docker 命令启动,可参考:

但在如果是 Unraid 的话,建议使用我的模版仓库shuosiw/unraid,使用方式见

添加模版之后,点击 ADD CONTAINER 并选择 frpc 模版即可

如无特殊需求使用默认参数即可,之后点击下方的 APPLY 按钮启用
但回到 Docker 页面还是处于 stop 状态,这是因为没有配置文件,需要手动添加

在 unraid 上创建/mnt/user/appdata/frp/frpc.ini文件并写入如下配置:

[common]  
token=JwxXzxTTLbvKY2mn  
server_addr=xx.xx.xx.xx  
server_port=44443  
user=Unraid  
log_level=info  
protocol=tcp  
admin_addr=0.0.0.0  
admin_port=7400  
tcp_mux=true  
login_fail_exit=true  
 
[Nastool-Wechat]  
type=tcp  
remote_port=44445  
local_ip=10.0.0.2  
local_port=3000  
use_encryption=true  
use_compression=true  

其中 common 部分有 3 个配置项需要按照实际情况调整:

  • token 替换为你部署 frps 服务端时候设置或自动生成 Token

  • server_addr 替换为你 vps 的公网 IP

  • server_port 替换为你部署 frps 设置的服务端端口,也就是 bind_port

Nastool-Wechat也有 3 个需要按照实际情况调整:

  • remote_port 替换为你最终在 vps 映射 NasTools 的端口

  • local_ip 替换为你的 Nas IP

  • local_port 替换为你的 NasTools 映射端口

如果你熟悉命令行操作,可通过 unraid 管理后台 Terminal 进入网页版终端修改,
或者先在电脑上通过文件编辑器写好之后,再上传到 /mnt/user/appdata/frp/目录下

注意文件名一定要为 frpc.ini,否则容器进程启动后会因为找不到配置文件而报错退出

之后回到 Unraid 容器管理界面点击 Start 启动 frpc 容器,此时可正常启动
接下来在 Unraid 上 frpc 应用点击 WebUI 即可访问

或者使用 Nas IP + 7400 端口访问就可以看到主界面,比如我的是:10.0.0.2:7400

可以看到配置的应用已经启动了,后续有调整的话,也可以直接在 Configure 页面修改配置

验证穿透效果

如果一切配置无误你就已经可以通过 VPS 的公网 IP 及 NasTools 映射端口来访问了

在我这次配置中,我分配了44445端口给到 NasTools 穿透代理映射
浏览器会提示不安全,这是因为没有使用 https 加密,这是正常的提示

重新打开 frps 服务端的仪表盘页面,也可以看到刚才配置的穿透应用流量情况
那么接下里就是将你的 vps 公网穿透代理 NasTools 入口添加到企业微信回调接口即可

之前的文章已经介绍得非常详细了,这里就不展开说了

写在后面

写这篇文章时候有点无从下手的感觉,因为确实涉及到较多的命令行操作

smzdm 对命令指令的编辑及展示并不算太友好且有些值友对命令行操作也不是很熟悉

纠结了许久,最终效果就是这样了,也想了解一下值友对本文的易读性感觉如何。码字不易,多多点赞收藏,如果有任何疑问,可以评论我会定期回复。后续的一些优化,比如配置域名、ddns 以及设置微信回调白名单等等,可以考虑再出一些文章,如果你们有比较感兴趣的也可以评论回复。

","force_purephv":"0","gnid":"96086555fdac69b94","img_data":[{"flag":2,"img":[{"desc":"","height":"302","title":"","url":"https://p0.ssl.img.360kuai.com/t018b227cf549c9ddd1.jpg","width":"600"},{"desc":"","height":"215","title":"","url":"https://p0.ssl.img.360kuai.com/t01d7135cfea249ed8b.jpg","width":"600"},{"desc":"","height":"281","title":"","url":"https://p0.ssl.img.360kuai.com/t018a49476d10585039.jpg","width":"600"},{"desc":"","height":"257","title":"","url":"https://p0.ssl.img.360kuai.com/t0155293487a0ad25b7.jpg","width":"600"},{"desc":"","height":"233","title":"","url":"https://p0.ssl.img.360kuai.com/t01a4b281e88dcf8eca.jpg","width":"600"},{"desc":"","height":"214","title":"","url":"https://p0.ssl.img.360kuai.com/t01e8ba3bb15d5f488b.jpg","width":"600"},{"desc":"","height":"541","title":"","url":"https://p0.ssl.img.360kuai.com/t01090eea2407bdd4e3.jpg","width":"600"},{"desc":"","height":"379","title":"","url":"https://p0.ssl.img.360kuai.com/t013dd227a6e2d4a69d.jpg","width":"600"},{"desc":"","height":"172","title":"","url":"https://p0.ssl.img.360kuai.com/t013c81e1dbfa370823.jpg","width":"600"},{"desc":"","height":"212","title":"","url":"https://p0.ssl.img.360kuai.com/t01379e17c16945dac0.jpg","width":"600"},{"desc":"","height":"229","title":"","url":"https://p0.ssl.img.360kuai.com/t0131b666996579d427.jpg","width":"600"},{"desc":"","height":"260","title":"","url":"https://p0.ssl.img.360kuai.com/t01992c7880c991750b.jpg","width":"600"},{"desc":"","height":"311","title":"","url":"https://p0.ssl.img.360kuai.com/t013765541d3afd358e.jpg","width":"600"},{"desc":"","height":"260","title":"","url":"https://p0.ssl.img.360kuai.com/t01f799ba09f8b4a920.jpg","width":"600"},{"desc":"","height":"264","title":"","url":"https://p0.ssl.img.360kuai.com/t01381ac4eb095fc507.jpg","width":"600"},{"desc":"","height":"324","title":"","url":"https://p0.ssl.img.360kuai.com/t0135b5f60dd1d993d3.jpg","width":"600"},{"desc":"","height":"217","title":"","url":"https://p0.ssl.img.360kuai.com/t01638980ea1b4a7db1.jpg","width":"600"},{"desc":"","height":"310","title":"","url":"https://p0.ssl.img.360kuai.com/t01ae4ecbbd467fc81b.jpg","width":"600"},{"desc":"","height":"326","title":"","url":"https://p0.ssl.img.360kuai.com/t015127021e5c2d5f51.jpg","width":"600"},{"desc":"","height":"127","title":"","url":"https://p0.ssl.img.360kuai.com/t01a42bce8a249a1ee6.jpg","width":"600"},{"desc":"","height":"224","title":"","url":"https://p0.ssl.img.360kuai.com/t011692f7a3b25016fd.jpg","width":"600"},{"desc":"","height":"277","title":"","url":"https://p0.ssl.img.360kuai.com/t01b6af4fc6cce7c3db.jpg","width":"600"},{"desc":"","height":"171","title":"","url":"https://p0.ssl.img.360kuai.com/t0128fc2d9bf60bed23.jpg","width":"600"},{"desc":"","height":"452","title":"","url":"https://p0.ssl.img.360kuai.com/t01dc5162a2a938fb4f.jpg","width":"600"},{"desc":"","height":"177","title":"","url":"https://p0.ssl.img.360kuai.com/t01320806c664fb33c8.jpg","width":"600"},{"desc":"","height":"152","title":"","url":"https://p0.ssl.img.360kuai.com/t01f605cd738285f980.jpg","width":"600"},{"desc":"","height":"287","title":"","url":"https://p0.ssl.img.360kuai.com/t012c350d432eb10021.jpg","width":"600"},{"desc":"","height":"319","title":"","url":"https://p0.ssl.img.360kuai.com/t0190749a7b0e6fecdd.jpg","width":"600"},{"desc":"","height":"280","title":"","url":"https://p0.ssl.img.360kuai.com/t01a25923ff15ce27d7.jpg","width":"600"}]}],"original":0,"pat":"mass_porn,art_src_1,sexf,sex2,sexc,disu_label,fts0,sts0","powerby":"hbase","pub_time":1657162085000,"pure":"","rawurl":"http://zm.news.so.com/d95de2313b2b0c857cb9badb99f5419b","redirect":0,"rptid":"be9174befd2f86ed","s":"t","src":"什么值得买","tag":[],"title":"路由与NAS 篇二十:家用宽带无公网IP怎么在外访问Nas——Frp内网穿透暴露公网访问及微信回调简明教程

郗卖岸889怎样 根据ip和端口远程访问电脑,进行数据采集 -
蒋战哈17653164016 ______ 一、以windows系统为例查看IP和远程连接端口的方法:1.窗口键+R,输入cmd回车 2.输入ipconfig 看到IP地址 netstat -ano看到端口号 备注:端口和机器上运行的软件有关,不同的软件端口不一样的.例如浏览网页使用80号端口.机器上端口号可能会很多,因为你运行的程序会很多.二、以linux系统为例查看IP和远程连接端口的方法:运行中输入ifconfig看IP地址 输入netstat看端口

郗卖岸889linux c++ 客户端怎么获取连接的端口 -
蒋战哈17653164016 ______ 利用C++的Socket可以获得ip和端口号.网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket.Socket的英文原义是“孔”或“插座”.作为BSD UNIX的进程通信机制,取后一种意思.通常也称作"套...

郗卖岸889linux对外开放端口 -
蒋战哈17653164016 ______ 两种方式:1,虚拟机与主机为NAT关系,内部用户访问,需要如下设置选择菜单上edit----virtual network editor选择Nat setting,,再选择add,增加主机端口这里填写:5009.然后填写虚拟机主机IP,填...

郗卖岸889怎样开启Linux的DNS端口和DNS的辅助服务器端口还有DHCP的端口? -
蒋战哈17653164016 ______ 需要先知道DNS和DHCP的端口号才可以对其进行操作,一般默认DNS端口号为53,DHCP的默认端口号是67,68.一般关闭端口的使用命令:iptables -A INPUT -p tcp --drop 53-j DROP iptables -A OUTPUT -p tcp --dport 53-j DROP 一般打开端口使用命令:iptables -A INPUT -ptcp --dport 端口号-j ACCEPT或者nc -lp 23 查看端口是否打开使用命令:netstat -an | grep 53

郗卖岸889Linux操作系统有哪些常用端口?
蒋战哈17653164016 ______ Linux常用端口 著名端口 1 tcpmux TCP 端口服务多路复用 5 rje 远程作业入口 7 echo Echo 服务 9 discard 用于连接测试的空服务 11 systat 用于列举连接了的端口的系统状...

郗卖岸889Linux系统下怎么测试端口的连通性 -
蒋战哈17653164016 ______ 在工作中有很多时候都在去测试一下服务器端口是否能连通是否正常的情况,下面小编与大家分享一下在Linux环境下如何测试端口的连通性,分别测试TCP端口与UDP端口,希望可以给大家带来帮助,谢谢. 1、这个需要Linux服务器里边支持...

郗卖岸889linux中的的一个http程序,但是想在本机上测试时,输入下载地址时却不知道怎么输入,求指教啊!!! -
蒋战哈17653164016 ______ 1、可以直接在地址栏输入你的linux的IP地址,如果linux和你使用的机子是同一台的话,也可以在地址栏输入127.0.0.12、一般http的默认端口都是80,这个端口可以不输入,默认为此. 如果你的http测试程序的端口不是80,那可以用"你的linux的IP:端口号”这种格式. 如:你的IP是x.x.x.x 端口为8888,则可以用 : x.x.x.x:88883、linux下http的测试程序,其实有很强大的apache, 下载地址:www.apache.org 安装使用也简单.

郗卖岸889windows怎么连接linux服务器 -
蒋战哈17653164016 ______ 利用Telnet连接Linux服务器需要确保:windows客户端开启telnet功能、linux服务器开启telnet服务 首先,linux服务器开启telnet服务: 许多Linux系统在默认情况下是不安装Telnet服务的.在此介绍yum安装Telnet服务,它的优点是联网条件下能够...

郗卖岸889如何在本地查看LINUX服务器的当前网络配置 -
蒋战哈17653164016 ______ 凡是在本地看linux服务器,一般需要通过远程到linux服务器,然后才能看linux服务器的网络配置 1、安装xshell软件,并新增一个远程窗口,写入目标linux服务器ip,远程端口,以及用户名和密码 2、登录到远程服务器 3、运行ifconfig 即可查看服务器的网络

郗卖岸889linux协议栈怎么支持一个端口配多个ip地址 -
蒋战哈17653164016 ______ ping只能检查IP,无法检查端口啊------解决的方法--------------------------------------------------------如果是TCP的 telnet 102.106.228.173 8601即可------解决的方法--------------------------------------------------------探讨引用:如果是TCP的 telnet 102.106.228.173 ...

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024