最后更新于2023年3月24日 09:36:40

v*n不等于翻墙!

v*n不等于翻墙!

v*n不等于翻墙!

项目背景和概念定义

机器人使用5g模块(跟个路由器似的,能插一张5g电话卡,可以理解为手机开移动数据)上网;
5g卡是定向卡,定死了只能访问某个外网ip,这里设定是只能访问我们的云服务器;

阿里云服务器,下面简称CLD,因为这里跟v*n服务器很容易混淆;

v*n服务器,是一个托管在docker上的,负责提供ipsec-PSK,用户名,密码来让客户端连接到它;这里的客户端就是小车、红绿灯啥的。

要解决的问题

类似于我能上百度,但是百度上不了我:我就想让CLD主动访问小车,但是由于上面提到的限制,CLD是找不到小车的ip的。

大体思路

在CLD上使用hwdsl2/ipsec-vpn-server,创建基于docker容器的v*n服务器,再将机器人和云服务器设成客户端;

第一步:确定做v*n服务器的开源库

选择hwdsl2/ipsec-vpn-server做v*n服务器。

第二步:加深协议了解

经过多方拉扯,学到了一点姿势:
L当我们提到L2TP的时候,一定要分清,是L2TPv2,还是L2TP over ipsec,还是L2TPv3。
1、v3在商用上很少,暂不做考虑;
2、L2TPv2在很多语境下(尤其是跟深谙此道的5g模块供应商交流的情况下)也被简称为L2TP,是最普通的vn协议,如果发现连接这个L2TP的vn时,没地方填写ipsec pre-shared key,那八成是这种;
3、ipsec和L2TP一样,都是vn协议,L2TP over ipsec相当于在L2TP的基础上多包装了一层ipsec,相当于两层vn,对信息进行了加密,此时就需要用到ipsec pre-shared key(PSK)进行额外验证。

第三步:修改v*n服务器源码 & 编译docker镜像

机器人使用的5g模块仅支持L2TP协议(不使用ipsec的这种),但是hwdsl2/ipsec-vpn-server这个库考虑到安全性,是默认不支持L2TP-without-ipsec的,因此我们要对源码做些修改,请完全参考该github-issue,从源码开始编译docker镜像:l2tp without IPSec
总结一下是:

# 在docker-ipsec-vpn-server/run.sh里面,删除这两句
$ipi 1 -p udp --dport 1701 -m policy --dir in --pol none -j DROP
$ipi 6 -p udp --dport 1701 -j DROP
# 在docker-ipsec-vpn-server/Dockerfile.debian里面,暴露1701端口
EXPOSE 500/udp 4500/udp 1701/udp

里面有个小坑是:在docker build一个debian-based的镜像时,应该修改源码中的Dockerfile.debian这个文件,而不是Dockerfile
编译语句是:

docker build -f Dockerfile.debian -t ${image-tag-name}:${image-tag-version} .

第四步:根据docker镜像创建容器

这是我编译好的镜像:

不使用ipsec的情况下,是不支持--network=host这种网络模式的,不然我就不用把CLD设置成客户端了。

创建vpn.env文件,在里面设置PSK,用户名,密码,路径问题可以参考github上的内容:

VPN_IPSEC_PSK=${32位以下随便填一个字符串}
VPN_USER=${yonghuming}
VPN_PASSWORD=${mima}

运行容器的命令是:sudo docker run -d --privileged -p 1701:1701/udp -p 500:500/udp -p 4500:4500/udp --name vpn-container --restart=always --env-file ./vpn.env -v /lib/modules:/lib/modules:ro l2tp-no-ipsec
注意要把500, 1701, 4500端口全部打开,不要被防火墙拦截了。

完成后,用sudo docker logs vpn-container可以看到PSK,用户名,密码,拿这三个就可以在客户端登录力!不建议windows和linux登录,因为还要做额外配置;手机登录时建议使用高贵的华为或者荣耀,因为小米跟红米不支持L2TP,蒸虾头。

第五步:额外步骤,将CLD配置为客户端

这一步是因为,在默认的bridge模式下,从CLD无法直接ping到小车:
vn服务器的网络如图:

~~这里的ppp1 interface就是一个点到点的v
n,可以把192.168.42.11看作是机器人的ip,而因为netmask是32,所以再怎么设置路由,从CLD也是没办法ping通机器人的。~~

将CLD设置为客户端,请参考:https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/clients-zh.md
添加路由规则:route add -net 192.168.42.0 netmask 255.255.255.0 gw 192.168.42.1

最新更新:上述方法广义上可行,但是狭义上,不适合我们使用的5g模块,因此直接把机器人配成v*n客户端

DONE

以下内容均已废弃,用这个路由转发的方式转了半天搞不出来

阿里云主机通过Docker安装L2TP
按照这个来,但是创建容器的地方改一下。

在做l2tp 服务器映射,用桥接的方式把容器内部的客户端ip映射出来

sudo docker run --name l2tp-vpn-server --env-file ./vpn.env --net=host --restart=always -p 500:500/udp -p 4500:4500/udp -d --privileged hwdsl2/ipsec-vpn-server

