0

当我 ssh 进入 cell_z1. 然后我可以看到这些路由表。


    $ sudo iptables -t nat -L

    Chain PREROUTING (policy ACCEPT)
    target     prot opt source               destination
    w--prerouting  all  --  anywhere             anywhere

    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination

    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    w--prerouting  all  --  anywhere             anywhere

    Chain POSTROUTING (policy ACCEPT)
    target     prot opt source               destination
    w--postrouting  all  --  anywhere             anywhere

    Chain w--instance-coiaggg2s3f (1 references)
    target     prot opt source               destination
    DNAT       tcp  --  anywhere             cell-z1-0.node.dc1.cf.internal  tcp dpt:60036 /* ac4154dd-a2bd-41d8-46bb-c5dfa3c8bfb2 */ to:10.254.0.6:8080
    DNAT       tcp  --  anywhere             cell-z1-0.node.dc1.cf.internal  tcp dpt:60037 /* ac4154dd-a2bd-41d8-46bb-c5dfa3c8bfb2 */ to:10.254.0.6:2222

    Chain w--instance-coiaggg2s3l (1 references)
    target     prot opt source               destination
    DNAT       tcp  --  anywhere             cell-z1-0.node.dc1.cf.internal  tcp dpt:60040 /* 74ab1082-7eca-4a09-7364-b266a23a7fdf */ to:10.254.0.2:8080
    DNAT       tcp  --  anywhere             cell-z1-0.node.dc1.cf.internal  tcp dpt:60041 /* 74ab1082-7eca-4a09-7364-b266a23a7fdf */ to:10.254.0.2:2222

    Chain w--postrouting (1 references)
    target     prot opt source               destination
    MASQUERADE  all  --  10.254.0.0/30       !10.254.0.0/30        /* executor-healthcheck-8946f5d6-063c-4bae-474d-0032f72b8fcb */
    MASQUERADE  all  --  10.254.0.4/30       !10.254.0.4/30        /* ef658bba-214d-4eef-5228-410e8e8aeb69 */
    MASQUERADE  all  --  10.254.0.8/30       !10.254.0.8/30        /* 3cb958eb-409a-4aa9-48f1-41bb6573ebc6 */
    MASQUERADE  all  --  10.254.0.12/30      !10.254.0.12/30       /* 9600ee8c-9e63-4682-bed3-b14767ea46d3 */
    MASQUERADE  all  --  10.254.0.16/30      !10.254.0.16/30       /* executor-healthcheck-eda5cee2-81be-4890-6d67-2a9f108d6dda */

    Chain w--prerouting (2 references)
    target     prot opt source               destination
    w--instance-coiaggg2s3f  all  --  anywhere             anywhere             /* ac4154dd-a2bd-41d8-46bb-c5dfa3c8bfb2 */
    w--instance-coiaggg2s3l  all  --  anywhere             anywhere             /* 74ab1082-7eca-4a09-7364-b266a23a7fdf */

问题是:这些目的地的目的是什么?当我在 cell_z1 中卷曲时,它返回 301 错误。所以,我认为它已被删除。

  • 10.254.0.6:8080
  • 10.254.0.6:2222
  • 10.254.0.2:8080
  • 10.254.0.2:2222

但是,当路由器发射器将该应用程序端口映射到 60036、60037、60040、60041 时,它会导致路由器在某些推送的应用程序中返回 502 错误

我的环境:主机操作系统:Ubuntu Server 16.10 VirtualBox:5.0.32


    $ bosh -e bosh-lite releases
    Using environment '192.168.50.4' as client 'admin'

    Name               Version          Commit Hash
    cf                 254+dev.1*       80a8305a+
    cf-mysql           34.2.0+dev.1*    b8dcbe32
    cf-rabbitmq        222.15.0+dev.1*  377afa0a+
    cf-rabbitmq-test   0.1.7            98720fb8
    cflinuxfs2-rootfs  1.60.0*          0b44b228+
    diego              1.11.0+dev.1*    4ee830c6
    garden-runc        1.4.0*           60f9e9dd
    routing            0.147.0          255f268f
    ~                  0.136.0          d29132da+

2017 年 4 月 11 日更新

我发现这些信息来自 Kawasaki(Guardian's Network Library)。我看到下面的路线表。但与 10.254.0.6 不同,路由表没有虚拟网卡和 10.254.0.2 (10.254.0.0/30) 的路由


    $ route
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref Use Iface
    default         10.244.16.1     0.0.0.0         UG    0      0   0   wcl8gbnff7q4-1
    10.244.16.0     *               255.255.255.0   U     0      0   0   wcl8gbnff7q4-1
    10.254.0.4      *               255.255.255.252 U     0      0   0   wbrdg-0afe0004
4

1 回答 1

0

当您将应用程序部署到 CF 时,它会在您的一个 Diego Cell 上的容器中运行。容器被赋予了一个内部端口,目前这将始终是 Diego 的 8080,并且 Cell 发布了一个外部端口(到 GoRouters)。外部端口通过 Cell 上的 iptables 规则映射到内部端口。我相信这就是您所看到/询问的内容。

总而言之,流量从浏览器到容器中的应用程序的路径如下:

Browser -> HTTP(S) -> Load Balancer -> HTTP(S) -> GoRouter -> (HTTP) -> External Port on Cell -> iptables -> Internal Port in Container -> Application

您可能还想知道端口 2222,这很相似,但该端口用于cf ssh进入容器的流量。

外行永远不应手动删除或调整 Diego Cell 上的任何 iptables 规则。

于 2017-04-12T17:46:14.703 回答