frp点对点内网穿透

点对点内网穿透

这个示例将会演示一种不通过服务器中转流量的方式来访问内网服务。

frp 提供了一种新的代理类型 xtcp 用于应对在希望传输大量数据且流量不经过服务器的场景。

使用方式同 stcp 类似,需要在两边都部署上 frpc 用于建立直接的连接。

目前处于开发的初级阶段,并不能穿透所有类型的 NAT 设备,所以穿透成功率较低。穿透失败时可以尝试 stcp 的方式。

  1. frps.ini 内容如下,需要额外配置监听一个 UDP 端口用于支持该类型的客户端:

    [common]
    bind_port = 7000
    bind_udp_port = 7000
  2. 在需要暴露到外网的机器上部署 frpc,且配置如下:

    [common]
    server_addr = x.x.x.x
    server_port = 7000
    [p2p_ssh]
    type = xtcp
    # 只有 sk 一致的用户才能访问到此服务
    sk = abcdefg
    local_ip = 127.0.0.1
    local_port = 22
  3. 在想要访问内网服务的机器上也部署 frpc,且配置如下:

    [common]
    server_addr = x.x.x.x
    server_port = 7000
    [p2p_ssh_visitor]
    type = xtcp
    # xtcp 的访问者
    role = visitor
    # 要访问的 xtcp 代理的名字
    server_name = p2p_ssh
    sk = abcdefg
    # 绑定本地端口用于访问 ssh 服务
    bind_addr = 127.0.0.1
    bind_port = 6000
  4. 通过 SSH 访问内网机器,假设用户名为 test:

    ssh -oPort=6000 test@127.0.0.1

windows docker安装frpc

windows-docker安装frpc

新建`\wsl.localhost\docker-desktop-data\data\docker\volumes\dc2\frpc-docker-compose.yml
内容如下:

version: "3.7"
services:
  frpc:
    image: snowdreamtech/frpc
    container_name: frpc
    hostname: frpc
    ports:
    #   - "7500:7500"
    #   # - 7400:7400
      - 7000:7000
    #   - 8888:8888
    volumes:
      - frpc:/etc/frp
volumes:
  frpc:

新建`\wsl.localhost\docker-desktop-data\data\docker\volumes\dc2_frpc_data\frpc.ini
写入

[common]
# server_addr = 127.0.0.1
server_addr = 服务器ip或域名
server_port = 7000
# 认证token,客户端需要和此对应
token=1267823123 #与服务器一致
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

运行


(base) PS Microsoft.PowerShell.Core\FileSystem::\\wsl.localhost\docker-desktop-data\data\docker\volumes\dc2<!--autointro-->

windows安装docker

安装WSL

先安装WSL,管理员运行`wsl –install

(base) PS C:\Users\weiyo> wsl --install
正在安装: 虚拟机平台
已安装 虚拟机平台。
正在安装: 适用于 Linux 的 Windows 子系统
已安装 适用于 Linux 的 Windows 子系统。
正在下载: WSL 内核
正在安装: WSL 内核
已安装 WSL 内核。
正在下载: GUI 应用支持
[======                    10.6%                           ]

(base) PS C:\Users\weiyo<!--autointro-->

docker因为无法创建文件夹映射导致启动失败解决

[root@iZ8vbajg9wo8iwynfb1lgeZ dc_wagtail]# docker-compose up
Creating wagtail ... error
ERROR: for wagtail  Cannot create container for service wagtail: open /var/lib/docker/volumes/dc_wagtail_wagtailpython/_data: no such file or directory
ERROR: for wagtail  Cannot create container for service wagtail: open /var/lib/docker/volumes/dc_wagtail_wagtailpython/_data: no such file or directory
ERROR: Encountered errors while bringing up the project.

对于我来说出现这种错误一般是因为测试过程中第一次生成了映射文件夹,但是第二次测试前给它改名字了,想让容器重新生成,但结果是容器无法从新生成。
又发现虽然自己把主机实际文件夹名称改了,但是docker内部volume记录名称仍然存在,这就导致找不到该文件夹了。
使用
docker volume ls列出映射的文件夹
使用
`docker volume rm

Compose常用命令

Compose常用命令

Compose常用命令
docker-compose -h                           # 查看帮助
docker-compose up                           # 启动所有docker-compose服务
docker-compose up -d                        # 启动所有docker-compose服务并后台运行
docker-compose down                         # 停止并删除容器、网络、卷、镜像。
docker-compose exec  yml里面的服务id         # 进入容器实例内部  docker-compose exec docker-compose.yml文件中写的服务id /bin/bash
docker-compose ps                      		# 展示当前docker-compose编排过的运行的所有容器
docker-compose top                     		# 展示当前docker-compose编排过的容器进程
docker-compose logs  yml里面的服务id     	# 查看容器输出日志
docker-compose config     					# 检查配置
docker-compose config -q  					# 检查配置,有问题才有输出
docker-compose restart   					# 重启服务
docker-compose start     					# 启动服务
docker-compose stop      					# 停止服务

