[daily] 比端口转发更高级的ssh device tunnel转发
没有什么能够阻挡,你对自由的向往。
场景:
我有一台设备Server100,在某一个f复杂的内网里,需要多次ssh跳转可以访问到。但是它不能直接访问internet。
我现在需要在我的ssh路径上,搭一条链路出来,让倒霉的设备Server100通过我笔记本上网。
方法:
第一步:通过多次建立端口转发隧道,把Server100的22端口映射出来。让我的笔记本可以直接ssh进Server100。
第一跳:
┬─[tong@T7:~/VM/nlb]─[05:01:28 PM]
╰─>$ ssh -L127.0.0.1:60022:100.64.224.20:22 t36
┬─[tong@T7:~/VM/nlb]─[:: PM]
╰─>$ ss -l -t -p - |grep
LISTEN 127.0.0.1: 0.0.0.0:* users:(("ssh",pid=,fd=))
第二跳:
原理同上,如果有的话。我。。没有了。。。[撒花][撒花]
第二步:在server100和笔记本上,分别建立两个tunnel device。为步骤三做准备。
server100上:
[root@nlb-tong- ~]# ip tuntap add mod tun
[root@nlb-tong- ~]# ip link show tun0
: tun0: <POINTOPOINT,MULTICAST,NOARP> mtu qdisc noop state DOWN mode DEFAULT group default qlen
link/none
配IP:
[root@nlb-tong- ~]# ip link set dev tun0 up
[root@nlb-tong- ~]# ip addr add 1.1.1.1/ dev tun0
笔记本上:
同server100
第三步:在Server100的sshd上,开启tunnel转发功能。
把 PermitTunnel改成yes,并重启sshd
[root@nlb-tong- ~]# cat /etc/ssh/sshd_config |grep Tun
#PermitTunnel no
[root@nlb-tong- ~]# systemctl restart sshd
第四步:通过步骤一中最后搭建出的的ssh链接,做一条设备转发隧道,将步骤二中的两个tunnel device打通。
┬─[tong@T7:~/VM/nlb]─[:: PM]
╰─>$ ssh -p60022 -w0: root@127.0.0.1
查看两端的tunnl设备的状态,由NO-CURRIER变成POINTOPOINT
: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu qdisc pfifo_fast state UP group default qlen
link/none
inet 1.1.1.1/ scope global tun0
valid_lft forever preferred_lft forever
两端添加路由
sudo ip r add 2.1.1.1/ via 2.1.1.2 dev tun0 ##笔记本
ip r add 2.1.1.2/ via 2.1.1.1 dev tun0 ## server
ping一下,验证一下。
[root@nlb-tong- ~]# ip r add 1.1.1.2/ via 1.1.1.1 dev tun0
[root@nlb-tong- ~]# ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1) () bytes of data.
bytes from 1.1.1.1: icmp_seq= ttl= time=0.163 ms
bytes from 1.1.1.1: icmp_seq= ttl= time=0.080 ms
^C
第五步:为两个device配置IP,路由。把Server100的公网流量全部转到笔记本的公网出口上去。
在server100上加路由:
其中第二条用来保证我当前的管理链接可以正常使用。
default via 1.1.1.1 dev tun0
10.0.0.0/ via 10.0.0.1 dev eth0
这个时候,在笔记本上,已经可以收到从1.1.1.1过来的公网包了。
┬─[tong@T7:~/VM/nlb]─[:: PM]
╰─>$ sudo tcpdump -i tun0 -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size bytes
::19.436430 IP 1.1.1.1 > 114.114.114.114: ICMP echo request, id , seq , length
::20.451450 IP 1.1.1.1 > 114.114.114.114: ICMP echo request, id , seq , length
::21.475726 IP 1.1.1.1 > 114.114.114.114: ICMP echo request, id , seq , length
::22.435967 IP 1.1.1.1 > 114.114.114.114: ICMP echo request, id , seq , length
然后再在笔记本上进行设置,让这些包,给外网送出去,可用的方法有很多。
最简单的就是bridge。
下面,是用iptables的做法。
# 先,让二层包能相互转发
sudo iptables -A FORWARD -i tun0 -o wlan0 -j ACCEPT
sudo iptables -A FORWARD -o tun0 -i wlan0 -j ACCEPT
# 再,配个SNAT
sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
好了, 通了
[root@client-tong- ~]# curl -q www.baidu.com
<!DOCTYPE html>
第六步:开心的上网。
[root@client-tong- ~]# yum search epel-release
还有还有:
其实,除了tunnel设备,tap设备也是可以的,详见下文:
https://www.taos.com/wp-content/uploads/2015/10/Taos-White-Paper_Advanced-SSH-Tunneling.pdf
大概是这样的:
ssh -o Tunnel=ethernet -f -w : root@remotehost.example.com true
完。
[daily] 比端口转发更高级的ssh device tunnel转发的更多相关文章
- ssh端口转发(之kettle ssh方式连接数据库)
ssh参数解释 格式 ssh [user@]host [command] 选项: -1:强制使用ssh协议版本1: -2:强制使用ssh协议版本2: -4:强制使用IPv4地址: -6:强制使用IP ...
- Linux渗透+SSH内网转发
http://www.jb51.net/hack/58514.html http://blog.chinaunix.net/uid-756931-id-353243.html http://blog. ...
- OPNsense防火墙搭建实验环境,MSF与SSH进行流量转发
OPNsense防火墙搭建实验环境,MSF与SSH进行流量转发 摘要: 记录实验过程中踩到的坑.介绍OPNsense防火墙的安装配置并搭建实验环境,利用msf的模块及ssh进行流量转发(LAN向DMZ ...
- [转]使用ping钥匙临时开启SSH:22端口,实现远程安全SSH登录管理就这么简单
原文链接:使用ping钥匙临时开启SSH:22端口,实现远程安全SSH登录管理就这么简单 这个留待后面玩一下,还是有安全隐患,非核心业务 临时用一下可以. 设置防火墙策略时,关于SSH:22访问权限, ...
- [转帖]使用ping钥匙临时开启SSH:22端口,实现远程安全SSH登录管理就这么简单
使用ping钥匙临时开启SSH:22端口,实现远程安全SSH登录管理就这么简单 https://www.cnblogs.com/martinzhang/p/5348769.html good good ...
- DDGScreenShot--iOS 图片裁剪,切圆角,加边框,你还用cornerRadius,还有更高级的用法
写在前面 我们肯定做过这样的需求,给一个图片切圆角, 当然我们大多采用简单粗暴的方法 myIcon.layer.cornerRadius = 16.5 myIcon.layer.masksToBoun ...
- Qt 事件系统浅析 (用 Windows API 描述,分析了QCoreApplication::exec()和QEventLoop::exec的源码)(比起新号槽,事件机制是更高级的抽象,拥有更多特性,比如 accept/ignore,filter,还是实现状态机等高级 API 的基础)
事件系统在 Qt 中扮演了十分重要的角色,不仅 GUI 的方方面面需要使用到事件系统,Signals/Slots 技术也离不开事件系统(多线程间).我们本文中暂且不描述 GUI 中的一些特殊情况,来说 ...
- [实战] SSH 图形化转发
[实战] SSH 图形化转发 一.介绍 Unix Like操作系统不是只能进行服务器的架设而已,在美编.排版.制图.多媒体应用上也是有其需要的.这些需求都需要用到图形介面(Graphical User ...
- nginx 1.15.10 前端代理转发 将多个地址,代理转发到一个地址和端口 多系统公用一个cookie 统一token
nginx 1.15.10 前端代理转发 将多个地址,代理转发到一个地址和端口 多系统公用一个cookie 统一token 注意: proxy_pass http://192.168.40.54:22 ...
随机推荐
- celery --分布式任务队列
一.介绍 celery是一个基于python开发的分布式异步消息任务队列,用于处理大量消息,同时为操作提供维护此类系统所需的工具. 它是一个任务队列,专注于实时处理,同时还支持任务调度.如果你的业务场 ...
- yaf项目将500错误打印到页面上
一般在yaf项目调试的时候,如果代码有错误,页面只会响应500错误,但看不到哪里报了什么错误,通过开启yaf的一个配置可以将错误信息显示在页面上. 打开项目的index.php入口文件,在开头加入如下 ...
- docker的/var/lib/docker/overlay文件夹突然占满了硬盘
场景描述 事情是这样的,前两天客户的服务器突然断电了,导致用docker部署的服务也挂了.昨天去现场,重启了docker,同时准备更新一下服务.结果发现有一台节点硬盘满了- 还是觉得有些奇怪的,毕竟d ...
- [Git] 将本地分支与远程分支关联
. . . . . 在本地工程中添加Git,并将其与远程的空库关联起来,只需如下几步. 1. 创建空库 $ git init Initialized empty Git repository in D ...
- JDK 自带的观察者模式源码分析以及和自定义实现的取舍
前言 总的结论就是:不推荐使用JDK自带的观察者API,而是自定义实现,但是可以借鉴其好的思想. java.util.Observer 接口源码分析 该接口十分简单,是各个观察者需要实现的接口 pac ...
- 字符集之在UTF-8中,一个汉字为什么需要三个字节?
(一)在UTF-8中,一个汉字为什么需要三个字节? UNICODE是万能编码,包含了所有符号的编码,它规定了所有符号在计算机底层的二进制的表示顺序.有关Unicode为什么会出现就不叙述了,Unico ...
- mac 上使用 zip 版的mysql
1. 下载: 2. 解压,然后复制到需要的目录下 3. 修改 /usr/local/mysql的所有者为mysql: chown -R mysql:mysql mysql (这一步我是没做,爱做不做. ...
- Groovy和Java互调
Scala和Java为静态语言,Groovy为动态语言 Scala: 函数式编程,同时支持面向对象 Groovy: jvm上的脚本,较好兼容java语法,Groovy加强了Java集成. 可配置化的优 ...
- SQUAD的rnet复现踩坑记
在港科大rnet(https://github.com/HKUST-KnowComp/R-Net) 实现的基础上做了复现 采用melt框架训练,原因是港科大实现在工程上不是很完美,包括固定了batch ...
- Qt编写自定义控件2-进度条标尺
前言 进度条标尺控件的应用场景一般是需要手动拉动进度,上面有标尺可以看到当前进度,类似于qslider控件,其实就是qslider+qprogressbar的杂交版本,不过我才用的是纯qpainter ...