2017-04-10 201 views
0

當我ssh進入cell_z1。那麼我可以看到這些路由表。cell_z1中iptables NAT配置的perpose是什麼?


    $ 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

但是,它會導致路由器返回502錯誤某些推送應用程序時,路由器發射器將該應用程序端口映射到60036,60037,60040,60041

我的環境: 主機操作系統:Ubuntu服務器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日

我發現這個信息來自川崎(監護人的網絡庫)。 我看到下面的路由表。但不同於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 

回答

0

虛擬網卡和路由時應用程序部署到CF,它運行在一個容器上的一個你的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交通進入容器。

外行人應該從不手動刪除或調整迭代單元格上的任何iptables規則。