※ 引述《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 来说还是可以用验证挡掉
这边就要看用途来决定要怎么做了