创建容器的时候用这个来建。
如果需要不通过ipsec的l2tp,可以参考这个issue:https://github.com/hwdsl2/docker-ipsec-vpn-server/issues/191

用l2tp(不带ipsec)的方式实现云服务器到机器人的主动访问相关推荐

  1. 云服务器cvm系统,云服务器 cvm 自带系统

    云服务器 cvm 自带系统 内容精选 换一换 如果Linux操作系统云服务器未安装密码重置插件,可以参见本节内容重新设置密码.本节操作重置的是root用户的密码,您可以重置完root密码后登录云服务器 ...

  2. 带你从零玩转云服务器

    目录 前言 如何玩转云? 玩转Docker Docker架构图 环境 安装步骤 优化Docker---配置镜像加速器 玩转Kubernetes Kubernetes架构图 基本环境 kube-apis ...

  3. 不带ui的服务器系统,win不含ui的云服务器

    win不含ui的云服务器 内容精选 换一换 当云服务器密码即将过期.密码泄露或首次登录时(首次登录云服务器建议您修改初始密码),您可以参考本节操作在操作系统内部修改云服务器密码.优先推荐您参考在控制台 ...

  4. 华为服务器上传文件,云服务器上传文件方式

    云服务器上传文件方式 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器上分别安装数据传 ...

  5. 阿里云服务器ECS使用管理多种方式汇总

    阿里云服务器ECS创建后如何使用?阿里云提供多种方法操作云服务器ECS,可以通过Web端ECS管理控制台操作.阿里云客户端.阿里云APP.ECS API.资源编排.运维编排服务.Terraform及A ...

  6. 政务云访问服务器文件方式,政务云访问服务器文件方式

    政务云访问服务器文件方式 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. 已获取 ...

  7. 带时间码方式,将DV带刻录为DVD的全过程

    带时间码方式,将DV带刻录为DVD 儿子2个半月了,也录制了3盘dv.可是由于导出的视频都没有录制时间,这实在是很大的缺憾.于是从网上搜罗了各种带时间刻录的方法,并结合可以得到的软件,总结出了一种适合 ...

  8. 使用 IPsec 与组策略隔离服务器和域-第 7 章 IPsec 疑难解答

    本章提供有关如何对 Internet 协议安全性 (IPsec) 问题(如服务器和域隔离方案中的安全性问题)进行疑难解答的信息,这些信息依赖于 Microsoft 信息技术 (IT) 小组的经验和方法 ...

  9. 史上最详细阿里云服务器上Docker部署War包项目 实战每一步都带详细图解!!!

    史上最详细阿里云服务器上Docker部署War包项目 实战每一步都带详细图解!!! 部署jar 包方式: https://blog.csdn.net/weixin_45821811/article/d ...

最新文章

  1. 一篇文章搞懂fof好友推荐案例
  2. UA OPTI501 电磁波 Lorentz Oscillator Model 3 相速度与群速度
  3. 对于指针与malloc函数关系的研究,以及指针的赋值。
  4. windowsserver服务器维护,Windows Server服务器日常管理技巧
  5. 阿里云 超级码力在线编程大赛初赛 第2场 题目1. 三角魔法
  6. EasyExcel快速上手~读取
  7. 华为官方推特直接开骂@苹果,负责人称:被盗号了
  8. alwayson高可用组_AlwaysOn可用性组–如何在集群实例和独立实例之间设置AG(第2部分)
  9. ASP.NET MVC:实现我们自己的视图引擎
  10. 怎么向前撤回_延迟复工,工资到底怎么算?
  11. DHCP:(3)思科防火墙ASA上部署DHCP服务以及DHCP中继
  12. 颜色对照表(四)(16进制、RGB、CMYK、HSV、中英文名)
  13. 理工专业单身男终极把妹大法
  14. 键盘定位板图纸_DIY如何自制专属GH60机械键盘教程【步骤详解】
  15. Mac右键增强工具Easy New File如何快速新建文件夹?
  16. 用应用软件UCCW Widget制作出属于你独一无二的梦幻桌面吧!
  17. WPF编程--地图控件GMap使用
  18. 编码器的分类及工作原理
  19. 视博云android虚拟机,手游难推广?视博云云游戏解决方案助力游戏厂商破局
  20. php libiconv close_undefined reference to `libiconv_open 无法编译PHP libiconv

热门文章

  1. 6.PS-裁剪和切片
  2. 如何在c++中实现俄罗斯方块
  3. 基于Python实现的作业查重系统
  4. 四元数的“前世”与“今生”
  5. 奔跑的akuan01:HTML建站的基础知识和HTML标签
  6. oracle aq java_Oracle AQ 的使用(-)
  7. 中断控制器8259——工作方式、命令字
  8. A 2.5D Cancer Segmentation for MRI Images Based on U-Net
  9. 翻新机是这样造出来的
  10. 零基础如何高效学习编程|成就我的10个编程学习实用小技巧