看板 Network 關於我們 聯絡資訊
※ 引述《petitbleu (*大捲兒*)》之銘言: : ※ 引述《gowrite (gowrite)》之銘言: : : /* : : If the host on which the server is running is multihomed (as in this example) : : , the server can specify that it wants only to accept incoming connetions : : that arrive destined to one specific local interface. : : 這段話是不是說 , : : 如果 server 本身有多重 IP , 不論是 : : public IP 12.106.32.254 : : 或 : : private IP 192.168.42.1 : : 都可以設定為外來連線的連線介面 (local interface) : : 但是如果連 WAN 的 IP 指定成 192.168.42.1 那應該連不進來吧? : : client 發出連線的時候 , 應該是找都找不到 : : 所以 192.168.42.1 是單純指 LAN 端的其他設備可以連到 server 的選擇嗎? : : 這段話這樣理解是對的嗎?? : : */ 謝謝P大,看完你的講解,我慢慢有理解了, 我想進一步的詢問, 想確定有正確理解你的講解,並搞清楚我之前是卡在哪邊不懂,避免之後再跌跤 : 這段是說,如果你的 server 有 n 個 IP address (n >= 1) : 你可以讓 server 只接受從某個特定 IP address 進來的連線 : 跟是不是 public IP 無關 : 這是相對於一般如果你不特別指定,服務就會綁在 * 上 : 也就是走任意 IP 進來都可以 : 以上面的例子來說,你今天想在 port 5678 提供服務 : 可以指定它在 192.168.42.1:5678 或是 12.106.32.254:5678 如果是指定 IP 的情況: 指定情況一: server 指定 listening socket { 12.106.32.254:5678 , *.* } ====================================================================== 這時候 client 端, 想從 140.120.120.120:1500 發 connection request 給 12.106.32.254:5678 連線就可以建立 connected socket pair { 12.106.32.254:5678 , 140.120.120.120:1500 } 可以建立連線的原因是 因為 server 指定 12.106.32.254:5678 且 12.106.32.254 是 public IP 但是如果同樣的 client 端 從 140.120.120.120:1500 發 connection request 給 192.168.42.1:5678 會無法建立連線, 無法建立連線的主要原因 "不是" 因為 192.168.42.1:5678 是 private IP, 而是 server 指定了 listening socket 的 local IP 是 12.106.32.254:5678 這樣理解對嗎??? 另外一種指定情況: 指定情況二: server 指定 listening socket { 192.168.42.1:5678 , *.* } ===================================================================== 這時候 client 端, 從 140.120.120.120:1500 發 connection request 給 192.168.42.1:5678 會無法建立連線, 無法建立連線的原因是 就算 server 指定了 listening socket 的 local IP 是 192.168.42.1 但是因為 140.120.120.120 無法從 WAN route 到 private IP 所以無法建立連線 另外同樣的 client 端, 從 140.120.120.120:1500 發 connection request 給 12.106.32.254:5678 也一樣無法建立連線, 是因為 server 指定 192.168.42.1:5678 當成 listening socket 所以就算 server 有 12.106.32.254:5678 這個 public IP,也一樣不能用 這樣理解對嗎??? : 如果不指定則是 *:5678 : 至於這樣做之後,誰能 access 到這些服務 : 則取決於它碰不碰得到這個 IP address : 所以如果是跑在 192.168.42.1:5678 上,就只有 LAN 能用到它 : 因為外面的世界沒有 route 到你的 192.168.42.1 : 只有你的 LAN 192.168.42.0/24(或有時候是 192.168.0.0/16 不一定) : 能直接連到 192.168.42.1 最後不指定的情況: 不指定的情況:server 不指定 local IP , 因此 listening socket { *:5678 , *.* } ======================================================================== 這時候 client 端 從 140.120.120.120:1500 發 connection request 給 12.106.32.254:5678 可以建立連線 connected socket pair { 12.106.32.254:5678 , 140.120.120.120:1500 } 原因是 server 沒有指定 local IP,且 12.106.32.254 是 public IP 另外同樣的 client 端 從 140.120.120.120:1500 發 connection request 給 192.168.42.1:5678 會無法建立連線 原因是 192.168.42.1:5678 是無法從 WAN route 到的 private IP 除非 client 端是 192.168.0.0/16 網段中的其中一個 private IP network device 就可以找到 192.168.42.1:5678 並建立連線 請問這樣理解對嗎??? 學到這邊謝謝 P 大提點指導 謝謝 <(_ _)> : : 另外第二段話 : : /* : : This is a one-or-any choice for the server. The server cannot specify a list : : of multiple addresses. : : The wildcard local address is the "any" choice. the wildcard address was : : specified by setting the IP address in the socket address structure to : : INADDR_ANY before calling bind. : : 這邊這段話又說 : : 如果不是選擇指定對外 IP , 那就是選擇 any IP : : 可是如果在這個例子的話 , 一個 public IP , 一個 private IP : : 那 FTP server 會自動確認自己目前所擁有的 IP 是哪一個網段, : : 哪一個 public IP, 哪一個是 private IP , : : 然後再指定外來的 request connection 要跟哪一個 IP 連線嗎? : : */ : : 關於這一小段話 , 不太理解 , 希望有人可以解點解惑 : : 謝謝。 : 承上,跟 public or private 沒有關係 : 它是說你要嘛完全不指定 IP address, 要嘛只能指定一個 : 不能說我要指定這兩個 IP address : 底層不提供這種選擇 : FTP 或其它 server 通常不會幫你決定要在哪個 IP address 上提供服務 : 但你可以自己設定要用哪一個,或通常走預設是 any : 外面或裡面能不能連到,只是看它有沒有 route 到你的 any IP 而已 : 如果是跑在 * 上,不管從外面裡面都可以連上 : 當然以 FTP 來說還是可以用驗證擋掉 : 這邊就要看用途來決定要怎麼做了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.195.54.122 ※ 文章網址: https://www.ptt.cc/bbs/Network/M.1507944170.A.453.html
b325019: 在不考慮acl的狀況下1只看路由有沒有通 10/15 18:50
b325019: 你指定了虛擬ip作為進入的介面實體ip的介面自然是不會通 10/15 18:54
b325019: 的 10/15 18:54
b325019: 以你的問題來說最基本要考慮的東西有兩個,routing跟 10/15 19:00
b325019: access control,第一先看routing,client跟server的路由 10/15 19:05
b325019: 有沒有通?再來是看access control,server有沒有允許從該 10/15 19:05
b325019: IP進行連線?有>建立連線,沒有>拒絕連線,就這麼簡單不用 10/15 19:05
b325019: 想的太複雜 10/15 19:05