作者HuangJC (吹笛牧童)
看板Network
标题[问答] 请问私网/公网的问题
时间Tue May 5 11:02:44 2020
大家好,第一次来到贵板发言,先拜个码头 <(_ _)>
这次来这里,是想请问:
我知道 私网可以 ping 到公网,但是公网不可以 ping 私网
理由也很简单:如果公网可以 ping 私网,那麽一个特定的私网 IP, 应该要 ping 谁?
私网是为了 IP 分享之类理由而生的
每个私网,都可能有同一个私网 IP
因此,这根本等同无法辨识
可是,我大可 ping 该私网的对外窗口;那个必是公网 IP
然後特定的 port 如果有打开,有设定
它就当然可以设为连入到特定私网 IP
事实上我也描述了如何在私网 IP 架设网页的方法
但是我也只懂到这里了
然後我要问的是:为什麽私网可以收 email?
以前我只想到向外 ping,公网 IP 有唯一性
但我却隐隐觉得有个问题没想通
那就是,位在公网的 mail server, 当然也得把封包丢回私网啊
怎麽这时就不说封包无法去私网呢?
或者,这时正是用了 ip forward 的技巧
mail server 其实是把封包丢给私网对外窗口,然後经特定 port 送给特定 IP?
果真如此的话,我是不是可以说:只要能收 email, 就可以架 web server?
我是不是可以说:
手机分享网路给笔电,笔电可以收 email,所以笔电也可以架 web server
如果不行,那麽上面几句是为什麽错了?从哪里有误解了?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 49.219.131.19 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Network/M.1588647766.A.AFE.html
1F:→ asdfghjklasd: Public IP 决定一切 05/05 11:50
是的,我也只会回这句话而已
我的问题是我不知道详细
2F:推 blackbox: 收EMAIL是你连到主机去下载,不是主动发给你 05/05 12:33
我知道,但是主被动不是问题
因为重点是的确有封包从公网往私网流动了,对不对?
既然有,那就代表这条路是通的,我要的也不过这样而已
那我就可以参考这个网页
https://blog.csdn.net/junmuzi/article/details/8446398
先由私网下指令去 ssh 公网,建立 ssh tunnel
之後公网反钻这个 tunnel,就能见到私网了
所以我能说,所谓的收 email,这个动作其实就是有先建 tunnel 吗?
不然为什麽我的 ip 是私网,mail server 却能丢封包给我呢?
3F:→ fonzae: 服务对内 对外都可以,对内就走另一个协定 05/05 12:39
4F:→ fonzae: 外对内就是宣告 05/05 12:39
5F:→ fonzae: Server的定义并不一定是硬体,提供服务也可称为Server 05/05 12:41
6F:→ fonzae: 因此NB当然可以当作Web srv 或 mail srv 05/05 12:41
7F:→ fonzae: 只是系统跟硬体效能是否可负担就是问号 05/05 12:41
其实我没法子完全描述我的问题,所以我才简单说架网站
但是我将不会有什麽流量,那个网站只有我在用
所以效能不是我要考量的,我要考量的只有能不能的问题
8F:→ fonzae: 你有兴趣也可以去架设sendmail 05/05 12:42
我会架 sendmail 啊,这问题扩散了
我的问题只在公网为何可以丢封包回私网而已
9F:→ fonzae: 从内对内 可收信也可寄信,对外时要如何宣告 05/05 12:42
10F:→ tomsawyer: 现在你想一下 你怎麽上网的 私网跟公网要内容 他怎麽 05/05 15:19
11F:→ tomsawyer: 丢回来? 05/05 15:19
对,我就是不知道这个,所以才问这问题
所以你要我先回想这个,我就卡死了
陷入了先有鸡还先有蛋的问题
我无从回想
※ 编辑: HuangJC (49.219.131.19 台湾), 05/05/2020 17:33:52
12F:推 tomsawyer: 你google一下"NAT" 整个问题都解决 05/05 17:52
> 可是,我大可 ping 该私网的对外窗口;那个必是公网 IP
> 然後特定的 port 如果有打开,有设定
> 它就当然可以设为连入到特定私网 IP
这我前面打的,其实很多东西我是知道,但不完整,还有的是搞混
我有买一台无线 AP,如果我申请了固网
那麽躲在无线 AP 之後的私网就有这问题
不过我可以把私网 IP 转到无线 AP 的 Wan 端,开 port
是了,这项功能位在 NAT 导向之下的 虚拟伺服器
我会用啊;是我懂得不够完整
我也曾写信给 TP-LINK,因为我买了他们的无线 AP,所以寻求技术支援
---------------------
我问
> 贵公司有一类 AP, 是可以插 SIM 卡的
> 这种产品是不是可以让外网看到内网的网页?
> (做好虚拟伺服器的设定即可?)
答
> 这个取决於插SIM卡的这个AP,从ISP端获取的WAN IP是公网IP位置还是私网IP位置。
> 要是ISP能保证给这个AP分配一个公网IP位置,那麽做好虚拟伺服器的设定即可;
> 若WAN IP是私网IP位置,不仅需要在AP上做虚拟伺服器的设定,
> 还需要在ISP端给这个AP开启相应的端口。ISP端开端口一般比较复杂,
> 很多ISP也不提供这样的服务,所以购买SIM卡之前建议跟ISP确认清楚,
> SIM卡所在的AP获取的IP位置是什麽类型的。
看到这我感觉懂了,想必我的 SIM 卡 IP 本身就是私网
所以设好穿越 SIM 卡的 NAT 转发也没用
直到收 mail 时才感觉不太对劲
天知道 mail 穿越几层(至少也两层)
电脑 -------> 装SIM的无线AP --------> ISP 业者
私网 lan 端私网,wan 端私网 公网
在看 ssh tunnel 说明时,我的感觉和设定无线 AP 的虚拟伺服器一样
或许 ssh tunnel 也是 NAT?(我就是不够精确)
实际想测试时,遇到的障碍是 我不知道要把指令下到哪里去
是不是只要我能 ssh 到你
我就可以开 ssh tunnel 给你?
如果是,那 SIM 卡 IP是私网也不打紧了
刚查了 wiki NAT
看到一段话
> 由路由器跟踪每个连接上的基本资料,主要是目的位址和埠。
> 当有回覆返回路由器时,它通过输出阶段记录的连接跟踪资料来决定
> 该转发给内部网路的哪个主机
喔?这句似乎是答案
由私网到公网的路上,不见得只有穿越一层,也许是 N 层
(我就是在问,如果有 N 层,为什麽 email 封包穿越了,可见有自动设定这回事啊
我就是想要这个自动来替我开 ssh tunnel 啊;或者说不开,被限制
那就告诉我:问题在这里,因为 email 是被允许的,但 ssh 不是被允许的)
我还是得成功的开个 ssh tunnel 感受一下问题出在哪里
13F:推 pichubaby: 推楼上 05/05 18:06
14F:→ fonzae: 你内对外,确定是走ssh? 通常这个ssh指得是服务那一台 05/05 19:08
> 所以我能说,所谓的收 email,这个动作其实就是有先建 tunnel 吗?
> 不然为什麽我的 ip 是私网,mail server 却能丢封包给我呢?
这是我前面的问句,我并不确定 mail 是用了这个技术
但是, mail 归 mail,我之後不送 mail
我之後自己想要 ssh
我公司会有公网 ip,我将可以 ssh 进公司
但我希望公司可以 ssh 我的电脑(虽然它位在私网,而且还不是固网)
目前看来似乎不是不可以
刚前面自问的,ssh tunnel 指令不知要下给谁
我要 ssh 进公司,当然 ssh tunnel 也就是下给公司
不管穿越几层,只要没设防火墙,应该都会开吧..
但目前公司那边还没架好,我无法想像
我正在想怎麽用 virtual box 之类模拟器弄个环境来测
15F:→ fonzae: 你举sim卡本身就有NAT限制,正常来说,外对内并不会帮你 05/05 19:08
16F:→ fonzae: 转发 05/05 19:08
17F:→ fonzae: 若以固网来形容比较恰当,我认为你搞错mail srv会走哪些 05/05 19:09
18F:→ fonzae: 协定跟埠 05/05 19:09
固网就不会有这问题了
当我的无线 AP 外面是接固网时
我已经做到了分享网页,根本不会问这问题了
那为什麽不去申请固网呢?
因为已经有了手机网路,手机分享给电脑
那当然就异想天开,想要由手机网路解决这件事
> 但是我将不会有什麽流量,那个网站只有我在用
因为我只是要 ssh 而已啊~
19F:→ fonzae: 服务开启常见的smtp 465,外部经由dns解析,知道这台主机 05/05 19:12
20F:→ fonzae: wan ip,经由465连入指定mail srv 05/05 19:12
21F:→ fonzae: 内对外,若没有设置防火墙,且没有filter,单一路由本来 05/05 19:12
22F:→ fonzae: 就送出去,以便找寻到目标主机 05/05 19:12
※ 编辑: HuangJC (49.219.131.19 台湾), 05/05/2020 19:29:00
23F:→ fonzae: 那你的问题出在CGNAT 05/05 19:29
24F:→ tomsawyer: 你收email 从第一个内网开始穿越到最外网 都会有nat纪 05/05 20:03
25F:→ tomsawyer: 录 只是你摸不到 05/05 20:03
26F:推 ks031239: 感觉你要先弄清楚网路协定,对内对外要搞清楚吧 05/05 20:31
27F:推 ks031239: 你有开网页server的port不代表其他服务就能连进来阿 05/05 21:04
28F:→ ks031239: 你希望透过SSH连进公司,你公司的电脑就必须有开SSH服务 05/05 21:05
29F:→ ks031239: 以及SSH的port。反之你想从公司SSH连回你家,你家的电脑 05/05 21:07
30F:→ ks031239: 就必须有开SSH服务及所需port。server端跟client端不能 05/05 21:07
31F:→ ks031239: 混为一谈阿 05/05 21:08
没混为一谈
我在家的电脑是 Mac,透过 usb 转 RJ-45 连向树莓派 RPi
Mac ssh RPi 或 RPi ssh Mac
这我都成功了
所以这都不是问题
我的问题真的就聚焦在 公网/私网/NAT 上
32F:推 ks031239: 我觉得你"主被动不是问题"这句就感觉很有问题阿 05/05 21:23
33F:→ ks031239: 能连入不代表能连出,反之亦然。这可不是甚麽"自动" 05/05 21:23
我意思是:这不是办不到
这不自动,那就得下道指令
那我想学这道指令..
因为我以前也懂'公网不能看向私网'
但现在我更计较'公网的确有封包可以流向私网'
所以应该可以理解,我是在探讨更深入的问题
如果有人回我'公网不能看向私网'
那我知道,他只想到我从前的程度而已
还没有深入..
34F:推 ks031239: 你能收信是因为你能连的到mail主机。不代表mail主机能主 05/05 21:31
35F:→ ks031239: 动连到你的主机 05/05 21:31
在任何时候,mail 主机是无法主动连到我的主机没错
但在我的主机发出要求之後,mail 主机就可以主动了
我在想的是,mail 主机发出的封包,是长怎样的?
这个封包里也要写着它将往哪个 IP 去吧?
结果它写着它要往私网 IP?那不是没有辨识度?
那它写着它要往公网 IP 的特定 Port?
那你还说这开 port 不是自动的?
我看是自动的,不过可能有限时
等 mail 封包收下来後就关闭了
如果是这样,我也就不能像木马屠城一样顺着杀进去了
36F:→ ks031239: 对内对外这种方向性要弄清楚吧 05/05 21:33
37F:推 ks031239: 你发出要求那不是对方主动连进来。是你主动建立跟mail 05/05 21:36
38F:→ ks031239: server的通道。mail主机并未主动连进你的主机 05/05 21:37
有这机制够我用了
举例来说,客户电脑位在私网
电话讲解一堆叫他怎麽维护,他都听不懂
我只想取得客户电脑的 ssh 连线,以後控制权都交给我,我来维护
於是,我从公网要 ssh 客户的私网
的确是不能连,那我要求客户先由他的私网 ssh 我的公网
连是他连,问题是之後的指令他不会打
所以他连完,开完通道之後
接下来我就要用这个通道反向 ssh 客户的私网
真的够我用了
我不用主动,但我要取得控制权
39F:→ ks031239: 参考一下三向交握?前面说的NAT你有GOOGLE完了? 05/05 21:39
40F:→ ks031239: 还有阿连出port跟连入port也要分开呀。不是你连到80port 05/05 21:40
41F:→ ks031239: 你自己这边的port就是80。 05/05 21:40
42F:推 ks031239: ??太天真了吧 05/05 21:42
43F:→ ks031239: 你不搞懂主被动你怎麽处理客户开放SSHport让你连入问题 05/05 21:43
44F:→ ks031239: 连入连出方向不同阿。 05/05 21:43
45F:推 ks031239: 如果纯粹是这样的功能应该蛮多远端软体都有 05/05 21:48
46F:→ ks031239: 到真的不用搞懂原理。会用软体就好 05/05 21:48
TeamViewer 做得到,但我觉得还是要搞懂原理
这不是自己打造轮子的问题
而是稳定性的要求
TeamViewer 是在传整个画面
我不需要,我只要传文字而已
当然我也有替代方案
比如把想做的指令存放在公网电脑上,存入一个档案
私网的连上公网电脑後把档案拷回去
私网一分钟从公网抓一次档案
那麽公网这边就很像可以直连私网,只是卡卡的,一分钟一次
不过如果有反向 tunnel 机制,何必这麽阳春呢?
47F:推 ks031239: mail主机不会认得你的电脑他认的是你的IP 05/05 21:55
48F:→ ks031239: 封包回来之後你的gateway会帮你转到你的电脑 05/05 21:56
那个私网 IP 根本没有辨识度,整个 internet 不知道可以找到多少重覆的私网 IP
所以我可以想像的是,MAIL 封包上写的方向,是寄往我私网 IP 的对外窗口
一个临时开的 socket pair
49F:→ tomsawyer: 不就打洞 重点是要有一台有公网的relay 持续session 05/05 22:02
50F:→ tomsawyer: 你才能保持nat不会不见才能反打洞 05/05 22:02
→ tomsawyer: 参考案例就是nas的ddns或你提的teamviewer或logmein等 05/05 22:03
对对对,就是在谈反打洞
DDNS 老板也有提,可是我查下去它似乎是在解决变动 IP 的问题
比如我有一台电脑,每次重开机就更换一个 IP
即使这 IP 是公网的,问题是变来变去
於是我就申请 DDNS,每次变 IP 就往外更新一下
这样就可以用不变的 name 来找到我这台公网电脑
这解决了变动 IP 的问题,我看不出它可以把私网 IP 问题解决掉
51F:推 ks031239: 不是私网IP是publicIP。 05/05 22:03
52F:→ ks031239: 私人IP转publicIP是NAT的工作。mailserver看不到你的私 05/05 22:05
53F:→ ks031239: 人IP他只认得你的PUBLICIP 05/05 22:05
那就是了啊,这个 socket pair (参考这篇的回文,有提到了)是自动打开的,对吧..
我可以理解供 mail 用的就是 mail 用的
因为 port 不同,所以它不能供 http 用,不能供 ssh 用
但至少各位满足了猫的好奇心,大感谢
老实说从前我也买过 O'REILLY 的书
买了 PPP,DNS & BIND, TCP/IP
应该是没融会贯通吧,还来问这些问题
我是不是用 'email 如何运作' 这样的关键字就可以找到答案啊?
(而且得翻成英文;英文比较好搜寻)
自己找不到答案很内疚,感谢各位的耐心
54F:推 ks031239: 感觉你要的就在你自己说的名词多深入就有了。FTP的被动 05/05 22:23
没错,就感觉而已
实际去查就受挫了;没找到
55F:→ ks031239: 方式可以参考一下 05/05 22:23
56F:推 ks031239: 主被动真的就是问题不要当作不重要的 05/05 22:26
> 还有阿连出port跟连入port也要分开呀。不是你连到80port
> 你自己这边的port就是80。
还是得确认一下你的意思
私网电脑 <--> AP <--> 公网
http server 带 NAT 功能
https://imgur.com/AVjVni9
在笔电上架网站,我已经架过了
而我的 AP,它本身自带 NAT 功能,否则我也无法把它公开
就以上面附照而言,我也不是不知道两个 port 可以不一样
不过我的确不知道一件事:
email 收信的要求,是由私网往公网送
而 email 内容封包,是由公网往私网送
就是会用同一个 socket pair 吗?
你的意思是发出去用一个 port, 收回来有可能用另一个 port 吗?
如果是,那要自动开的 port 可多了
如果不是,那还好嘛..
至於中间途经十台电脑,反向时未必是同样十台
这我反而好理解;因为网路本来就不稳定,随时可以断线
所有封包只要有最後目的就好了,就在可能路径中流窜啊
只要还没有 timeout,短路在一起的设备就是会有相同讯号
其它就是什麽讯号碰撞检出协定,滑动窗协定...
那些我以前反而有看懂 (刚说了,有看但不够精确)
我等下要去查 tcp/ip socket
搞不好这就是 socket 的概念
> 主被动真的就是问题不要当作不重要的
抱歉,是用字习惯的问题
我知道它很重要
所谓不重要是指'有法子解决'
能解决就不叫做问题,所以才说不重要
但它的确是我这个问题的关键,所以也可以说重要
这不是需要在这里打转的
需要的是:重要,那怎麽下指令?
或者答案是:不可能,你做不到的,收 mail 是有魔法的,但你没有魔法
OK,那我也只好接受这个答案 XDDDD
※ 编辑: HuangJC (49.219.131.19 台湾), 05/05/2020 23:56:29
57F:推 ks031239: FTP主动被动的区分应该就是为了解决一般透过NAT连线的 05/06 00:30
58F:→ ks031239: clinet连线到FTPserver无法建立资料通道的问题 05/06 00:31
59F:→ ks031239: client端透过XXXport连出然後连入server端21port 05/06 00:33
60F:→ ks031239: 三向交握建立命令通道。然後要传档的时候client端会发出 05/06 00:34
61F:→ ks031239: 一个要求告诉server端client端会开一个OOOport让server 05/06 00:35
62F:→ ks031239: 端连入client端建立资料通道。但是由於client端是透过 05/06 00:36
63F:→ ks031239: NAT转发所以这时候server端会找不到clinet端就无法建立 05/06 00:37
64F:→ ks031239: 资料通道 05/06 00:37
65F:→ ks031239: 所以这时候会改用被动模式。命令通道建立之後,client向 05/06 00:39
66F:→ ks031239: server端发送被动传输的要求。这时候就变成server开放 05/06 00:40
67F:→ ks031239: 另外一个port告诉clinet端可以透过这个port连入。所以 05/06 00:41
68F:→ ks031239: 就是重复建立命令通道的流程建立资料通道 05/06 00:42
69F:→ tomsawyer: 你收mail是跟伺服器要 不管你在"几层"内网之中 只要可 05/06 11:19
70F:→ tomsawyer: 以连网 就会全部nat seesion 只是你不知道你的出口por 05/06 11:19
71F:→ tomsawyer: t是哪个 而mail server根据你的出口port反多给你 这中 05/06 11:19
72F:→ tomsawyer: 间所有nat设备都透过表一层一层丢回来直到私网 05/06 11:19
73F:→ tomsawyer: 现在问题是 你现在的网路可能是cgnat(电信网路) 也就 05/06 11:24
74F:→ tomsawyer: 是你的wan其实是很多层的nat 你无法用私网提供服务 05/06 11:24
75F:→ infosec: 就一个ssh reverse tunnel 结束 google第一篇就有 05/07 11:21
76F:推 Secret69: 这篇长知识了 05/12 02:03
77F:推 SHOOTA: 如果只是要用树莓派 装一个anydesk在上面 公司电脑也装 直 05/13 03:46
78F:→ SHOOTA: 接结案orz 05/13 03:46
谢谢,有空试
但我试过 team viewer 不行
解释一下不行的问题
如果是我私人架的树莓派,那是可以的
但想拿出去卖的树莓派就不可以
原因是我们有很多厂商端不想开放的东西
举例来说,我之前曾有一份工作,卖一套六百万
其中有一套 CNC 车床,以及一台电脑
但是电脑拔软碟,封 USB 槽,没网路
为什麽?
因为一台六百万这麽贵,VGA,RAM,CPU 都配备上等
我们不能容忍客户请了个会摸鱼的员工在上面偷装奇怪的软体或上班打电动
什麽都不许你装,但我们也承诺全权负责;电脑烧几台我们就会换几台
这叫商品,我们不给你完全的控制能力
我们只承诺到合约上的范围
同理,树莓派灌好我们的软体卖出,是只做合约里的事
我们不给客户 root 权限,不给他们灌软体 XD
什麽都不许做;我们是把电脑当工具没错
但客户不可以碰触到电脑的内部
(cp, rm, ls 喔喔,这些简单指令都不许跑啦;开机就是跑我们的软体
软体不许结束退出,要嘛你就关机)
我不晓得是否只是我不会操作
不过 teamviewer 我是跑不动了
哪天有空我再试试
---------
我连入树莓派是用 vnc
开机只跑我们程式,方法是建立 .xsession 档,里面填入要执行的档名
这东西我也查了很久
或许在 .xsession 档里填 teamviewer 再填我们程式就搞定了
不过呢,teamviewer 要钱,所以我自己可以做到的事我就不这麽做了
※ 编辑: HuangJC (49.216.170.239 台湾), 05/15/2020 05:03:44