作者jeff7037 (阿勒顾)
看板LinuxDev
标题Re: [问题] LAN PC透过Router 到 google流程
时间Wed Sep 26 17:45:29 2018
※ 引述《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://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1537955134.A.9AE.html