1 问题描述

首先说一下问题。

今天同事和我讨论了在内网穿透时无法使用x11的问题。具体是这样的,办公室有台服务器(docker容器)使用公司内网,在办公室中内网直接使用x11是可以的(如运行xclock)。从家里(外网)访问该服务器是使用ngrok内网穿透转发了ssh端口到云主机上,此时(也就是内网穿透)无法运行x11程序。

#mermaid-svg-GFbtwgOY0Y8QDEPI .label {font-family: 'trebuchet ms', verdana, arial;font-family: var(--mermaid-font-family);fill: #333;color: #333; }#mermaid-svg-GFbtwgOY0Y8QDEPI .label text {fill: #333; }#mermaid-svg-GFbtwgOY0Y8QDEPI .node rect, #mermaid-svg-GFbtwgOY0Y8QDEPI .node circle, #mermaid-svg-GFbtwgOY0Y8QDEPI .node ellipse, #mermaid-svg-GFbtwgOY0Y8QDEPI .node polygon, #mermaid-svg-GFbtwgOY0Y8QDEPI .node path {fill: #ECECFF;stroke: #9370DB;stroke-width: 1px; }#mermaid-svg-GFbtwgOY0Y8QDEPI .node .label {text-align: center;fill: #333; }#mermaid-svg-GFbtwgOY0Y8QDEPI .node.clickable {cursor: pointer; }#mermaid-svg-GFbtwgOY0Y8QDEPI .arrowheadPath {fill: #333333; }#mermaid-svg-GFbtwgOY0Y8QDEPI .edgePath .path {stroke: #333333;stroke-width: 1.5px; }#mermaid-svg-GFbtwgOY0Y8QDEPI .flowchart-link {stroke: #333333;fill: none; }#mermaid-svg-GFbtwgOY0Y8QDEPI .edgeLabel {background-color: #e8e8e8;text-align: center; } #mermaid-svg-GFbtwgOY0Y8QDEPI .edgeLabel rect {opacity: 0.9; } #mermaid-svg-GFbtwgOY0Y8QDEPI .edgeLabel span {color: #333; }#mermaid-svg-GFbtwgOY0Y8QDEPI .cluster rect {fill: #ffffde;stroke: #aaaa33;stroke-width: 1px; }#mermaid-svg-GFbtwgOY0Y8QDEPI .cluster text {fill: #333; }#mermaid-svg-GFbtwgOY0Y8QDEPI div.mermaidTooltip {position: absolute;text-align: center;max-width: 200px;padding: 2px;font-family: 'trebuchet ms', verdana, arial;font-family: var(--mermaid-font-family);font-size: 12px;background: #ffffde;border: 1px solid #aaaa33;border-radius: 2px;pointer-events: none;z-index: 100; }#mermaid-svg-GFbtwgOY0Y8QDEPI .actor {stroke: #CCCCFF;fill: #ECECFF; }#mermaid-svg-GFbtwgOY0Y8QDEPI text.actor > tspan {fill: black;stroke: none; }#mermaid-svg-GFbtwgOY0Y8QDEPI .actor-line {stroke: grey; }#mermaid-svg-GFbtwgOY0Y8QDEPI .messageLine0 {stroke-width: 1.5;stroke-dasharray: none;stroke: #333; }#mermaid-svg-GFbtwgOY0Y8QDEPI .messageLine1 {stroke-width: 1.5;stroke-dasharray: 2, 2;stroke: #333; }#mermaid-svg-GFbtwgOY0Y8QDEPI #arrowhead path {fill: #333;stroke: #333; }#mermaid-svg-GFbtwgOY0Y8QDEPI .sequenceNumber {fill: white; }#mermaid-svg-GFbtwgOY0Y8QDEPI #sequencenumber {fill: #333; }#mermaid-svg-GFbtwgOY0Y8QDEPI #crosshead path {fill: #333;stroke: #333; }#mermaid-svg-GFbtwgOY0Y8QDEPI .messageText {fill: #333;stroke: #333; }#mermaid-svg-GFbtwgOY0Y8QDEPI .labelBox {stroke: #CCCCFF;fill: #ECECFF; }#mermaid-svg-GFbtwgOY0Y8QDEPI .labelText,#mermaid-svg-GFbtwgOY0Y8QDEPI .labelText > tspan {fill: black;stroke: none; }#mermaid-svg-GFbtwgOY0Y8QDEPI .loopText,#mermaid-svg-GFbtwgOY0Y8QDEPI .loopText > tspan {fill: black;stroke: none; }#mermaid-svg-GFbtwgOY0Y8QDEPI .loopLine {stroke-width: 2px;stroke-dasharray: 2, 2;stroke: #CCCCFF;fill: #CCCCFF; }#mermaid-svg-GFbtwgOY0Y8QDEPI .note {stroke: #aaaa33;fill: #fff5ad; }#mermaid-svg-GFbtwgOY0Y8QDEPI .noteText,#mermaid-svg-GFbtwgOY0Y8QDEPI .noteText > tspan {fill: black;stroke: none; }#mermaid-svg-GFbtwgOY0Y8QDEPI .activation0 {fill: #f4f4f4;stroke: #666; }#mermaid-svg-GFbtwgOY0Y8QDEPI .activation1 {fill: #f4f4f4;stroke: #666; }#mermaid-svg-GFbtwgOY0Y8QDEPI .activation2 {fill: #f4f4f4;stroke: #666; }#mermaid-svg-GFbtwgOY0Y8QDEPI .mermaid-main-font {font-family: "trebuchet ms", verdana, arial;font-family: var(--mermaid-font-family); }#mermaid-svg-GFbtwgOY0Y8QDEPI .section {stroke: none;opacity: 0.2; }#mermaid-svg-GFbtwgOY0Y8QDEPI .section0 {fill: rgba(102, 102, 255, 0.49); }#mermaid-svg-GFbtwgOY0Y8QDEPI .section2 {fill: #fff400; }#mermaid-svg-GFbtwgOY0Y8QDEPI .section1, #mermaid-svg-GFbtwgOY0Y8QDEPI .section3 {fill: white;opacity: 0.2; }#mermaid-svg-GFbtwgOY0Y8QDEPI .sectionTitle0 {fill: #333; }#mermaid-svg-GFbtwgOY0Y8QDEPI .sectionTitle1 {fill: #333; }#mermaid-svg-GFbtwgOY0Y8QDEPI .sectionTitle2 {fill: #333; }#mermaid-svg-GFbtwgOY0Y8QDEPI .sectionTitle3 {fill: #333; }#mermaid-svg-GFbtwgOY0Y8QDEPI .sectionTitle {text-anchor: start;font-size: 11px;text-height: 14px;font-family: 'trebuchet ms', verdana, arial;font-family: var(--mermaid-font-family); }#mermaid-svg-GFbtwgOY0Y8QDEPI .grid .tick {stroke: lightgrey;opacity: 0.8;shape-rendering: crispEdges; } #mermaid-svg-GFbtwgOY0Y8QDEPI .grid .tick text {font-family: 'trebuchet ms', verdana, arial;font-family: var(--mermaid-font-family); }#mermaid-svg-GFbtwgOY0Y8QDEPI .grid path {stroke-width: 0; }#mermaid-svg-GFbtwgOY0Y8QDEPI .today {fill: none;stroke: red;stroke-width: 2px; }#mermaid-svg-GFbtwgOY0Y8QDEPI .task {stroke-width: 2; }#mermaid-svg-GFbtwgOY0Y8QDEPI .taskText {text-anchor: middle;font-family: 'trebuchet ms', verdana, arial;font-family: var(--mermaid-font-family); }#mermaid-svg-GFbtwgOY0Y8QDEPI .taskText:not([font-size]) {font-size: 11px; }#mermaid-svg-GFbtwgOY0Y8QDEPI .taskTextOutsideRight {fill: black;text-anchor: start;font-size: 11px;font-family: 'trebuchet ms', verdana, arial;font-family: var(--mermaid-font-family); }#mermaid-svg-GFbtwgOY0Y8QDEPI .taskTextOutsideLeft {fill: black;text-anchor: end;font-size: 11px; }#mermaid-svg-GFbtwgOY0Y8QDEPI .task.clickable {cursor: pointer; }#mermaid-svg-GFbtwgOY0Y8QDEPI .taskText.clickable {cursor: pointer;fill: #003163 !important;font-weight: bold; }#mermaid-svg-GFbtwgOY0Y8QDEPI .taskTextOutsideLeft.clickable {cursor: pointer;fill: #003163 !important;font-weight: bold; }#mermaid-svg-GFbtwgOY0Y8QDEPI .taskTextOutsideRight.clickable {cursor: pointer;fill: #003163 !important;font-weight: bold; }#mermaid-svg-GFbtwgOY0Y8QDEPI .taskText0, #mermaid-svg-GFbtwgOY0Y8QDEPI .taskText1, #mermaid-svg-GFbtwgOY0Y8QDEPI .taskText2, #mermaid-svg-GFbtwgOY0Y8QDEPI .taskText3 {fill: white; }#mermaid-svg-GFbtwgOY0Y8QDEPI .task0, #mermaid-svg-GFbtwgOY0Y8QDEPI .task1, #mermaid-svg-GFbtwgOY0Y8QDEPI .task2, #mermaid-svg-GFbtwgOY0Y8QDEPI .task3 {fill: #8a90dd;stroke: #534fbc; }#mermaid-svg-GFbtwgOY0Y8QDEPI .taskTextOutside0, #mermaid-svg-GFbtwgOY0Y8QDEPI .taskTextOutside2 {fill: black; }#mermaid-svg-GFbtwgOY0Y8QDEPI .taskTextOutside1, #mermaid-svg-GFbtwgOY0Y8QDEPI .taskTextOutside3 {fill: black; }#mermaid-svg-GFbtwgOY0Y8QDEPI .active0, #mermaid-svg-GFbtwgOY0Y8QDEPI .active1, #mermaid-svg-GFbtwgOY0Y8QDEPI .active2, #mermaid-svg-GFbtwgOY0Y8QDEPI .active3 {fill: #bfc7ff;stroke: #534fbc; }#mermaid-svg-GFbtwgOY0Y8QDEPI .activeText0, #mermaid-svg-GFbtwgOY0Y8QDEPI .activeText1, #mermaid-svg-GFbtwgOY0Y8QDEPI .activeText2, #mermaid-svg-GFbtwgOY0Y8QDEPI .activeText3 {fill: black !important; }#mermaid-svg-GFbtwgOY0Y8QDEPI .done0, #mermaid-svg-GFbtwgOY0Y8QDEPI .done1, #mermaid-svg-GFbtwgOY0Y8QDEPI .done2, #mermaid-svg-GFbtwgOY0Y8QDEPI .done3 {stroke: grey;fill: lightgrey;stroke-width: 2; }#mermaid-svg-GFbtwgOY0Y8QDEPI .doneText0, #mermaid-svg-GFbtwgOY0Y8QDEPI .doneText1, #mermaid-svg-GFbtwgOY0Y8QDEPI .doneText2, #mermaid-svg-GFbtwgOY0Y8QDEPI .doneText3 {fill: black !important; }#mermaid-svg-GFbtwgOY0Y8QDEPI .crit0, #mermaid-svg-GFbtwgOY0Y8QDEPI .crit1, #mermaid-svg-GFbtwgOY0Y8QDEPI .crit2, #mermaid-svg-GFbtwgOY0Y8QDEPI .crit3 {stroke: #ff8888;fill: red;stroke-width: 2; }#mermaid-svg-GFbtwgOY0Y8QDEPI .activeCrit0, #mermaid-svg-GFbtwgOY0Y8QDEPI .activeCrit1, #mermaid-svg-GFbtwgOY0Y8QDEPI .activeCrit2, #mermaid-svg-GFbtwgOY0Y8QDEPI .activeCrit3 {stroke: #ff8888;fill: #bfc7ff;stroke-width: 2; }#mermaid-svg-GFbtwgOY0Y8QDEPI .doneCrit0, #mermaid-svg-GFbtwgOY0Y8QDEPI .doneCrit1, #mermaid-svg-GFbtwgOY0Y8QDEPI .doneCrit2, #mermaid-svg-GFbtwgOY0Y8QDEPI .doneCrit3 {stroke: #ff8888;fill: lightgrey;stroke-width: 2;cursor: pointer;shape-rendering: crispEdges; }#mermaid-svg-GFbtwgOY0Y8QDEPI .milestone {transform: rotate(45deg) scale(0.8, 0.8); }#mermaid-svg-GFbtwgOY0Y8QDEPI .milestoneText {font-style: italic; }#mermaid-svg-GFbtwgOY0Y8QDEPI .doneCritText0, #mermaid-svg-GFbtwgOY0Y8QDEPI .doneCritText1, #mermaid-svg-GFbtwgOY0Y8QDEPI .doneCritText2, #mermaid-svg-GFbtwgOY0Y8QDEPI .doneCritText3 {fill: black !important; }#mermaid-svg-GFbtwgOY0Y8QDEPI .activeCritText0, #mermaid-svg-GFbtwgOY0Y8QDEPI .activeCritText1, #mermaid-svg-GFbtwgOY0Y8QDEPI .activeCritText2, #mermaid-svg-GFbtwgOY0Y8QDEPI .activeCritText3 {fill: black !important; }#mermaid-svg-GFbtwgOY0Y8QDEPI .titleText {text-anchor: middle;font-size: 18px;fill: black;font-family: 'trebuchet ms', verdana, arial;font-family: var(--mermaid-font-family); }#mermaid-svg-GFbtwgOY0Y8QDEPI g.classGroup text {fill: #9370DB;stroke: none;font-family: 'trebuchet ms', verdana, arial;font-family: var(--mermaid-font-family);font-size: 10px; } #mermaid-svg-GFbtwgOY0Y8QDEPI g.classGroup text .title {font-weight: bolder; }#mermaid-svg-GFbtwgOY0Y8QDEPI g.clickable {cursor: pointer; }#mermaid-svg-GFbtwgOY0Y8QDEPI g.classGroup rect {fill: #ECECFF;stroke: #9370DB; }#mermaid-svg-GFbtwgOY0Y8QDEPI g.classGroup line {stroke: #9370DB;stroke-width: 1; }#mermaid-svg-GFbtwgOY0Y8QDEPI .classLabel .box {stroke: none;stroke-width: 0;fill: #ECECFF;opacity: 0.5; }#mermaid-svg-GFbtwgOY0Y8QDEPI .classLabel .label {fill: #9370DB;font-size: 10px; }#mermaid-svg-GFbtwgOY0Y8QDEPI .relation {stroke: #9370DB;stroke-width: 1;fill: none; }#mermaid-svg-GFbtwgOY0Y8QDEPI .dashed-line {stroke-dasharray: 3; }#mermaid-svg-GFbtwgOY0Y8QDEPI #compositionStart {fill: #9370DB;stroke: #9370DB;stroke-width: 1; }#mermaid-svg-GFbtwgOY0Y8QDEPI #compositionEnd {fill: #9370DB;stroke: #9370DB;stroke-width: 1; }#mermaid-svg-GFbtwgOY0Y8QDEPI #aggregationStart {fill: #ECECFF;stroke: #9370DB;stroke-width: 1; }#mermaid-svg-GFbtwgOY0Y8QDEPI #aggregationEnd {fill: #ECECFF;stroke: #9370DB;stroke-width: 1; }#mermaid-svg-GFbtwgOY0Y8QDEPI #dependencyStart {fill: #9370DB;stroke: #9370DB;stroke-width: 1; }#mermaid-svg-GFbtwgOY0Y8QDEPI #dependencyEnd {fill: #9370DB;stroke: #9370DB;stroke-width: 1; }#mermaid-svg-GFbtwgOY0Y8QDEPI #extensionStart {fill: #9370DB;stroke: #9370DB;stroke-width: 1; }#mermaid-svg-GFbtwgOY0Y8QDEPI #extensionEnd {fill: #9370DB;stroke: #9370DB;stroke-width: 1; }#mermaid-svg-GFbtwgOY0Y8QDEPI .commit-id, #mermaid-svg-GFbtwgOY0Y8QDEPI .commit-msg, #mermaid-svg-GFbtwgOY0Y8QDEPI .branch-label {fill: lightgrey;color: lightgrey;font-family: 'trebuchet ms', verdana, arial;font-family: var(--mermaid-font-family); }#mermaid-svg-GFbtwgOY0Y8QDEPI .pieTitleText {text-anchor: middle;font-size: 25px;fill: black;font-family: 'trebuchet ms', verdana, arial;font-family: var(--mermaid-font-family); }#mermaid-svg-GFbtwgOY0Y8QDEPI .slice {font-family: 'trebuchet ms', verdana, arial;font-family: var(--mermaid-font-family); }#mermaid-svg-GFbtwgOY0Y8QDEPI g.stateGroup text {fill: #9370DB;stroke: none;font-size: 10px;font-family: 'trebuchet ms', verdana, arial;font-family: var(--mermaid-font-family); }#mermaid-svg-GFbtwgOY0Y8QDEPI g.stateGroup text {fill: #9370DB;fill: #333;stroke: none;font-size: 10px; }#mermaid-svg-GFbtwgOY0Y8QDEPI g.statediagram-cluster .cluster-label text {fill: #333; }#mermaid-svg-GFbtwgOY0Y8QDEPI g.stateGroup .state-title {font-weight: bolder;fill: black; }#mermaid-svg-GFbtwgOY0Y8QDEPI g.stateGroup rect {fill: #ECECFF;stroke: #9370DB; }#mermaid-svg-GFbtwgOY0Y8QDEPI g.stateGroup line {stroke: #9370DB;stroke-width: 1; }#mermaid-svg-GFbtwgOY0Y8QDEPI .transition {stroke: #9370DB;stroke-width: 1;fill: none; }#mermaid-svg-GFbtwgOY0Y8QDEPI .stateGroup .composit {fill: white;border-bottom: 1px; }#mermaid-svg-GFbtwgOY0Y8QDEPI .stateGroup .alt-composit {fill: #e0e0e0;border-bottom: 1px; }#mermaid-svg-GFbtwgOY0Y8QDEPI .state-note {stroke: #aaaa33;fill: #fff5ad; } #mermaid-svg-GFbtwgOY0Y8QDEPI .state-note text {fill: black;stroke: none;font-size: 10px; }#mermaid-svg-GFbtwgOY0Y8QDEPI .stateLabel .box {stroke: none;stroke-width: 0;fill: #ECECFF;opacity: 0.7; }#mermaid-svg-GFbtwgOY0Y8QDEPI .edgeLabel text {fill: #333; }#mermaid-svg-GFbtwgOY0Y8QDEPI .stateLabel text {fill: black;font-size: 10px;font-weight: bold;font-family: 'trebuchet ms', verdana, arial;font-family: var(--mermaid-font-family); }#mermaid-svg-GFbtwgOY0Y8QDEPI .node circle.state-start {fill: black;stroke: black; }#mermaid-svg-GFbtwgOY0Y8QDEPI .node circle.state-end {fill: black;stroke: white;stroke-width: 1.5; }#mermaid-svg-GFbtwgOY0Y8QDEPI #statediagram-barbEnd {fill: #9370DB; }#mermaid-svg-GFbtwgOY0Y8QDEPI .statediagram-cluster rect {fill: #ECECFF;stroke: #9370DB;stroke-width: 1px; }#mermaid-svg-GFbtwgOY0Y8QDEPI .statediagram-cluster rect.outer {rx: 5px;ry: 5px; }#mermaid-svg-GFbtwgOY0Y8QDEPI .statediagram-state .divider {stroke: #9370DB; }#mermaid-svg-GFbtwgOY0Y8QDEPI .statediagram-state .title-state {rx: 5px;ry: 5px; }#mermaid-svg-GFbtwgOY0Y8QDEPI .statediagram-cluster.statediagram-cluster .inner {fill: white; }#mermaid-svg-GFbtwgOY0Y8QDEPI .statediagram-cluster.statediagram-cluster-alt .inner {fill: #e0e0e0; }#mermaid-svg-GFbtwgOY0Y8QDEPI .statediagram-cluster .inner {rx: 0;ry: 0; }#mermaid-svg-GFbtwgOY0Y8QDEPI .statediagram-state rect.basic {rx: 5px;ry: 5px; }#mermaid-svg-GFbtwgOY0Y8QDEPI .statediagram-state rect.divider {stroke-dasharray: 10,10;fill: #efefef; }#mermaid-svg-GFbtwgOY0Y8QDEPI .note-edge {stroke-dasharray: 5; }#mermaid-svg-GFbtwgOY0Y8QDEPI .statediagram-note rect {fill: #fff5ad;stroke: #aaaa33;stroke-width: 1px;rx: 0;ry: 0; }:root {--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive; }#mermaid-svg-GFbtwgOY0Y8QDEPI .error-icon {fill: #552222; }#mermaid-svg-GFbtwgOY0Y8QDEPI .error-text {fill: #552222;stroke: #552222; }#mermaid-svg-GFbtwgOY0Y8QDEPI .edge-thickness-normal {stroke-width: 2px; }#mermaid-svg-GFbtwgOY0Y8QDEPI .edge-thickness-thick {stroke-width: 3.5px; }#mermaid-svg-GFbtwgOY0Y8QDEPI .edge-pattern-solid {stroke-dasharray: 0; }#mermaid-svg-GFbtwgOY0Y8QDEPI .edge-pattern-dashed {stroke-dasharray: 3; }#mermaid-svg-GFbtwgOY0Y8QDEPI .edge-pattern-dotted {stroke-dasharray: 2; }#mermaid-svg-GFbtwgOY0Y8QDEPI .marker {fill: #333333; }#mermaid-svg-GFbtwgOY0Y8QDEPI .marker.cross {stroke: #333333; }:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-GFbtwgOY0Y8QDEPI {color: rgba(0, 0, 0, 0.75);font: ;}

