我的 ISP 出了问题。他们说他们没有封锁任何端口,而且我有公网 IP,但我认为这两个说法都是错误的。在我再次与他们交谈之前(当我对这些术语的理解与他们不同时,这确实很困难),我想澄清一些事情。
看起来我的电脑位于 NAT 后面(有可能同时拥有公共 IP 和位于 NAT 后面吗?)。当我通过某个外部服务器检查我的 IP 并将该 IP 输入浏览器时,我得到了某个路由器(不是我的)的主页。这难道不是我的 IP 不是公共 IP 的证据吗?
此外,我在通过某些端口建立连接时遇到问题。例如,当我尝试通过 SSH 通过某些高端口(> 1023)连接时,它不起作用。是否有可能是某些范围的传出我的电脑端口被阻止了?还是只是因为我的 ssh 客户端 (PuTTY) 无法接收传入由于阻塞而导致的数据包传入端口?
为了避免一些问题:这不是我的路由器的问题,我尝试直接连接我的电脑,但也没有用,而使用带 USB 网络共享的手机通过 3G 连接时,它可以工作。谢谢!
答案1
我对这些术语的理解与他们不同
好的,让我们尝试澄清相关术语。
我想澄清一些事情... 是否有可能同时拥有公共 IP 和位于 NAT 之后?
公共 IP
每个拥有互联网连接的人都有一个“公共 IP”,即公众可见的 IP 地址。
这个公共 IP 地址有时被称为外部 IP 地址。它通常由您的 ISP 分配给您的路由器。
它可以是动态的或静态的。一些 ISP 对静态地址收取更高的费用。动态地址是从池中分配的,在这种情况下,您的公共 IP 地址可能会不时更改
NAT
传统 IP 地址是 IP 版本 4 地址。这些地址即将用完。为了避免地址耗尽,一些范围被保留用于私人用途(例如 192.168.0.0),并且发明了网络地址转换 (NAT),以便路由器可以编辑(转换)IP 数据包中的地址并将私有 IP 地址更改为公共 IP 地址。这样,拥有数十或数千台计算机的企业或家庭就可以共享一个公共 IP 地址。
是的,大多数人都有公共 IP 地址并且位于 NAT 之后。
是不是因为我的 ssh 客户端(PuTTY)由于传入端口被阻止而无法接收传入数据包?
出站连接
TCP 连接由客户端向服务器发送数据包(作为“三次握手”的一部分)启动。路由器看到此数据包,编辑发件人地址,并在内部连接列表中记录内部源 IP 地址、源端口和转换后的源端口(它必须处理两台使用相同源端口的 PC,它们的源 IP 地址转换为相同的公共 IP 地址)。由于它会跟踪连接,因此当路由器收到回复数据包时,它可以确定将(编辑后的)数据包转发到哪台内部 PC。
所以,不应该阻止对出站 SSH 连接的回复。
从外部发起的连接是另一回事:
入站连接
当路由器收到在特定端口(例如 80)上创建连接的入站请求时 - 如果它本身不在该端口上提供服务(例如路由器管理界面)它将不知道该做什么并将拒绝连接。
转发端口
如果您希望朋友、陌生人(和犯罪分子)访问您的 PC,您可以告诉路由器,当它在端口 n 上收到连接请求时,将该请求转发到您的其中一台计算机。
答案2
当您直接连接 PC 而不通过中间的路由器时,您从 ISP 获得了什么 IP 地址?
如果它位于“私有”IP 范围之一 - 10.XXX、192.168.XX 或 172.[16-32].XX(可能是 10.XXX) - 那么您的 ISP 会为您提供某种 NAT 服务。
如果您获得了中间没有路由器的任何其他地址,那么您很可能不在 ISP NAT 后面。
如果您获得的是“正常”地址,中间没有路由器,则表示您从 ISP 获得的是可公开访问的地址。连接失败可能是由于您这边的配置错误或 ISP 阻止了端口。
通常,ISP 阻止的唯一传出端口是 DHCP、Windows 文件共享和 SMTP 端口。
阻止传入端口是另一回事。除非您升级到企业级帐户,否则某些严苛的 ISP 确实可能会阻止大多数端口上的传入连接。但是,您的 ISP 不太可能对您撒谎 - 尽管您上次联系他们时可能联系到了未经培训的客户服务代表。对您的 ISP 名称进行一些 Google 搜索并查看其他客户对阻止端口的体验可能会有所帮助。
您无法“连接到” SSH 客户端(例如 PuTTY),您的 SSH 客户端需要连接到 SSH服务器。如果您没有运行 SSH 服务器,那么这可能是您尝试执行的操作无法正常工作的原因。如果这是 Windows 系统,并且您想快速设置测试 SSH 服务器,请查看移动版. 确保您还通过控制面板在 Windows 防火墙上打开了端口 22 TCP。
答案3
看到这个回答它解释了您的所有疑虑。当您指向您的公共 IP 地址并获取路由器配置页面时,那就是您的路由器...当您设置端口转发时,您将获得正确的 http 服务器。