作者blackbox (黑盒子)
看板Network
标题Re: [问答] 请问私网/公网的问题
时间Wed May 6 22:48:45 2020
※ 引述《HuangJC (吹笛牧童)》之铭言:
: 标题: Re: [问答] 请问私网/公网的问题
: 时间: Wed May 6 15:15:52 2020
:
: ※ 引述《blackbox (黑盒子)》之铭言:
: : ※ 引述《HuangJC (吹笛牧童)》之铭言:
: : : 用文字难就用图形啊
: : BBS用图形更累
: : 假设有三台电脑
:
: 因为我有买 ipad & 触控笔 XD
: 画好後上传 imgur 是个方法,不过画得会很丑
:
: 至少比完整画个简报档容易了
: 毕竟会来回答的都是免费顾问,不能要求太多
:
: : 1. RPI 拥有公网IP,提供公开SSH服务
: : 假设IP: 1.1.1.1 ,SSH PORT:22,待提供服务PORT:2345
: : 2. MAC 本机电脑,拿私网IP,可外连
: : 假设IP: 10.1.1.11
: : 3. SRV 服务主机,拿私网IP,不可外连
: : 假设IP: 10.1.1.12,服务:1234
: : MAC跟SRV在同一个私网,RPI在哪边不重要
:
: : ssh -R 2345:10.1.1.12:1234 [email protected]
:
: 我本来学的是
:
: ssh -R 2345:10.1.1.12:1234 -l pi 1.1.1.1
:
: 你的打法好记多了
:
:
: : 打完收工
: : 每提供一个服务就是要多分配一个PORT
: : 但SSH PORT同一个就够了
:
: 这最後一句反而不懂
:
: 我知道你这篇是在回我 localhost 可以换掉这件事
: 可是请问 ssh -R 2345:10.1.1.12:1234 [email protected]
: 这道指令要在哪下?
:
: 在 Mac 下的话,我的确感受到换掉 localhost 的意义了
: 可是 Srv 怎麽愿意被徵用咧..
: 或,这道指令将会要输入两个密码?
: 如果是就懂了;等等想法子架个 linux 虚拟机来试试
:
: 我现在在想一些代价问题,哪台电脑在做 nat 转发
:
: 比如这个例子,指令在 Mac 上面下
: 是不是说,封包进来後是由 Mac 充当 NAT?
:
ssh指令是在MAC这台机器下的没错,应该形容成Port Forwarding比较接近
IP分享器建立个PORT FWD,就是把WAN IP的一个PORT对应到LAN的某个地方
我们在远端的RPI开了Port FWD功能,但是这FWD却是由MAC去处理
1.1.1.1:2345 <=> 10.1.1.11:xxxxx <=> 10.1.1.12:1234
对远端的客户而言,他是连到RPI,他不认识MAC跟SRV
对SRV而言,是MAC连到他,他不认识客户跟RPI
: 也就是说,我学过把 AP 设成 NAT
: 而 ssh tunnal, 就是由下指令的那台电脑充当 NAT?
:
: 至於 cgnet 会有什麽问题,我还不懂
: 毕竟 email 的 request 已经突破层层内网穿出去了
: 而 mail server 的回传资料也突破层层内网穿回来了
:
层层穿"出去"的request就是我说的主动连接
IP分享器可以在WAN IP做NAT功能对LAN提供服务。假设WAN IP: 2.2.2.2
当你用10.1.1.11连1.1.1.1:22时,他会建立纪录:
1.1.1.1:22 <=> 2.2.2.2:xxxxx <=> 10.1.1.11:34567
(:xxxxx表示任意Port,下同)
对1.1.1.1而言是2.2.2.2去连接他,他不认识10.1.1.11
层层穿"进来"的NAT就没有对应表了
今天你的IP分享器不会知道你在10.1.1.12:1234开了服务
所以除非你在Port Forwarding下手动设定 2.2.2.2:3456 <=> 10.1.1.12:1234
分享器不会也不应该主动让2.2.2.2:xxxxx对应到10.1.1.12:1234
(不谈DMZ, UPNP, Port Trigger啥的)
而这时外面的客户端要连线的是2.2.2.2:3456而不是10.1.1.12:1234
CGNAT的问题是你的WAN IP不是公网IP
ISP发给你的是100.64.1.2这种类似私网的IP,对外变成ISP的3.3.3.3
一样的连接变成
1.1.1.1:22 <=> 3.3.3.3:xxxxx <=> 100.64.1.2:xxxxx <=> 10.1.1.11:xxxxx
对於公网上的机器,只知道3.3.3.3,不知道後面的100跟10这段
此时你的Port fwd只能开在100.64.1.2,外面的人看不到的
: 可以想见的是,如果我要留着一个 ssh 通道做我想做的事
: 那便是一种资源占用,所以会被设限?
:
手机要挂着登入远端的SSH以便开启通道,少了一个手机,好麻烦
除了所有封包都要经过手机外,大致上没有其他问题
: 所以跨过手机的 ssh 通道将会无法服务吗?
: 内网 ssh 外网应该是没问题
: 但 ssh tunnel 让外网反钻回内网,会有问题吗?
:
有可能造成资安问题,但是技术问题应该没有
你让一个本来被关在内网的服务可以被其他人使用
: 可惜手上没有资源,没得测..
:
:
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 49.219.131.19 (台湾)
: ※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Network/M.1588749355.A.3C2.html
: 推 blackbox: SSH指令在MAC下,然後所有流量都会经过这个SSH通道 05/06 17:16
: → blackbox: 此时你连1.1.1.1:2345就跟连10.1.1.12:1234一样 05/06 17:17
: → blackbox: 看SRV的服务是什麽,假设也是SSH的话,那你就可以连 05/06 17:19
: → blackbox: 1.1.1.1:2345,连入後就直达SRV的机器了 05/06 17:19
: → blackbox: 下SSH指令时只是把PORT对应过去而已,这个PORT有没有服 05/06 17:23
: → blackbox: 务,甚至SRV存在与否都不管 05/06 17:23
:
: 是,MAC 会位在 10.1.1.11, 却吐出 10.1.1.12 的封包
: 但这不打紧,因为两台私网电脑位在同一个网段,因此 Srv 仍然收得到
: 因此并不需要 Srv 同意,也不用打 Srv 的密码
:
: > 此时你连1.1.1.1:2345就跟连10.1.1.12:1234一样
:
: 但这句似乎有方向性
想成port forwarding的效果,只是提供服务的srv跟建立fwd的机器在不同地方
:
: 我昨天做了两个设定,一个是 A 往 B 连,一个是 B 往 A 连
: 如果没有方向性,都是短路在一起的概念
: 则效果应该一样
:
: 但效果就是不一样
:
: 我们以档案的观念来说,所谓的监听 A 送往 B
: 就是
:
: buf = read(a)
: write(b, buf)
:
: 不断的 while loop 这一段,直至监听结束
: 但是反向有没有呢?我认为应该有
: 因为比如 b 是 ssh server
: 我在 a 打个 ls, 要求看子目录,指令传至 b,在 b 执行 ls
: 然後 b 的执行结果仍然要送回 a (其实凡是有回应的 server 都是这样啊)
:
socket是双向的,我们在处理的是建立之前的步骤
:
:
: ※ 编辑: HuangJC (49.219.131.19 台湾), 05/06/2020 19:31:41
: ※ 编辑: HuangJC (49.219.131.19 台湾), 05/06/2020 19:58:40
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.218.6.59 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Network/M.1588776527.A.B8F.html