在谷歌云中添加ip转发规则

时间:2014-12-16 10:24:11

标签: ssl ip google-compute-engine forwarding

任何人都可以通过google云转发提供有关如何向我的实例添加其他IP的教程吗?

目前的文档太复杂,没有帮助。它没有说明应该执行命令的位置以及指令太模糊。

我一直在尝试设置一个新实例,但我无法理解如何设置将此实例上的所有流量转发到其他实例。如果有人能够阐明这个话题,我将非常感激。

谢谢。

2 个答案:

答案 0 :(得分:5)

我不同地理解你的问题(与其他答案相比)。我知道你需要第二个公共IP指向已经拥有自己的公共IP的实例。如果是这种情况,请按照以下步骤操作:

  1. 让我们从SDK开始,因为你提到:

      

    它没有说明应该执行命令的位置   指令太模糊了

  2. 一旦有downloaded and installed Google Cloud SDK,命令就会在您的终端中执行。在Linux / OS X中它将是:

        curl https://sdk.cloud.google.com | bash
    

    在该链接中有一个包含更多信息的3步指南。

    1. 发出命令:

      gcloud compute instances list
      
    2. 获取您的实例及其所属区域的列表。记下您需要使用的实例的NAME和ZONE。请注意以下命令中所需的REGION是ZONE字段的第一部分。 (例如:ZONE:us-central1-f,然后REGION是us-central1)

      1. Create a static public IP接收您要转发的流量:

        gcloud compute addresses create NAME
        gcloud compute addresses create targ-ip-1
        
      2. 再次选择NAME。它将提示输入区域(选择与您的实例相同的区域)。这个命令将返回一个IP,让我们说:W .X.Y.Z

        1. 然后您需要create a target-instance

          gcloud compute target-instances create NAME --instance INSTANCE
          gcloud compute target-instances create targ-ins-1 --instance instance-1
          
        2. 其中NAME是您为目标实例选择的名称。 INSTANCE是将处理来自一个或多个转发规则的流量的实例的名称。它将提示输入区域(选择您的实例所在的区域)。

          您还可以创建target-pools以同时指向多个实例,而不仅仅是目标实例。

          1. Create the forwarding rule,使用您刚刚创建的目标实例和静态公共IP:

            gcloud compute forwarding-rules create NAME --address ADDRESS --target-instance TARGET_INSTANCE --target-instance-zone TARGET_INSTANCE_ZONE --ip-protocol IP_PROTOCOL --port-range [PORT | PORT-PORT]
            gcloud compute forwarding-rules create fwd-rule-1 --address W.X.Y.Z --target-instance targ-ins-1 --target-instance-zone us-central1-f --ip-protocol TCP --port-range 5678-5680
            
          2. 其中:

            • NAME:您选择转发规则的名称
            • ADDRESS:您在步骤3中保留的IP地址
            • TARGET_INSTANCE:您在步骤4中创建的目标实例名称
            • TARGET_INSTANCE_ZONE:目标实例所属的区域
            • IP_PROTOCOL(可选):规则将提供的IP协议。如果留空,则使用TCP。支持的协议有:AH,ESP,SCTP,TCP,UDP。
            • PORT(可选):如果指定,则只转发发往指定范围内端口的数据包。如果未指定,则匹配所有端口

            系统将提示您选择此规则所属的区域

            要验证您的规则,您可以list your configured forwarding rules这样:

            gcloud compute forwarding-rules list
            

            您应该在您选择的实例中开始接收指向新公共IP的流量。

答案 1 :(得分:2)

根据您的问题,我发现您希望设置路由规则,以便来自实例的所有流量都通过另一个实例路由

设置不应该太复杂,我现在可以想到的最佳示例是Google帮助中心文档中"Configuring a NAT gateway"指南中使用的设置。

更具体地注意以下内容(从指南中的步骤5开始):

$ gcloud compute routes create no-ip-internet-route --network gce-network \
     --destination-range 0.0.0.0/0 \
     --next-hop-instance nat-gateway \
     --next-hop-instance-zone us-central1-a \
     --tags no-ip --priority 800

我们可以打破这一点,以便更好地理解该规则的作用:

  1. 我们正在“gce-network”中创建一条路线,我们称之为“no-ip-internet-route”。
  2. --destination-range 0.0.0.0/0用于指定针对任何目的地的流量应受规则影响。我们指的是将离开我们实例的流量。
  3. --next-hop-instance nat-gateway部分是指定在触发规则后,应将流量作为下一跳发送到“nat-gateway”实例。
  4. --next-hop-instance-zone us-central1-a只是指定网关机器的区域。
  5. --tags no-ip --priority 800用于表示只有具有'no-ip'标记的实例才会受到影响(只要它们位于创建此规则的网络中),我们也是在规则上设置“更高”优先级,以确保它优先于其他规则。
  6. 考虑到上述所有情况,任何具有“no-ip”标记的实例都会将其传出流量传递给“nat-gateway”实例。总之,'nat-gateway'实例自动成为来自标记实例的所有传出流量的“下一跳”。

    您可以使用类似的设置来确定您的路由规则并根据此规则创建它们,但是请注意,此示例中使用的“nat-gateway”具有特定功能,例如IP转发,并且基本上充当路由器并成为使用规则标记的实例的默认网关。

    你还问过:如何通过google云转发为我的实例添加额外的ip?

    从技术上讲,您只需在'target pool'中添加实例,然后创建forwarding rule即可将所需流量转发到该实例。转发规则将为您提供额外的IP地址。只要您在端口22上转发流量或将实例设置为侦听的端口,这也可以用于通过转发规则的IP地址SSH实例。