内网穿透(端口映射)实践,让你的小伙伴访问你的网站
小明苦學web技術,終于在自己主機上搭了服務器,做了一個網站。
此時,小明想要向他的朋友們炫耀一下,于是把本機ip和端口號發給了小伙伴們,
但小伙伴卻反饋網址打不開。。。
小明心想怎么可能?于是打開命令行輸入ipconfig確認了自己的ip地址,接著確認了服務器暴露的端口。發現沒問題啊,也把防火墻關了,小伙伴怎么訪問不了呢?
小明百思不得其解,或許,屏幕前的你也有這樣的困惑,接下來,我來講講如何讓你的小伙伴訪問你的網站
?首先要解決一個問題,就得清楚問題原因所在!!!
公網ip和私網ip
小伙伴訪問不了小明的網站,最主要的問題就是ip是錯的!
什么?ip不是在命令行查出來了嗎?難道你的主機會騙你?
hh,主機沒騙你,但它只是顯示你的私網ip
公網ip:簡單理解為在互聯網上能夠直接訪問的ip,例如百度的ip
私網ip:不能在互聯網上直接訪問的ip
看到這,你可能會有疑問,既然我的主機是私網ip,那不就不能訪問互聯網?那我平時上網是怎么回事?
私網ip:192.168.*、10.*等,這些ip是無法被直接訪問的
私網主機訪問公網主機的過程其實是ip轉換的過程,通俗講就是你的ip在請求的時候會轉換成公網ip,然后再進行通信
轉換ip的過程稱為nat技術,而nat的出現就是為了節省ip,還能保證一定的安全
例如你的ip是192.168.110.65,這是一個私網ip
你的上網過程就是下面這張圖
首先你要訪問百度,然后在主機輸入www.baidu.com
接著dns會解析網址,得到百度的ip,例如是1.2.3.4
接著你的請求發到nat-router上,其實就是發到你家的路由器上,這是過程1
接著nat-router解包發現目標ip是1.2.3.4,不是本網絡的ip,他就會轉換源ip
此時源ip變成路由的ip,例如134.243.123.42,且端口號也會改變
(私網主機一個ip和一個port對應nat-router上的ip和某個port,nat-router會記錄這個映射,當然不同的nat技術是有差別的)
此時,發往百度的請求變成上圖的過程2
通過網絡后,到達百度的服務器,百度處理后返回包,這就是過程3
再次通過網絡后,回到nat-router,nat-router查看映射,再次將包的ip和端口號轉換(查看映射)
這就是過程4,然后你的主機收到回復,且你認為就是百度發給你的。
可以發現,想要收到外界的回復,需要在router上有映射關系,否則即使router收到response,它也不知道發給誰。
這就是你的小伙伴訪問不了你網站的原因
怎么解決呢?
?既然要通過router,那我們就在router上面添加映射
步驟
1. windows+R,輸入cmd打開命令行,輸入ipconfig查看你的ip
2. 在瀏覽器網址格輸入默認網關
3. 找到nat服務(端口映射、虛擬服務器等等,不同router叫法可能不一樣)
4. 一般會有外部端口、內部端口、外部ip、內部ip,內部ip
內部端口寫你服務器的端口,外部端口隨便寫一個例如80,添加映射之后,你的小伙伴應該就能訪問了
不能訪問是怎么回事??
1. 你服務器開了沒有?用手機在局域網內登入你的網站看看能不能進去
2. 主機防火墻關了沒有?或者設了白名單沒有?
3. 檢查路由的防火墻
4. 你的主機沒有公網ip
第四點出現的概率比較大,怎么查看呢?
打開百度,輸入‘ip地址’,會彈出來你的公網ip,比較一下你的默認網關的ip,相同就說明你有公網ip,否則沒有。(為什么這么比較,你看看上面那張圖就知道)
?等等?什么?這時候又彈出來公網ip了?不是沒有嗎?
原因如下圖:
看的出來,你的nat-router外面還有nat-router,也就是你的第一層外網其實也是內網
即使你設了端口映射,但外網還是訪問不了你的網站,不過在上圖中最大圈圈里面的主機(比如你的隔壁宿舍,如果運營商相同的話)都可以訪問你的網站,至于原因,相信你在看了文章后已經知道了。
?此時沒有什么好的辦法,除非你有辦法一層層在nat-router添加映射
其他方法
1. 干脆點,買個云服務器
2. 下載個內網穿透的軟件
搞完以后,你就可以暴露自己的網站了
可以跟你朋友說:
????????
總結
以上是生活随笔為你收集整理的内网穿透(端口映射)实践,让你的小伙伴访问你的网站的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS从初级到精通就业 Objectiv
- 下一篇: Python中的迭代