Re: [問題] LAN PC透過Router 到 google流程

看板LinuxDev作者 (阿勒顧)時間5年前 (2018/09/26 17:45), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《q1472587 (風)》之銘言: : 大家好,最近被人問了一個問題,覺得有點深奧不知道要 : 去哪裡獲取這方面的知識,想請各位大大解惑。 : 假設現在 PC1 -- : Router(Gateway) -- 外網許多Gateway -- Google : PC2 -- : PC1的電腦第一次想要 ping google.com , : 1. 問PC1的封包怎麼到google的所有流程 簡單視圖。你畫的不錯~ : 2. PC1 一開始要決定封包的 SA DA(Destination MAC)要怎麼決定,PC1網路卡 : driver(思考一般通用網路卡的行為)是不是會先過濾一下封包是不是要往哪裡丟 : ? PC1網卡driver怎麼判斷, 丟出去的封包 DA怎麼決定? arp network。用網卡和ip(內網ip)達到網路封包傳輸。所以你的router(gateway)下 有幾台電腦(裝置);靠MAC address和IP可以知道同個子網路內的裝置。 : 3. 假設封包跑到了Gateway , Gateway 怎麼知道要步要Routing? 如果是看routing : table決定,那麼 Gateway Routing Table怎麼查表的? Router知道要傳送哪些封包;這我不是很了解,應為router根據封包的內容要查找的網域透 過DNS查找目的地位置(IP)。Router(gateway)之後就是大海(internet了)。 (有請專業的回答了~) : 4. 最後從Gateway出去時會經過NAT轉換source IP,在經過很多層的Gateway到達 : Google, 那傳回來的封包 Gateway 怎麼知道要 DNAT 到哪一個 PCx?會有port : 紀錄嗎還是什麼方法? NAT表怎麼查表? NAT有對應IP,router有提供routering的功能也有NAT的功能。而Linux的iptable也有NAT功 能。可以用IP對應,可以指定來源和目的地,用port和位置等作為條件。 (complex & complicate),可能要用excel寫個條件後面寫出對應的iptable描述。 這裡野人獻曝。 EX: [root@localhost /]#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 218.29.30.31 EX: [root@localhost /]#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE : 以上問題我只會回答上層大概,關於底層和如何查表都沒概念呢? : 例如: : 一開始先檢查PC1 MAC cache有沒有那個MAC,找對應的IP。如果沒有就先發 : 一個ARP 封包,然後沒人回應就往 Gateway發,但是不知道 DA MAC會是誰(可能是 : 先填Gateway?),所以 目的IP 可能先寫8.8.8.8(假設已經知道google IP), : 然後Gateway,看到目標查表發現要routing,幫忙做MASQARE(類似SNAT改源地址), : 然後就送出去了。 : 希望有大大能夠提供很詳細的解答呢(尤其著重於網卡行為 查表route NAT等), : 謝謝各位。 -- 世上最難的事是把自己的想法灌到別人的腦袋 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.169.229 ※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1537955134.A.9AE.html
文章代碼(AID): #1RgrK-ck (LinuxDev)
文章代碼(AID): #1RgrK-ck (LinuxDev)