作者blackbox (黑盒子)
看板Network
標題Re: [問答] 請問私網/公網的問題
時間Thu May 7 09:22:52 2020
※ 引述《HuangJC (吹笛牧童)》之銘言:
: 標題: 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 就是電子交換機,將這兩個直接短路起來
:
對不起我偷懶了,因為我不想轉去提路由
的確分享器拿到的是兩個IP,一般顯示為WAN IP跟LAN IP
所以內網實際上是對LAN IP,然後在分享器內部轉為WAN IP
多WAN多LAN啥的又是另一段,整個聊起來就是超零碎超好睡的
: 私網對內那個似乎和我們其他私網電腦是同一個網段的,所以才符合 netmask 的規則
: 也才有法子填 gateway 這個欄位
: (這帶出另一個問題,現在的 NAT 都一插上就能用,不用自己設 route
: 我以前是 modem 工程師,廠商有時送來的機器不會自己產生 route,我要先設才能用
: N 年前的產品比現在陽春吧!
: 可是我都不知道要怎樣設,我不知道 gateway 是多少,怎麼查
: gateway 有一定的規則嗎?比如 netmask 所規範範圍內,所有可變 bit 都設 0?
: 可變都設 1 是廣播位址嘛;因為我常看 default gateway 是設往 0,0,0,0
: 也或者其實要看硬體設定,廠商應該提供給我但沒提供)
:
gateway規則很簡單,你怎麽寫他怎麽走,反正大不了迷路被下一級丟包
比如說你可以指定10.2.0.0/16 全丟往 10.1.1.2
這樣的話這台機器看到所有往10.2.x.x的封包就往10.1.1.2塞
如果10.1.1.2沒有開啟路由轉發功能就丟包,有開啟就照10.1.1.2的路由處理
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
:
1.1.1.1:22 <=> 2.2.2.2:xxxxx <=> 10.1.1.1:xxxxx <=> 10.1.1.11:34567
加入LAN IP這一段應該就可以理解了
: 是,我印象中讀過一句話:每個服務都要開 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 可不可以設成臨時連上手機並且馬上上網
:
實際上應該是有模糊空間,可以也不可以
手機分享網路要在手機上開啟WIFI AP功能
然後這功能會設定SSID跟加密等內容
然後再由RPI去"指定"連上這個AP
如果手機開啟WIFI AP接近,然後在RPI上手動選SSID那就可以
如果想要自動連上,雖然有可能可以,以資安角度太危險
: 我答:可
: 他又問:那這時可不可由外界控制 RPI
: 我當場就想把客戶幹到外翻了 XD
: 好好牽個固網是會死嗎?是有多貴..
: 牽個固網,你去美國都可以搖控你心愛的工廠
:
: 然後老闆就說:可是人家物聯網都可以,都是內網,一樣可以控制工廠的燈泡
: 應該可以把燈泡註冊到雲端,以後就可以控制
:
: 那時我就很想不通
: 以註冊來說是可以分辨出這顆燈泡沒錯
: 但以 IP 來說,內網 IP 沒什麼好註冊的,沒分辨力
: 如果牽固網,我就會在 IP 分享器上面設好固定式 NAT
: 大方的說當然連得進來
: 但如果是手機網路,我突然想到,要在手機上設 NAT?手機根本沒這欄位!
: 這樣知道我為什麼開始思考這些機車問題了吧..
:
: 那就去用人家的服務啊!
: 這句回答等於是:我回家吃自己,你找那家替你做去
: 老闆就是要我做
: 他就是說:team viewer 那種 server,我們自己架一個,程式自己寫
:
忽然想到...上面問P2P的應該不是你們吧
: 所以我才評估這些
: 其實不是一定要做
: 而是只要可以評估出來,很難,很貴,別人不可能做出來,那也可以不做 XD
: 但我天天最不爽聽到的就是:別家那個誰誰誰做出來了耶,他為什麼可以
:
: 靠北咧,別人可以!
:
: 所以我才得研究一下
: 最近我有新的藉口了:team viewer 可以沒錯,但試用期過後就要錢了,要代價啦
: (要錢他就不會逼我做了 XDDDD)
:
: 好啦,現在我終於搞懂了
: 只要你捨得手機丟在那邊
: 那你手機丟著的期間,我也承諾你做得到
:
: 至於未來老闆會想通,改去逼客戶一定要牽固網
: 那是未來的事了,至少現階段我不輸別人 :P
:
:
放棄雲端控制的話有個解法
換成RPI開WIFI AP,手機去連他
要雲端的話就是要先投資雲端SERVER
然後解決上面說的RPI手動連入AP的問題
再來還要考慮NAT各種撞牆,最後通常會變成靠雲端主機中介流量
:
: : : 所以跨過手機的 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)
:
Port redirect一樣有端口綁定的問題
印象中通道開啟失敗還是會繼續進行SSH登入,不會報錯退出
初始狀況:
$RPI:5900 被VNC佔用(監聽中)
$MAC:5901 閒置
在$RPI下指令ssh -R 5901:localhost:5900 myname@$MAC
$MAC:5901 要求讓SSH佔用,指向$MAC端的localhost:5900 ($RPI:5900)
此時狀況:
$RPI:5900 被VNC佔用(監聽中)
$MAC:5901 被SSH佔用(自動指向$RPI:5900)
在$MAC下指令ssh -R 5900:localhost:5901 pi@$RPi
$RPI:5900 要求讓SSH佔用,指向$MAC端的localhost:5901 ($MAC:5901)
衝突發生,$RPI:5900已被佔用,通道開啟失敗
此時狀況:
$RPI:5900 被VNC佔用(監聽中)
$MAC:5901 閒置
你想達到的功能應該是-L,然後注意解析方向不同
在$MAC下指令ssh -L 5901:localhost:5900 pi@$RPi
$MAC:5901 要求讓SSH佔用,指向$RPI端的localhost:5900 ($RPI:5900)
此時狀況:
$RPI:5900 被VNC佔用(監聽中)
$MAC:5901 被SSH佔用(自動指向$RPI:5900)
:
:
: (咦,我來鑽第三層看看,鑽過去再鑽回來)
:
:
: --
:
※ 發信站: 批踢踢實業坊(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
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.218.6.59 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Network/M.1588814573.A.B70.html
※ 編輯: blackbox (180.218.6.59 臺灣), 05/07/2020 09:33:41
※ 編輯: blackbox (180.218.6.59 臺灣), 05/07/2020 09:38:14