docker查看所有镜像:

docker images

docker删除所有镜像:

#删除tag为none的镜像
docker image prune
#删除指定ID的镜像
docker rmi ed9c93747fe1
#删除全部镜像
docker rmi -f $(docker images -qa)

docker关闭、删除所有容器:

docker stop $(docker ps -a -q)
docker rm $(docker ps -aq)

docker-compose命令使用

docker-compose -f docker-compose-org3.yaml up -d

重新启动docker服务

service docker restart

进入docker容器

docker exec -it [CONTAINERID] /bin/bash

查看docker运行中项目日志

docker logs -f  容器ID
docker logs -f -t --tail 100 容器ID

查看docker-compose运行日志

docker-compose  logs -f
#or
docker-compose  logs

docker 启动配置文件路径

vim /lib/systemd/system/docker.service

进入docker容器内

docker exec -it 89693c83bae9 /bin/bash

注意:如果报错OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused “exec: “/bin/bash”: stat /bin/bash: no such file or directory”: unknown使用如下命令:

docker exec -it 1e33b26152e1 bash #or docker exec -it 1e33b26152e1 sh<!–autointro–>

centos8 安装docker

最近换了服务器,安装了最新的centos8。为了方便使用,避免各种环境相互干扰,准备使用docker来搭建自己的各种应用。记录安装docker的过程如下。

  1. 查看是否已经安装docker的某些版本
    yum repolist

如有,则移除:

sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
  1. 安装需求工具:
    
    sudo yum install -y yum-utils

$ sudo yum-config-manager \
–add-repo \
https://download.docker.com/linux/centos/docker-ce.repo


遇到报错:

Invalid configuration value: failovermethod=priority in /etc/yum.repos.d/CentOS-epel.repo; Configuration: OptionBinding with id "failovermethod" does not exist


修改了```/etc/yum.repos.d/CentOS-epel.repo```文件:
将```failovermethod=priority```注释掉,变成如下:

[epel]
name=Extra Packages for Enterprise Linux 8 – $basearch
baseurl=http://mirrors.cloud.aliyuncs.com/epel/8/Everything/$basearch

220913comment

failovermethod=priority

enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8


修改后重新运行命令,成功后进行下一步。
3. 安装docker

sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin


这一步会让确认是否下载,核对指纹。确认即可。

Importing GPG key 0x621E9F35:
Userid : "Docker Release (CE rpm) docker@docker.com

Linux操作

查看端口使用情况

netstat -antup

windows查看端口使用
netstat -ano
netstat -aon|findstr "80"

查看用户和组

cat /etc/group

列出用户所属的所有组**

有多种方法可以找出用户所属的组。

主用户的组存储在 /etc/passwd 文件中,补充组(如果有)列在 /etc/group 文件中。

找到用户群的一种方法是使用 cat , less 或 grep 这些命令列出这些文件的内容。另一个更简单的选择是使用一个命令,其目的是提供有关系统用户和组的信息。

使用 groups 命令

最常用的列出用户所属的所有组的命令是 groups 命令。在没有参数的情况下执行时,该命令将打印当前登录用户所属的所有组的列表:

groups
只看用户名

cut -d':' -f 1 /etc/passwd
cut -d':' -f 1 /etc/group

ping端口

为了使用Powershell ping特定端口,您必须使用“ Test-NetConnection”命令,后跟要pingIP地址和端口号。

$ Test-NetConnection <ip_address><!–autointro–>

windows子系统wsl使用

简介
通过重启windows达到重启wsl太耗费时间,但是wsl又不能通过reboot达到重启的目的

常用命令

解决方法
管理员权限打开powershell ,然后执行下面命令

关闭服务

net stop LxssManager

重启服务

net start LxssManager

我的操作记录:


(base) PS C:\Users\weiyo<!--autointro-->

终于找到我frp配置端口映射不成功的原因了

因为虽然防火墙把相应的端口打开了,但是docke-compose中跟主机的端口映射没有配置。

今天也成功把在线用户切换成本地用户,名字就是weiyo,密码没变,提醒词是昵称。然后远程访问就可以正常进行了。

切换成本地用户不是直接就有入口,我是在计算机管理中把用户名改过之后才有使用本地用户登陆选项的。