怎么讓內網IP映射成外網IP?
如果單純回答如何“將內網IP映射成外網IP”,那是非常簡單。
比方說,家里有一個IP = 192.168.1.1的電腦,你想將一個文件共享到互聯網上供別人下載,你的家庭路由器的外網接口IP = 1.1.1.1,你這樣這么做就可以了。
打開家庭路由器網頁管理界面,輸入以下配置:
其中,445端口為文件共享服務端口號。
當互聯網上用戶訪問你的共享文件時,他們獲知到達共享文件的傳輸信息是1.1.1.1:445(IP地址與端口號的縮寫),一旦他們的報文到達路由器,路由器查詢這個表,就會將IP報文中的1.1.1.1替換成192.168.1.1,然后將修改后的IP報文發送給192.168.1.1的電腦,并最終由445端口予以處理,這樣就實現了互聯網用戶訪問內網的電腦。
授人以魚不如授人以漁
以上只是回答如何要做(What)?,但是并沒有回答為什么要那么做(Why)?
如果路由器上沒有這個映射條目,互聯網上的電腦就無法主動訪問192.168.1.1:445的服務了。一旦路由器從外網接口收到1.1.1.1:445的報文,查表之后發現沒有找到任何映射,路由器本身也不提供445文件共享服務,那就丟了。
不通過手工靜態的映射,你的電腦192.168.1.1能自動在路由器上添加這個映射嗎?
很難!
你的電腦處于被動(Passive)工作狀態,被動等待互聯網上的用戶來訪問自己,自己卻不會主動發報文去聯系互聯網用戶,你的電腦不會在445端口上主動發任何報文。連報文都不發,怎么觸發路由器添加映射條目呢?世上不會有場外的狀元!
即使服務器變被動為主動發報文,發給誰呢?互聯網那么大,用戶在哪里呢?不知道!
即使你的電腦主動向外網發報文,無法保證路由器使用什么端口來映射你的445端口,可能這次是1234,下次可能是2345,下下次可能是3456,但是無論怎么分配,就是不給你445端口。
而互聯網上的用戶卻默認使用1.1.1.1:445來訪問你,很顯然會查表失敗并丟棄,從而造成通信的障礙。