【智能路由器】openwrt实现内网穿透(p2p、n2n)
【智能路由器】系列文章连接
http://blog.csdn.net/u012819339/article/category/5803489
背景
有时候在对线上设备进行维护,由其是调试的时候希望技术人员远程进入路由后台调试路由信息的时候,如果没有内网穿透就会比较麻烦。
本篇博客是在路由上实现内网穿透,以实现数据、文件的点对点传输或访问
阅读时需要额外了解下p2p协议原理,以及n2n工具
模型框架图
搭建supernode节点
准备一台公网服务器作为supernode节点,下载源码(编译需要事先安装libssl-dev),编译
$ git clone https://github.com/ntop/n2n.git
$ make
运行supernode,侦听1234端口
$ ./supernode -l 1234 -v
客户端搭建
openwrt本身包含n2n的Makefile,只不过现在不能用了,得改一下,
n2n官网出现了2个版本n2n_v1、n2n_v2(可自己访问https://svn.ntop.org/svn/ntop/trunk/n2n/ 查看),本次是用的n2n_v2编译的,不过在Makefile中做了一个菜单选项,make menuconfig的时候可以选择编译哪个版本,改后的Makefile如下
#
# Copyright (C) 2008 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# author: arvik
# email: 1216601195@qq.com
# blog : http://blog.csdn.net/u012819339include $(TOPDIR)/rules.mkPKG_BRANCH:=trunk
PKG_SOURCE_URL:=https://svn.ntop.org/svn/ntop/trunk/n2n
PKG_REV:=$(shell LC_ALL=C svn info ${PKG_SOURCE_URL} | sed -ne's/^Last Changed Rev: //p')PKG_NAME:=n2n
PKG_VERSION:=svn$(PKG_REV)
PKG_RELEASE:=1PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
PKG_SOURCE_PROTO:=svn
PKG_SOURCE_VERSION:=$(PKG_REV)PKG_BUILD_DEPENDS:=PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)PKG_VER_SELECT:=include $(INCLUDE_DIR)/package.mkdefine Package/n2nSECTION:=netCATEGORY:=NetworkTITLE:=VPN tunneling daemonURL:=http://www.ntop.org/n2n/SUBMENU:=VPNDEPENDS:=libpthread +libopenssl
endefdefine Package/$(PKG_NAME)/configsource "$(SOURCE)/Config.in"
endefifdef CONFIG_N2N_VER_SELECT_V1PKG_VER_SELECT:=v1
endififdef CONFIG_N2N_VER_SELECT_V2PKG_VER_SELECT:=v2
endifdefine Build/Configure
endefdefine Build/Compile$(MAKE) CC="$(TARGET_CC)" -C $(PKG_BUILD_DIR)/n2n_$(PKG_VER_SELECT)
endefdefine Package/n2n/install$(INSTALL_DIR) $(1)/usr/sbin$(INSTALL_BIN) $(PKG_BUILD_DIR)/n2n_$(PKG_VER_SELECT)/edge $(1)/usr/sbin/$(INSTALL_BIN) $(PKG_BUILD_DIR)/n2n_$(PKG_VER_SELECT)/supernode $(1)/usr/sbin/
endef
在Makefile相同目录下增加一个Config.in文件,内容如下:
choiceprompt "select the version of n2n to compile, default select V1"default N2N_VER_SELECT_V2depends on PACKAGE_n2nconfig N2N_VER_SELECT_V1bool "n2n_v1"help "select the version V1 for n2n"config N2N_VER_SELECT_V2bool "n2n_v2"help"select the version V2 for n2n"endchoice
运行make menuconfig时候效果如下:
选择必要工具
libssl库是需要的,还需要在busybox中选择如下工具
Location: -> Base system
-> busybox
-> Networking Utilities
-> tunctl
路由器终端运行如下命令:
$ tunctl -t tun0
$ ./edge -d n2n0 -c mynetwork -k encryptme -u 99 -g 99 -m 3C:A0:12:34:56:78 -a 1.2.3.4 -l a.b.c.d:xyw
请自行参看./edge –help 查阅参数含义,更改上面命令中本地虚拟网卡网卡mac以及ip地址,指定服务器ip和侦听端口
测试结果
两个n2n对端互ping截图
终端通过n2n建立的网络访问路由效果截图
好啦,本文到此结束,作者arvik,【智能路由器】系列文章见
http://blog.csdn.net/u012819339/article/category/5803489
最近阿里新出了智能AI音箱——天猫精灵,类似亚马逊的echo产品,觉得有点意思,附上该音箱图片,图片与文章无关
【智能路由器】openwrt实现内网穿透(p2p、n2n)相关推荐
- 在N1盒子进行Openwrt的内网穿透
用网云穿在 N1 盒子上实现 Openwrt 的内网穿透 软路由器情况 N1(已经刷入 Armbian) 中使用 docker 创建 Openwrt 容器作为旁路由. 我的内网ip信息 内网IP因人而 ...
- “攻城狮”手把手教你物联网智能生活-内网穿透技术
"攻城狮"手把手教你物联网智能生活-内网穿透技术 内网穿透技术,即实现外网IP访问内网IP而发展起来的一种计算机技术.在了解内网穿透技术之前,我们需要先了解IP和内网外网的概念. ...
- 无需设置路由器,无需公网ip 实现永久免费内网穿透
用网云穿在 N1 盒子上实现 Openwrt 的内网穿透 软路由器情况 N1(已经刷入 Armbian) 中使用 docker 创建 Openwrt 容器作为旁路由. 我的内网 ip 信息 内网 IP ...
- linux下配置钉钉内网穿透_4G工业路由器内嵌花生壳PHTunnel,为工业物联网提供智能内网穿透...
继北京盛讯美恒科技USB Server设备内嵌花生壳PHTunnel后,本次为大家分享佛山市拓界物联科技有限公司4G工业路由器内嵌花生壳PHTunnel方案,实现通过4G路由器远程访问所连接的任何内网 ...
- 基于win10的hyper-v安装openwrt与zerotier实现内网穿透及异地组网
背景说明 想用zerotier实现内网穿透及访问异地互联网,但是网上服务端都是基于linux系统的nat转发实现,现在环境并没有linux服务器,也不想安装linux虚拟机,故基于openwrt软路由 ...
- p2p技术之tcp内网穿透 java实现版
如今p2p技术已经十分成熟,然而很多人停留在理论层面,在实现过程中遇到这样那样的问题,甚至有的人说tcp打洞无法实现,本文简单阐述tcp穿透的过程,然后附上完整的java代码. 由于32位Ip地址的稀 ...
- 免费内网穿透方案——ZeroTier+OpenWRT
关于免费内网穿透方案的研究 一直以来在研究一些关于内网穿透的方案,都是一些很不靠谱的营销文章.索性很长一段时间就没了兴趣做这件事情,偶然的机会听到了ZeroTier,居然让我有种发现新大陆的喜悦.可能 ...
- Openwrt内网穿透NPS(新路由3d)
文章目录 前言 拓扑图 环境 搭建nps服务端 npc安装客户端 前言 在学校上课去机房来回背电脑太累了,但是用机房电脑重启就清空数据了还得来回配置环境太麻烦了,打算用远程桌面用机房电脑控制宿舍电脑这 ...
- 【智能家居】Home Assistant入门安装并内网穿透实现远程安全控制
文章目录 前言 1. 安装Home Assistant 2. 配置Home Assistant 3. 安装cpolar内网穿透 3.1 windows系统 3.2 Linux系统 3.3 macOS系 ...
最新文章
- 无需u盘和光盘安装linux
- PHP5中的stdClass
- 细数C++和C的差别
- Ubuntu update case the virtualbox crash
- java tomcat jndi,Tomcat JNDI 资源
- 使用 Source Generator 自动生成 WEB API
- 集合——对象数组(引用数据类型数组)
- Sklearn 与 TensorFlow 机器学习实用指南第二版
- 关于布局管理器FlowLayout的思考:如何让FlowLayout自动换行(3)
- 请教大家, 关于 $0118 号消息
- Qt_解决Qt5.15 + Xcode12iOS端qmake不可用的问题
- Diamond programmer程序下载流程
- 几款免费好用的OCR工具
- 微软承认iPad牛逼,正计划为其定做Office?
- httpclient3与httpclient4访问的一些区别
- Vue 腾讯防水墙验证
- python爬去百度图片_python爬虫之爬取百度图片
- kazoo在多进程下使用全局连接死锁问题
- D语言/DLang 2.085.1 发布,修复性迭代
- 计算两个经纬度点之间的距离