※ 引述《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 的選擇嗎?
: 這段話這樣理解是對的嗎??
: */
這段是說,如果你的 server 有 n 個 IP address (n >= 1)
你可以讓 server 只接受從某個特定 IP address 進來的連線
跟是不是 public IP 無關
這是相對於一般如果你不特別指定,服務就會綁在 * 上
也就是走任意 IP 進來都可以
以上面的例子來說,你今天想在 port 5678 提供服務
可以指定它在 192.168.42.1:5678 或是 12.106.32.254:5678
如果不指定則是 *: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
: 另外第二段話
: /*
: 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 來說還是可以用驗證擋掉
這邊就要看用途來決定要怎麼做了