作者HuangJC (吹笛牧童)
看板Network
標題Re: [問答] 請問私網/公網的問題
時間Thu May 7 02:51:21 2020
謝謝,真的很有細節!
獨學不能無友
書我都不知道看幾次了,但始終看不通
最後的結果是書都快被我當國文課本背起來了
但還是不懂 XDDDD (不知有沒有人懂這種無奈)
※ 引述《blackbox (黑盒子)》之銘言:
: : 比如這個例子,指令在 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
^^^
就這個,內網往外網我不懷疑其能力
但外網往內網有問題,所以我想 NAT 這時也還是有在做轉發
但這次是自動設的,和我要去 AP 的 NAT 功能表手動設不同
其實要講解這細節,就連 NAT 都得給一個 IP 來講了
而我一直很搞不懂的是,NAT 是有一個 IP,還是兩個 IP?
似乎是兩個,一個公網對外,一個私網對內,
NAT 就是電子交換機,將這兩個直接短路起來
私網對內那個似乎和我們其他私網電腦是同一個網段的,所以才符合 netmask 的規則
也才有法子填 gateway 這個欄位
(這帶出另一個問題,現在的 NAT 都一插上就能用,不用自己設 route
我以前是 modem 工程師,廠商有時送來的機器不會自己產生 route,我要先設才能用
N 年前的產品比現在陽春吧!
可是我都不知道要怎樣設,我不知道 gateway 是多少,怎麼查
gateway 有一定的規則嗎?比如 netmask 所規範範圍內,所有可變 bit 都設 0?
可變都設 1 是廣播位址嘛;因為我常看 default gateway 是設往 0,0,0,0
也或者其實要看硬體設定,廠商應該提供給我但沒提供)
: 對遠端的客戶而言,他是連到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
就這個,不把 IP 分享器也給一個 IP,根本講解不清這段
但我覺得有兩個 ip,私網 IP 就是 gateway
: 當你用10.1.1.11連1.1.1.1:22時,他會建立紀錄:
: 1.1.1.1:22 <=> 2.2.2.2:xxxxx <=> 10.1.1.11:34567
是,我印象中讀過一句話:每個服務都要開 port
而 NAT 被不定數量的私網 IP 動態連上時,也會動態開 port
有還沒用的就開~
: (: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啥的)
好吧,先不談 Port Trigger
我有去信問 tp-link, 他們回信後我還是不懂
我認為是我沒用到,所以不懂;那先別勉強學
: 而這時外面的客戶端要連線的是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以便開啟通道,少了一個手機,好麻煩
: 除了所有封包都要經過手機外,大致上沒有其他問題
這不是麻煩 XD
我老闆丟給我一個使用情境
他說:牽一個固網很貴,客戶捨不得牽給 RPI
(我們 RPI 是用來做自動控制的微電腦,在工廠裡控制機台的)
平時 RPI 都獨立運作
但偶爾還是會想上網,這時客戶會拿著手機接近
RPI 可不可以設成臨時連上手機並且馬上上網
我答:可
他又問:那這時可不可由外界控制 RPI
我當場就想把客戶幹到外翻了 XD
好好牽個固網是會死嗎?是有多貴..
牽個固網,你去美國都可以搖控你心愛的工廠
然後老闆就說:可是人家物聯網都可以,都是內網,一樣可以控制工廠的燈泡
應該可以把燈泡註冊到雲端,以後就可以控制
那時我就很想不通
以註冊來說是可以分辨出這顆燈泡沒錯
但以 IP 來說,內網 IP 沒什麼好註冊的,沒分辨力
如果牽固網,我就會在 IP 分享器上面設好固定式 NAT
大方的說當然連得進來
但如果是手機網路,我突然想到,要在手機上設 NAT?手機根本沒這欄位!
這樣知道我為什麼開始思考這些機車問題了吧..
那就去用人家的服務啊!
這句回答等於是:我回家吃自己,你找那家替你做去
老闆就是要我做
他就是說:team viewer 那種 server,我們自己架一個,程式自己寫
所以我才評估這些
其實不是一定要做
而是只要可以評估出來,很難,很貴,別人不可能做出來,那也可以不做 XD
但我天天最不爽聽到的就是:別家那個誰誰誰做出來了耶,他為什麼可以
靠北咧,別人可以!
所以我才得研究一下
最近我有新的藉口了:team viewer 可以沒錯,但試用期過後就要錢了,要代價啦
(要錢他就不會逼我做了 XDDDD)
好啦,現在我終於搞懂了
只要你捨得手機丟在那邊
那你手機丟著的期間,我也承諾你做得到
至於未來老闆會想通,改去逼客戶一定要牽固網
那是未來的事了,至少現階段我不輸別人 :P
: : 所以跨過手機的 ssh 通道將會無法服務嗎?
: : 內網 ssh 外網應該是沒問題
: : 但 ssh tunnel 讓外網反鑽回內網,會有問題嗎?
: 有可能造成資安問題,但是技術問題應該沒有
: 你讓一個本來被關在內網的服務可以被其他人使用
我也覺得資安有問題,一直在想有沒有地方可以上課
有些錢是得花的,坐著聽兩小時會懂,就去聽..
在 PTT 問免錢的有時會被酸
在這板到現在還沒被酸是太好運了
(至於上了課還不懂,就好像巨匠那種水準,那也不行
所以有時為了五斗米還是得來挨罵
我挨的很多罵都是主管要求做的,主管都覺得可以,然後我就來問,來挨罵
主管自己也不會 XD)
: : 我昨天做了兩個設定,一個是 A 往 B 連,一個是 B 往 A 連
: : 如果沒有方向性,都是短路在一起的概念
: : 則效果應該一樣
: : 但效果就是不一樣
: socket是雙向的,我們在處理的是建立之前的步驟
等等來修文附上我的案例,因為都看你的數字,我已經眼花了
必需實體化一下
-------------------
有了,我們用 shell 的變數功能
我都這樣做的,因為我背不起 IP
RPi='169.254.161.158'
echo $RPi
169.254.161.158
其實像這樣,所以根本不用直接給 IP
現在我有一台 Mac, IP 是 $MAC
有一台 RPi, IP 是 $RPi
在開發 RPi 時,我是用 VNC 的
開 port 是 5900
所以,在 Mac 上以 VNC Viewer 連向 $RPi 就可以看到 RPi
然後我下 ssh tunnel 指令
ssh -R 5901:localhost:5900 myname@$MAC
下在 RPi,打完 MAC 上的密碼後,shell 提示號會顯示我登入 MAC 了
然後這時我在 MAC 上,用 VNC Viewer 連向 localhost 的 port 5901,就可以看到 RPi
這邊是懂的
而我的理解是 RPi:5900 和 Mac:5901 短路在一起
去看 RPi:5900 就和去看 Mac:5901 一模一樣
看來一定有細節不一樣,因為若說短路,沒有方向性,那反過來設卻不會動
在 MAC 上面下
ssh -R 5900:localhost:5901 pi@$RPi
然後在 MAC 用 VNC Viewer 看向 localhost 的 port 5901,沒用,不能看
那請問這個方向性是怎麼造成的,細微差異在哪?
喔,這時若丟訊息進入 RPi 的 5900,就會由 MAC 的 5901 接收,
看有沒有什麼服務在監聽 5901 就會動作
但反之丟訊息進入 MAC 的 5901,不會主動跑向 RPi 的 5900?
(我以為是雙向啊~ 不是蟲洞嗎? XD)
(咦,我來鑽第三層看看,鑽過去再鑽回來)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.219.131.19 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Network/M.1588791084.A.7AE.html
※ 編輯: HuangJC (49.219.131.19 臺灣), 05/07/2020 02:53:23
※ 編輯: HuangJC (49.219.131.19 臺灣), 05/07/2020 03:00:00
※ 編輯: HuangJC (49.219.131.19 臺灣), 05/07/2020 03:17:56