V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
BinRelay
V2EX  ›  程序员

Windows 下,访问 127.0.0.1 到底过不过 Windows 防火墙?

  •  
  •   BinRelay · 2019-07-31 23:49:42 +08:00 · 4240 次点击
    这是一个创建于 1971 天前的主题,其中的信息可能已经有所发展或是发生改变。

    事情是这样的,某网络安全主管部门下发了一个统计软件,表面上是个单机软件,
    实际上是一个一键部署基于 tomcat 的 web 应用。然后登陆 127.0.0.1/awesome.html 进行统计。

    问题在于,有一个说明文档,要求用户将 windows 防火墙例外 java.exe 。
    但是根据我的使用情况,我发现仅仅是访问 127.0.0.1 并不需要例外,似乎数据根本不过防火墙。
    我甚至在 windows 防火墙出入方向都 deny 了相应端口,仍然可以访问。
    我不禁疑问,到底是我错了?还是某网络安全主管部门的外包公司弄错了?

    14 条回复    2019-08-01 10:06:10 +08:00
    ipwx
        1
    ipwx  
       2019-07-31 23:51:10 +08:00 via Android
    一般而言,本机地址和其他地址用的不同的防火墙规则集
    BinRelay
        2
    BinRelay  
    OP
       2019-07-31 23:55:14 +08:00
    @ipwx win 里也就公用网络、专用网络、域三种防火墙配置文件吧
    那么访问 127.0.0.1 会匹配哪一个?还是都不匹配呢?
    gam2046
        3
    gam2046  
       2019-08-01 05:08:11 +08:00
    https://stackoverflow.com/questions/21230691/why-are-localhost-connections-blocked-by-the-firewall

    这里有一个模棱两可的回答,似乎是 Bind 在 localhost 上以后,并不会触发 Windows 的防火墙。

    也就是说虽然你的软件是通过 localhost 访问的,但是是否触发防火墙取决于软件 bind socket 所使用的地址,如果是 bind 0.0.0.0 那么必然会有防火墙规则
    ShangAliyun
        4
    ShangAliyun  
       2019-08-01 08:49:50 +08:00
    可能仅仅是习惯性的对局域网开放
    danmu17
        5
    danmu17  
       2019-08-01 09:28:00 +08:00
    哈哈,好奇能炸出来多少不懂装懂的。
    LokiSharp
        6
    LokiSharp  
       2019-08-01 09:30:27 +08:00
    只是默认规则没有针对环回地址而已啊,你不能保证用户不自定义防火墙规则
    BinRelay
        7
    BinRelay  
    OP
       2019-08-01 09:31:02 +08:00
    @gam2046
    bind 127.0.0.1 和 0.0.0.0 决定了首次运行程序时是否弹出 windows 防火墙窗口。
    不过即使 bind 了 0.0.0.0,会弹出窗口,由于我访问的 127.0.0.1,那么无论我在弹出的窗口
    放行还是阻断,都没有任何区别。
    这个 stackoverflow 的题主也一样这样描述“ If I click 'Deny' when that dialogue appears, my program still accepts local incoming connections, so that popup is completely useless for preventing any of the risks you just mentioned. ”

    那么我初步得出结论:
    1、bind 的地址决定是否首次运行程序时是否弹出防火墙窗口。
    2、无论防火墙怎么配置,本机访问 localhost 均不会匹配 windows 防火墙策略。
    3、外包公司因为程序默认 bind 了 0.0.0.0,弹出了防火墙窗口,未进行验证或者为了局域网访问就要求用户放行软件。
    BinRelay
        8
    BinRelay  
    OP
       2019-08-01 09:32:08 +08:00
    @LokiSharp
    我就是额外定义了 deny 规则,环回仍然畅通无阻。
    LokiSharp
        9
    LokiSharp  
       2019-08-01 09:49:04 +08:00
    @BinRelay #8 你把所有规则都删掉然后 deny 所有出入站再看看?
    zarte
        10
    zarte  
       2019-08-01 09:52:51 +08:00
    windows 绑定 127.0.0.1 外网无法访问,需要绑定 0.0.0.0 外网才能访问。所以觉得应该看绑定的地址。
    webjin2
        11
    webjin2  
       2019-08-01 09:55:16 +08:00
    @BinRelay 公用网络、专用网络、域 。配置网卡的时候有这个选项,你是专业网络还是公用网络。至于域估计是计算加入了域之后,网卡配置选项才有这一个把。具体我也不知道。
    jeblur
        12
    jeblur  
       2019-08-01 09:59:36 +08:00
    一般来说环回口只有本地有效吧,你的意思是你本地访问环回口就算在防火墙上被 block 也照样访问?如果是这样的话那没问题啊,因为你数据包根本不过防火墙当然也就跟防火墙没关系了呀
    rootww21
        13
    rootww21  
       2019-08-01 10:04:41 +08:00
    你当然没弄错,外包公司是确保万无一失
    jeblur
        14
    jeblur  
       2019-08-01 10:06:10 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2460 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:26 · PVG 08:26 · LAX 16:26 · JFK 19:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.