没有什么能够阻挡,你对自由的向往。

场景:

我有一台设备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转发的更多相关文章

  1. ssh端口转发(之kettle ssh方式连接数据库)

    ssh参数解释 格式 ssh  [user@]host [command] 选项: -1:强制使用ssh协议版本1: -2:强制使用ssh协议版本2: -4:强制使用IPv4地址: -6:强制使用IP ...

  2. Linux渗透+SSH内网转发

    http://www.jb51.net/hack/58514.html http://blog.chinaunix.net/uid-756931-id-353243.html http://blog. ...

  3. OPNsense防火墙搭建实验环境,MSF与SSH进行流量转发

    OPNsense防火墙搭建实验环境,MSF与SSH进行流量转发 摘要: 记录实验过程中踩到的坑.介绍OPNsense防火墙的安装配置并搭建实验环境,利用msf的模块及ssh进行流量转发(LAN向DMZ ...

  4. [转]使用ping钥匙临时开启SSH:22端口,实现远程安全SSH登录管理就这么简单

    原文链接:使用ping钥匙临时开启SSH:22端口,实现远程安全SSH登录管理就这么简单 这个留待后面玩一下,还是有安全隐患,非核心业务 临时用一下可以. 设置防火墙策略时,关于SSH:22访问权限, ...

  5. [转帖]使用ping钥匙临时开启SSH:22端口,实现远程安全SSH登录管理就这么简单

    使用ping钥匙临时开启SSH:22端口,实现远程安全SSH登录管理就这么简单 https://www.cnblogs.com/martinzhang/p/5348769.html good good ...

  6. DDGScreenShot--iOS 图片裁剪,切圆角,加边框,你还用cornerRadius,还有更高级的用法

    写在前面 我们肯定做过这样的需求,给一个图片切圆角, 当然我们大多采用简单粗暴的方法 myIcon.layer.cornerRadius = 16.5 myIcon.layer.masksToBoun ...

  7. Qt 事件系统浅析 (用 Windows API 描述,分析了QCoreApplication::exec()和QEventLoop::exec的源码)(比起新号槽,事件机制是更高级的抽象,拥有更多特性,比如 accept/ignore,filter,还是实现状态机等高级 API 的基础)

    事件系统在 Qt 中扮演了十分重要的角色,不仅 GUI 的方方面面需要使用到事件系统,Signals/Slots 技术也离不开事件系统(多线程间).我们本文中暂且不描述 GUI 中的一些特殊情况,来说 ...

  8. [实战] SSH 图形化转发

    [实战] SSH 图形化转发 一.介绍 Unix Like操作系统不是只能进行服务器的架设而已,在美编.排版.制图.多媒体应用上也是有其需要的.这些需求都需要用到图形介面(Graphical User ...

  9. nginx 1.15.10 前端代理转发 将多个地址,代理转发到一个地址和端口 多系统公用一个cookie 统一token

    nginx 1.15.10 前端代理转发 将多个地址,代理转发到一个地址和端口 多系统公用一个cookie 统一token 注意: proxy_pass http://192.168.40.54:22 ...

随机推荐

  1. Swift中关于集合计算的几种函数记录(intersect、symmetricDifference、union、subtract)

    很久之前用过一次,后来就忘了...扎心,现在记录一下 PS:这几种函数其实不限于swift内的,在JavaScript.python.DB等其他语言,应该也有类似用法,这里我只简单讲了在swift内的 ...

  2. 生成命令行接口--google开源的fire使用体验【python-fire】

    在python中,命令行接口常用的argparse 和click,但是相对于python-fire 来说灵活度太缺了,fire可以直接将python中的函数,以命令行显示. 简单的介绍几个例子: #! ...

  3. 【Python】 解析Python中的运算符

    Python中的运算符相比较于传统的C/C++差别不是很大,主要是一些个别的运算符上的差别.包括:算术.比较.赋值.位.逻辑.成员.身份等.它们的优先级: 符号 说明 ** 指数(最高优先级) ~,+ ...

  4. Linksys WRT610n V2 刷ddwrt后安装entware-ng,使用opkg

    安装步骤很简单,首先启用usb.jffs.等. 然后: mkdir -p /jffs/opt mount -o bind /jffs/opt /opt wget -O - http://pkg.ent ...

  5. [ci]容器ci索引

    伙计们: 有任何意见或建议或看不懂的请在对应的文章下留言(请注明上下文) 我会及时改动. 这是以前的一些在物理机上搞过 [ci]容器ci索引 http://www.cnblogs.com/iiiihe ...

  6. Elasticsearch常用配置及性能参数[转]

    cluster.name: estest   集群名称node.name: “testanya”  节点名称 node.master: false  是否主节点node.data: true   是否 ...

  7. [HDFS Manual] CH8 HDFS Snapshots

    HDFS Snapshots HDFS Snapshots 1. 概述 1.1 Snapshottable目录 1.2 快照路径 2. 带快照的更新 3. 快照操作 3.1 管理操作 3.2 用户操作 ...

  8. [HDFS Manual] CH6 HDFS Federation

    HDFS Federation HDFS Federation 1 Background 2.多个namenode/namespace 2.1 关键好处 3 联合配置 3.1 配置 3.2 格式化na ...

  9. yml 后面的配置覆盖前面的

    事情是这样的: a: b: c: tomcat d: hoho # 中间还隔了好多 a: b: c: tomcat 这种情况下,后面的配置会覆盖前面的所有配置,即 a.d = hoho 也会被覆盖 y ...

  10. 【算法】八皇后问题 Python实现

    [八皇后问题] 问题: 国际象棋棋盘是8 * 8的方格,每个方格里放一个棋子.皇后这种棋子可以攻击同一行或者同一列或者斜线(左上左下右上右下四个方向)上的棋子.在一个棋盘上如果要放八个皇后,使得她们互 ...