路由器埠對映後 公網正常訪問 而區域網無法通過公網IP訪問
問題:在NR289-E 路由器對8010埠進行對映(虛擬服務),對映到我自己的電腦的80埠,設定成功後,但在本機上(即192.168.1.80這臺PC機)訪問域名和外網ip時,都是無法開啟,還以為是對映不成功或是被路由器遮蔽了呢!
一直沒法解決,只好因vpn功能,讓別人訪問。
不管它了,字翻·牆的時候無意間試了試,發現能訪問,於是經過確認才知道外網可以訪問,內網不能訪問。
在王龍找到一個叫 a龍的QQ網友,給了詳細的解釋。
本來就是這樣,不是你的問題。所有類似你這樣的做法,都是外網可以訪問,內網不能訪問。
簡單說明一下:
假設你的外網IP為 202.1.1.1 內網有2臺192.168.1.10 192.168.1.11
做了IP地址對映 202.1.1.1:80->192.168.1.10:80
1。公網PC1訪問你的站點
PC1:X->202.1.1.1:80 (1個session 包含:[source ip:source port , desti p:dest port]4個引數 )
地址轉換後: pc1:x->192.168.1.0:80
192.168.1.0 到資料後,發資料給源站點
192.168.10:80->pc1:x 經過地址轉換 202.1.1.1:80->pc1:x
所以外網可以訪問你對映的站點.
2。如果在內網訪問
192.168.1.11:x->202.1.1.1:80 地址轉換後 192.168.1.11:x->192.168.1.10:80 到達站點
站點返回資料:
192.168.1.10:80->192.168.1.11:x
這裡是關鍵:192.168.1.10檢查後發現目標ip為192.168.1.11為同一網段,
所以直接把資料發給192.168.1.11,不再通過202.1.1.1轉發。
但是,192.168.1.11是向202.1.1.1發起連線,並沒有和192.168.1.10連線,所以將丟棄192.168.1.10發回的資料。
也就是說 192.168.1.11訪問202.1.1.1永遠也連線不上。
===========
前段時間在公司的路由器上配置把公網IP對映到區域網中的一臺電腦,對映為web伺服器,在公司外面可以使用公網IP正常訪問web服務,但公司內部使用公網IP確無法訪問web服務。最開始以為是路由器配置問題,多次排查配置,沒有發現問題;然後想到會不會是本機路由表的問題,嘗試設定一些靜態路由,問題依然沒有解決;最後終於在網上找到類似的問題,原因是路由器硬體的問題,路由器不支援資料迴流造成。
關於“資料迴流”介紹,在網上看到一篇很好的文章以下轉帖。原文地址:http://www.5mwl.com/thread-17384-1-1.html
迴流是什麼?最簡單的一個例項:
網咖內網一臺主機192.168.0.2建了個WEB服務站點埠80,然後在閘道器(其內網地址是192.168.0.1、公網地址為218.4.218.4)上對映80埠到192.168.0.2的80埠,這樣INTERNET上就能以http://218.4.218.4:80的地址訪問到192.168.0.2的WEB站點了。然後出現了個問題,在同網咖的另一臺電腦192.168.0.3上,鍵入http://218.4.218.4:80,卻無法訪問該WEB站點。就這個現象,我們就稱之為“不支援迴流”了,這裡指的是閘道器上的對映方式不支援迴流,所以說“迴流”一說,是針對對映方式而言的。
現在我們來看常規情況下,是為什麼會發生這種情況的
過程如下:
192.168.0.3要請求訪問218.4.218.4的80埠,根據它掌握的路由表,它本身是不知道電腦218.4.218.4在哪裡的,所以把將這個資料包傳送給它的預設路由,即電腦192.168.0.1。注意:這個資料包的源地址是192.168.0.3、源埠假設是1025、目標地址是218.4.218.4、目標埠是80、SYN標誌位為1、這是建立TCP連線的第一次握手。如果“把目標地址為218.4.218.4的資料包發給了192.168.0.1”你聽起來覺得有點矛盾,那麼我解釋一下:其實這個資料包的目標IP地址是218.4.218.4,目標MAC地址卻是192.168.0.1的電腦192.168.0.1接收到了這份資料包(因為它的身份是路由器,所以允許接收和轉發目標地址不是自已、MAC地址卻是自已介面
MAC地址的資料包),它分析這個資料包的目標地址,發現這個資料包是需要中轉到電腦192.168.0.2:80去的,於是它把這個資料包轉發給了電腦 192.168.0.2:80。注意:這個資料包的源地址是192.168.0.3、源埠是1025、目標地址為192.168.0.2、目標埠為80、SYN標誌位為1。我們要注意這個資料包在轉發後發生了變化了,即目標地址變了。電腦192.168.0.2順利接到了資料包,它馬上作出迴應,傳送一個數據包給電腦192.168.0.3。注意:這個資料包的源地址是192.168.0.2、源埠是80、目標地址192.168.0.3、目標埠為1025、SYN標誌位為1、ACK標誌位為1、這是建立TCP連線的第二次握手。電腦192.168.0.3順利接到了資料包,然而它發現這是一個來自192.168.0.2:80的迴應,因為ACK標誌位值為1擺在那裡呢。它想不起來什麼時候給192.168.0.2:80這個目標物件傳送過SYN請求,它認為這是一個錯誤的資料包,於是決定把這個資料包丟棄。然後繼續等待
218.4.218.4:80的迴應,一直等到超時。而電腦192.168.0.2這邊,它等192.168.0.3:1025的第三次握手請求包傳送過來,以便建立一個TCP的連線。同樣也沒有結果,一直等到超時。三次握手在規定的時間內沒有完成,訪問宣佈流產了。
那麼怎麼樣才能正常訪問呢?也就是說怎麼樣形成“迴流”呢?
玄機在於電腦192.168.0.1把第一次握手的那個資料包在轉發時,不僅要修改目標地址和埠,也要修改源地址和埠,我們來看一下情況會有什麼不同:電腦192.168.0.1接收到了這份資料包(因為它的身份是路由器,所以允許接收和轉發目標IP地址不是自已、MAC地址卻是自已介面MAC地址的資料包),它分析這個資料包的目標地址,發現這個資料包是需要中轉到電腦192.168.0.2:80去的,於是它把這個資料包通過自已的5201埠轉發給了電腦192.168.0.2:80,並在記憶體裡面記錄下來了,192.168.0.1:5201已定位給了192.168.0.3:1025。注意:這個資料包的源地址是192.168.0.1、源埠是5201、目標地址為192.168.0.2、目標埠為80、SYN標誌位為1。電腦192.168.0.2順利接到了資料包,它馬上作出迴應,傳送一個數據包給電腦192.168.0.1。注意:這個資料包的源地址是192.168.0.2、源埠是80、目標地址192.168.0.1、目標埠為5201、SYN標誌位為1、ACK標誌位為1、這是建立TCP連線的第二次握手。電腦192.168.0.1順利接到了資料包,檢查記憶體記錄發現,這個資料包真正的收貨人是192.168.0.3:1025,於是它把這個資料包轉發給192.168.0.3。注意:這個資料包的的源地址是218.4.218.4、源埠為80、目標地址為192.168.0.3、目標埠為1025。我們要注意這個資料包在轉發後發生變化了,即源地址變了。這很重要!為什麼會變,因為在它心目當中,192.168.0.2:80早已定位給了218.4.218.4:80,對映規則使然。電腦192.168.0.3順利接到了資料包,發現期待已久的218.4.218.4:80終於有了迴音,它興奮不已的發出第三次的握手請求。注意:這個資料包的源地址是192.168.0.3、源埠是1025、目標地址是218.4.218.4、目標埠是80、ACK標誌位為1、這是建立TCP連線的第三次握手。跟前面的資料包一樣,這個資料包會從192.168.0.1那裡中轉給192.168.0.2以後192.168.0.2:80和192.168.0.3:1025之間來往通訊的資料包,全部由192.168.0.1負責中轉,“迴流”構成了
|
迴流是什麼?最簡單的一個例項:
網咖內網一臺主機192.168.0.2建了個WEB服務站點埠80,然後在閘道器(其內網地址是192.168.0.1、公網地址為218.4.218.4)上對映80埠到192.168.0.2的80埠,這樣INTERNET上就能以http://218.4.218.4:80的地址訪問到192.168.0.2的WEB站點了。
然後出現了個問題,在同網咖的另一臺電腦192.168.0.3上,鍵入http://218.4.218.4:80,卻無法訪問該WEB站點。
就這個現象,我們就稱之為“不支援迴流”了,這裡指的是閘道器上的對映方式不支援迴流,所以說“迴流”一說,是針對對映方式而言的。
現在我們來看常規情況下,是為什麼會發生這種情況的
我以前對iptables特別感興趣的時候,曾對這個問題非常迷惑不解,直到去年為了考試,學習網路基礎的時候才搞明白這個事情
過程如下:
192.168.0.3要請求訪問218.4.218.4的80埠,根據它掌握的路由表,它本身是不知道電腦218.4.218.4在哪裡的,所以把將這個資料包傳送給它的預設路由,即電腦192.168.0.1。
注意:這個資料包的源地址是192.168.0.3、源埠假設是1025、目標地址是218.4.218.4、目標埠是80、SYN標誌位為1、這是建立TCP連線的第一次握手。
如果“把目標地址為218.4.218.4的資料包發給了192.168.0.1”你聽起來覺得有點矛盾,那麼我解釋一下:其實這個資料包的目標IP地址是218.4.218.4,目標MAC地址卻是192.168.0.1的@蒼星歸來
電腦192.168.0.1接收到了這份資料包(因為它的身份是路由器,所以允許接收和轉發目標地址不是自已、MAC地址卻是自已介面 MAC地址的資料包),它分析這個資料包的目標地址,發現這個資料包是需要中轉到電腦192.168.0.2:80去的,於是它把這個資料包轉發給了電腦 192.168.0.2:80。
注意:這個資料包的源地址是192.168.0.3、源埠是1025、目標地址為192.168.0.2、目標埠為80、SYN標誌位為1。我們要注意這個資料包在轉發後發生了變化了,即目標地址變了。
電腦192.168.0.2順利接到了資料包,它馬上作出迴應,傳送一個數據包給電腦192.168.0.3。
注意:這個資料包的源地址是192.168.0.2、源埠是80、目標地址192.168.0.3、目標埠為1025、SYN標誌位為1、ACK標誌位為1、這是建立TCP連線的第二次握手。
電腦192.168.0.3順利接到了資料包,然而它發現這是一個來自192.168.0.2:80的迴應,因為ACK標誌位值為1擺在那裡呢。它想不起來什麼時候給192.168.0.2:80這個目標物件傳送過SYN請求,它認為這是一個錯誤的資料包,於是決定把這個資料包丟棄。然後繼續等待 218.4.218.4:80的迴應,一直等到超時。
而電腦192.168.0.2這邊,它等192.168.0.3:1025的第三次握手請求包傳送過來,以便建立一個TCP的連線。同樣也沒有結果,一直等到超時。三次握手在規定的時間內沒有完成,訪問宣佈流產了。
那麼怎麼樣才能正常訪問呢?也就是說怎麼樣形成“迴流”呢?
玄機在於電腦192.168.0.1把第一次握手的那個資料包在轉發時,不僅要修改目標地址和埠,也要修改源地址和埠,我們來看一下情況會有什麼不同:
電腦192.168.0.1接收到了這份資料包(因為它的身份是路由器,所以允許接收和轉發目標IP地址不是自已、MAC地址卻是自已介面MAC地址的資料包),它分析這個資料包的目標地址,發現這個資料包是需要中轉到電腦192.168.0.2:80去的,於是它把這個資料包通過自已的5201埠轉發給了電腦192.168.0.2:80,並在記憶體裡面記錄下來了,192.168.0.1:5201已定位給了192.168.0.3:1025。
注意:這個資料包的源地址是192.168.0.1、源埠是5201、目標地址為192.168.0.2、目標埠為80、SYN標誌位為1。
電腦192.168.0.2順利接到了資料包,它馬上作出迴應,傳送一個數據包給電腦192.168.0.1。
注意:這個資料包的源地址是192.168.0.2、源埠是80、目標地址192.168.0.1、目標埠為5201、SYN標誌位為1、ACK標誌位為1、這是建立TCP連線的第二次握手。
電腦192.168.0.1順利接到了資料包,檢查記憶體記錄發現,這個資料包真正的收貨人是192.168.0.3:1025,於是它把這個資料包轉發給192.168.0.3。
注意:這個資料包的的源地址是218.4.218.4、源埠為80、目標地址為192.168.0.3、目標埠為1025。我們要注意這個資料包在轉發後發生變化了,即源地址變了。這很重要!為什麼會變,因為在它心目當中,192.168.0.2:80早已定位給了218.4.218.4:80,對映規則使然。
電腦192.168.0.3順利接到了資料包,發現期待已久的218.4.218.4:80終於有了迴音,它興奮不已的發出第三次的握手請求。
注意:這個資料包的源地址是192.168.0.3、源埠是1025、目標地址是218.4.218.4、目標埠是80、ACK標誌位為1、這是建立TCP連線的第三次握手。
跟前面的資料包一樣,這個資料包會從192.168.0.1那裡中轉給192.168.0.2
以後192.168.0.2:80和192.168.0.3:1025之間來往通訊的資料包,全部由192.168.0.1負責中轉,“迴流”構成了
相關推薦
路由器埠對映後 公網正常訪問 而區域網無法通過公網IP訪問
問題:在NR289-E 路由器對8010埠進行對映(虛擬服務),對映到我自己的電腦的80埠,設定成功後,但在本機上(即192.168.1.80這臺PC機)訪問域名和外網ip時,都是無法開啟,還以為是對映不成功或是被路由器遮蔽了呢! 一直沒法解決,只好因vpn功能,
Tomcat在區域網中localhost可以訪問,但是無法通過本地IP訪問
轉自:https://blog.csdn.net/ybhjx/article/details/73657015 環境:Tomcat6,Windows Server2008 R2, Tomcat使用預設埠8080。 在BO伺服器上使用Tomcat6作為WEB伺服器,在伺服器本地使用http:/
Tomcat在區域網中localhost可以訪問,但是無法通過本地ip訪問,127.0.0.1也無法訪問問題的解決方法
環境:Tomcat6,Windows Server2008 R2, Tomcat使用預設埠8080。 在BO伺服器上使用Tomcat6作為WEB伺服器,在伺服器本地使用http://localhost:8080/BOE/BI可以正常訪問BOE platform平臺的登入
SSM框架整合後Tomcat正常啟動,控制檯未報錯,訪問所有頁面均報404異常,總結
最近整合了ssm框架,今天想完善一下,遇到Tomcat正常啟動,控制檯也正常並未報錯,但訪問均報404異常 404異常,很常見,大多情況是路徑錯誤、web.xml檔案對映路徑寫錯、伺服器設定、servlet的jar包未導進去或者沒有隨專案釋出等等。 如果是路徑錯誤,仔細檢查即可解決問
阿里雲輕量級伺服器搭建伺服器後外網無法通過公網ip訪問的解決辦法
之前用的是阿里雲伺服器ECS,這個如果外網無法訪問,可通過修改安全組 大概在控制檯>雲伺服器ECS>安全組>配置規則,當然今天要解決的不是雲服務ECS的外網訪問,而是阿里雲另外一個型別的伺服器配置,叫輕量級伺服器,是專門為學生制定的雲伺服器,如果是學生購買會很便宜(ps:阿里雲
路由器埠對映生效測試方案
準備兩個路由分別標記為A/B 將A的閘道器設定為192.168.132.1, B為測試埠對映並刷入測試韌體的路由,為B計算機搭建的web伺服器, 然後在B的路由後臺新增埠對映規則,接B路由的計算機
阿裏雲服務器,無法通過公網ip訪問實例
cat nbsp 檢測 tom esc 防火墻 控制臺 什麽 是否 昨天得知阿裏雲esc又打折了,趕緊入手了一波,因為以前有部署過的經驗,所以很快就部署上了項目,就在欣喜的訪問時,卻無訪問。 我按照下面步驟一步一步的檢測, 1、服務器上是否成功部署jdk和tomcat 2、
Apache 伺服器執行一段時間後本地無法通過外網訪問的情況問題解決描述(轉)
轉自:http://www.52codes.net/article/338.html 最近從虛擬主機轉到了VPS之後自由了許多,但是也多了不少問題。在弄好了MySQL之後Apache又出了問題,具體表現是網站每過一定時間就無法開啟,靜態頁面也無法訪問。重啟Apache後
(辦公)mysql安裝完,只能通過localhost訪問,而不能通過本機ip訪問.(轉)
pri tps color oca sql安裝 http tails pre 辦公 GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘123456‘; 這裏面*.*代表是所有庫.所有表,root是
【BUG解決】IDLE可以編譯,而CMD無法通過
是括號換行的問題。 類似: print( 1 )本段程式碼,在IDLE中,可以執行。 而儲存為test.py後,在CMD中執行此語句就會報錯。 python test.py 實際上- =以上程式碼並不會報錯。 暫時我無法復現問題,因為出問題是個關係很複雜的檔案。
Tomcat的主頁可以通過IP訪問,但是無法通過localhost或者127.0.0.1訪問
早上在公司電腦裝了tomcat,去發現只能通過本機的內網IP訪問,無法通過localhost訪問,查看了以下host檔案,發現並沒有什麼問題呀。 後來想到,公司電腦配置的是內網,通過瀏覽器訪問外網的時候需要走代理
Exchange2010 升級到 2016,2010用戶無法通過2016代理訪問郵箱,導致連接失敗。
-o anywhere out 功能 自動 hang 導致 chang chan 環境說明: 1臺AD和證書,4臺2010 前後端(NLB和DAG),2臺2016全角色。問題:當郵件流切換到2016後 原本在2010上的郵箱無法通過OUTLOOK連接,但是可以自動發現並配置
Vue-專案通過本地ip訪問
Vue專案通過本地ip訪問 1.修改package.json檔案: 將:“dev”: “webpack-dev-server --inline --progress --config build/webpack.dev.conf.js”, 替換成: “dev”: “webpack-dev
MYSQL資料庫不能通過固定ip訪問
環境 MySQL資料庫版本:5.7.20 Navicat版本:Navicat Premium 12 問題 描述如圖所示。 解決方法 1、選擇使用者。 2、選擇[email
ubuntu下Redis無法通過外網訪問
在安裝完成Redis後,測試本地是否可以訪問,如果可以訪問,按照下列步驟: 修改redis的配置檔案,將所有bind資訊全部遮蔽。 # bind 192.168.1.100 10.0.0.1
Linux使用Iptables做埠對映遠端訪問無公網IP的SSH
主機1: 內網: 192.168.0.101 公網:202.102.1.3 //這個是瞎編的,知道是個公網IP就行了 主機2: 內網:192.168.0.102 目標:實現可以用公網的 10022埠訪問主機2的ssh服務。 #!/bi
如何通過外網訪問區域網的網站【路由器設定埠對映】
轉載請註明出處。 原文作者:宋發元 原文連結:http://blog.csdn.net/u011019141/article/details/53709668 一直以來,在開發中我都使用花生殼對內網的地址做對映,以此達到外網訪問內網的網站資源。但是這之間經過花生殼轉發這一
Linux 下 Docker 埠對映到宿主機後 外部無法訪問對應宿主機埠
問題描述 原因 解決問題 問題描述 前段時間使用 Docker 裝了 GitLab,SSH 配置都已經配置完畢,容器埠和宿主機埠也對映完畢。Firewall 和 SELinux 也已經關閉。 1、在宿主機上訪問對應的埠使用
docker設定了埠對映,不能訪問
#docker ps 檢視, 所有埠都 做了對映, CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
新版tplink路由器虛擬伺服器(埠對映)設定教程
一、虛擬伺服器作用 我覺得大家應該先了解下面的這個問題。 那就是當電腦、手機都是通過路由器連線Internet上網時;Internet上的使用者,是不能直接訪問我們電腦、手機中的資料的。 虛擬伺服器的作