ngrok内网穿透
内网
公网
办公室服务器
云主机
办公室电脑
家里电脑

(我原先以为docker容器是无法使用x11程序的,但同事说是可以的,而且通过内网正常运行)

2 正常的情况

在 ssh 配置 x11 转发且生效后,查询本机的 DISPLAY(打卡MobaXterm直接有显示)

然后在linux上只有两个步骤:

# 设置 DISPLAY 环境变量
export DISPLAY=10.xx.xx.xx:0.0
# 运行 x11 程序
xclock

运行效果

3 问题思考

将服务器的x11程序界面转发到本地显示,必然是用了网络传输,可以使用 netstat 命令来看x11程序开启时新建了什么端口的连接

我开了两个x11应用(xclock和xedit),可以看到新增的两个都是到了本机的6000端口(xserver当DISPLAY为 ip:0.0 时使用的端口)上。

其次,设置 DISPLAY 时是直接使用IP,意味着X程序是直接连接的该IP,由于使用内网穿透时,服务器是无法直接连接到本机电脑的,所以使用netstat查看时状态一直都是SYN_SENT,无法建立连接。

那么,是否我将本地电脑的6000端口转发到服务器上,然后在服务器上设置DISPLAY 为 localhost:0.0,运行x11程序时就使用localhost的6000端口,而由于这个端口是转发本地电脑的,因此就相当于将数据转到了本机上。

