• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Flash1
V2EX  ›  程序员

服务器访问自己 IP 会发生什么

  •  
  •   Flash1 · Nov 20, 2019 · 6160 views
    This topic created in 2391 days ago, the information mentioned may be changed or developed.

    服务器上装代理软件,然后客户端通过这个代理访问同一个服务器上的网站,这个过程发生了什么。服务器还会发送请求给 ISP 吗。 如果服务器上监听的是 127.0.0.1 的本地端口,外部网络能不能通过这种方法来访问

    18 replies    2019-11-21 23:58:56 +08:00
    skyeycirno
        1
    skyeycirno  
       Nov 20, 2019
    不会发生什么,会显示你来访问的 ip 是内网 ip
    lhx2008
        2
    lhx2008  
       Nov 20, 2019 via Android
    猜测,第一次应该是到网关,然后到公网路由,然后打回来,下次就直接交换机打回来了。
    opengps
        3
    opengps  
       Nov 20, 2019 via Android
    大部分都正常访问到自身的指定端口的服务
    但如果防火墙不支持内部访问外部自身 ip,那么只能是访问不通。这个情况我在思科防火墙见过
    CEBBCAT
        4
    CEBBCAT  
       Nov 20, 2019 via Android
    路由表了解一下
    mnssbe
        5
    mnssbe  
       Nov 20, 2019
    你访问 127.0.0.1 会发生什么
    lc7029
        6
    lc7029  
       Nov 20, 2019
    该显示啥显示啥,至于走哪个 IP 就要看路由表了
    wangyzj
        7
    wangyzj  
       Nov 21, 2019
    看路由表
    HTSdTt3WygdgQQGe
        8
    HTSdTt3WygdgQQGe  
       Nov 21, 2019 via Android   ❤️ 4
    自己访问自己,相当于递归,最后机器会炸
    msg7086
        9
    msg7086  
       Nov 21, 2019
    > 如果服务器上监听的是 127.0.0.1 的本地端口,外部网络能不能通过这种方法来访问

    可以。SSH 隧道代理了解一下。
    dangyuluo
        10
    dangyuluo  
       Nov 21, 2019
    如果只监听 127.0.0.1 的话,不做任何 hack 的话外界是访问不到的。

    输入 ip route 可以看到本机路由表
    alphatoad
        11
    alphatoad  
       Nov 21, 2019
    不会发生什么
    deepreader
        12
    deepreader  
       Nov 21, 2019
    @q409640976 自己撸自己,相当于递归,会死?
    ochatokori
        13
    ochatokori  
       Nov 21, 2019 via Android
    @deepreader #12 是的,你递归多会爆栈
    你撸和递归到爆栈的次数一样多也会“爆栈”
    ungrown
        14
    ungrown  
       Nov 21, 2019
    @ochatokori #13 不会,只会“爆浆”
    misaka19000
        15
    misaka19000  
       Nov 21, 2019
    网关会把流量转回去
    gesse
        16
    gesse  
       Nov 21, 2019   ❤️ 2
    你可以吧 127.0.0.1 所绑定的 lo 视为“网卡”,视作和外网 /内网 ip 绑定的网卡比如 eth0 等效。
    lo 网卡是为了本系统进程相互访问自己而“发明”的,外部网络访问不到这个“网卡”,lo 是专门为自己系统进程服务的。
    eth0 这个才是绑定了能外部访问的外网 /内网 ip 的网卡。

    你有个服务绑定在 8080 端口,如果只让自己系统的进程访问,就绑定 127.0.0.1 这个 ip (对,lo 这个“网卡”专门干这个的)
    如果你要让外部也能访问,你就绑定 eth0 网卡上面的 ip,比如 192.168.1.10 。
    如果你要都绑定, 就绑定 0.0.0.0 这个“ip”(代表了所有 ipv4 地址都绑定服务)

    至于外部、内部访问服务会发生什么,你可以先简单了解下 tcp/ip,然后再从 iptables 上找到答案。

    PS:我写的这个答案可能过于初级,但是暂时我假定楼主可能希望得到这个答案。
    dswyzx
        17
    dswyzx  
       Nov 21, 2019
    @gesse 然鹅 windows 机器配置 0.0.0.0 就会惊喜
    HhZzXx
        18
    HhZzXx  
       Nov 21, 2019
    我 ping 自己的局域网 IP,wireshark 没有在 wlan 那个端口抓到 icmp 包,在 localhost 端口抓到,虽然 route 表都是走 wlan 端口
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    default _gateway 0.0.0.0 UG 600 0 0 wlp3s0
    10.242.0.0 0.0.0.0 255.255.128.0 U 600 0 0 wlp3s0
    link-local 0.0.0.0 255.255.0.0 U 1000 0 0 wlp3s0
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5792 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 108ms · UTC 01:46 · PVG 09:46 · LAX 18:46 · JFK 21:46
    ♥ Do have faith in what you're doing.