4 问题解决

按以上思路,将本地6001端口转发到服务器,下图是使用MobaXterm的tunnel(测试时本机端口被其他程序占用了,这里以6001端口做示例)

开启转发后,即可运行x11程序

# 设置 DISPLAY 环境变量   1.0 对应端口 6001
export DISPLAY=localhost:1.0
# 运行 x11 程序
xclock

5 其他小记

  1. x11端口变更:默认 DISPLAY=IP:0.0 使用端口 6000,DISPLAY=IP:1.0 使用端口6001,以此类推
  2. docker 可以直接运行x11程序,之前一直误解以为在容器中无法运行,对X理解太浅。
  3. MobaXterm自带xserver,在运行时自动启动xserver。xshell、vscode不带xserver,需要通过其他工具先启动xserver后才能按以上方式运行x11程序。

关于在内网穿透时如何使用X11的问题解决相关推荐

  1. 在使用DingDing内网穿透时遇到的坑

    钉钉配置内网穿透 下载内网穿透工具 git clone https://github.com/open-dingtalk/pierced.git 启动内网穿透 windows: cd windows_ ...

  2. 微信公众平台使用内网穿透时如何测试出ip白名单的小技巧

    首先在ip白名单里随便填一个ip地址,比如:127.0.0.1然后修改.接着用公众平台调试接口调试工具调试会报:×××not int whitelist.xxxx就是内网穿透的ip地址

  3. 利用frp进行内网穿透

    内网穿透是打破没有公网ip的桎梏,让处于内网的机器也能在远程使用ssh链接,让我这个机器学习算法工程师也能处在世界任何一个地方操纵自己的电脑.话不多说,开始教程. 需要的条件是,有一台有公网ip的服务 ...

  4. 搭建Freekan私人影视电影网站,cpolar内网穿透发布上线

    文章目录 1.前言 2.本地网页搭建 2.1 环境使用 2.2 支持组件和环境设置 2.3 支持组件选和环境设置 2.4 网页安装 2.5 测试和使用 2.6 问题解决 3.本地网页发布 3.1 Cp ...

  5. 内网穿透工具nps使用教程 - 来自内部交流群

    内网穿透工具nps使用教程.docx 内网穿透工具nps使用教程 感谢 感谢开源软件开发者,github链接https://github.com/cnlh/nps/ 感兴趣的去star下吧~ 视频教程 ...

  6. 红蓝对抗之隧道技术第二篇(reGeorg内网穿透、SSH隧道本地Socks代理、SSH远程转发、Earthworm Socks5代理、Tunna正向代理、ICMP隧道、DNS隧道、Frp穿透)

    文章目录 隧道应用 reGeorg内网穿透 SSH本地转发(正向) 场景一 场景二 SSH远程转发(反向) Earthworm Socks5代理 正向代理 反向代理 Tunna正向代理 ICMP隧道 ...

  7. 内网穿透工具-NPS使用实战

    前言 nps是什么?nps是一款轻量级.高性能.功能强大的内网穿透代理服务器.目前支持tcp.udp流量转发,可支持任何tcp.udp上层协议,此外还支持内网http代理.内网socks5代理.p2p ...

  8. 教程 | 用安卓手机搭建 web 服务器(三)—— 内网穿透

    用手机完成服务器搭建后一般会放在寝室或者家里,这时使用的是内网,没有公网的固定 IP,没法进行域名解析,这时候就需要内网穿透了. 内网穿透的解决方案有花生壳.frp.魔法隧道.ngrok 等,我选择的 ...

  9. 手把手教你内网穿透(Windows环境)

    内网穿透原理知识 一.传统NAT穿透 传统的NAT技术是通过将专用的网络地址(如企业内部网Internet)转换为公用地址(如互联网Internet),从而对外隐藏了内部管理的IP地址.这样,通过在内 ...

最新文章

  1. iOS 隐藏下级页面的tabbar的统一处理
  2. Qt全局热键(windows篇)
  3. 《疯狂Java讲义》10
  4. php跳转隐藏url参数,.htaccess从URL中删除index.php并隐藏参数键
  5. 赞!卷积神经网络中十大拍案叫绝的操作
  6. 公务员工资分配的一种方法
  7. 开展网络口碑营销之前必须做好的几件事
  8. 互联网快讯:多地要求商家下架槟榔;多所高校延长专硕学制至3年
  9. Easyui DataGrid Editor
  10. Focal Loss 简介
  11. 小程序利用background-image设置背景
  12. 使用 AIX TCP/IP 过滤功能设置防火墙
  13. 2022最全最细软件测试工程师的职业规划和职业发展【入门篇】
  14. Java开发的基中之基
  15. 携程Android App插件化和动态加载实践
  16. 【翻译】听觉刺激增强深度睡眠,实现“熟睡自由”
  17. nginx负载均衡两台服务器文件,Nginx之负载均衡 :两台服务器均衡(填坑)
  18. 用javascript编写的小游戏-打砖块
  19. “十四五”规划强调交通强国,Apollo智能交通快步走
  20. 装系统提示:Error1962:No operating system found.解决办法在此

热门文章

  1. 每日一问 --什么是无线信道
  2. Python实现文件的复制粘贴
  3. 众智云———以我之名,冠你指间,一生相伴,一世相随
  4. java mysql判断字符串相等_java如何判断字符串是否相等?
  5. 分布式数据(文件)存储
  6. reportviewer
  7. Go语言实现Playing on a chessboard
  8. microsoft sqlserver 驱动
  9. docker中遇到文件无法写入宿主文件问题(Permission denied)
  10. 《Mybatis 手撸专栏》第9章:细化XML语句构建器,完善静态SQL解析