반응형
Google Cloud Compute Engine 내에서 외부 IP를 알려면 어떻게 해야 할까?
다음과 같이 한다고 알 수 있는 것은 VM 내부 IP 뿐이다.
[jerryj@jerrydev tmp]$ ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 0.0.0.0
        inet6 fe80::42:17ff:febe:3c2f  prefixlen 64  scopeid 0x20<link>
        ether 02:42:17:be:3c:2f  txqueuelen 0  (Ethernet)
        RX packets 2051  bytes 113494 (110.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2033  bytes 15436457 (14.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1460
        inet 10.183.0.2  netmask 255.255.255.255  broadcast 10.183.0.2
        inet6 fe80::4001:aff:feb7:2  prefixlen 64  scopeid 0x20<link>
        ether 42:01:0a:b7:00:02  txqueuelen 1000  (Ethernet)
        RX packets 7848752  bytes 46045286889 (42.8 GiB)
        RX errors 0  dropped 0  overruns 0  frame 69
        TX packets 8503481  bytes 2354506702 (2.1 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 
다음의 문서를 참고해서 VM의 Metadata를 조회하면 된다. 조회 가능한 항목들 역시 아래 문서에 나와 있다
 
 
VM 인스턴스 이름을 구하는 Metadata 조회 방법 (아래 헤더가 반드시 포함되어야 함)
[jerryjg@jerrydefault-4cpu-template-1 ~]$ curl -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/name
 
jerrydefault-4cpu-template-1
 
External IP를 구하는 Metadata 항목 확인 (recursive=true 옵션 사용)
[jerryj@jerrydev tmp]$ curl -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/network-interfaces/?recursive=true  | python -m json.tool
 
[
    {
        "accessConfigs": [
            {
                "externalIp": "104.199.xxx.xxx",
                "type": "ONE_TO_ONE_NAT"
            }
        ],
        "dnsServers": [
            "169.254.169.254"
        ],
        "forwardedIps": [],
        "gateway": "10.183.0.1",
        "ip": "10.183.0.2",
        "ipAliases": [],
        "mac": "42:01:0a:b7:00:02",
        "mtu": 1460,
        "network": "projects/249965614499/networks/jerry-default",
        "subnetmask": "255.255.240.0",
        "targetInstanceIps": []
    },
    {
        "accessConfigs": [
            {
                "externalIp": "",
                "type": "ONE_TO_ONE_NAT"
            }
        ],
        "dnsServers": [
            "169.254.169.254"
        ],
        "forwardedIps": [],
        "gateway": "10.10.10.1",
        "ip": "10.10.10.2",
        "ipAliases": [],
        "mac": "42:01:0a:0a:0a:02",
        "mtu": 1460,
        "network": "projects/249965614499/networks/nat-test-jerryjg",
        "subnetmask": "255.255.255.0",
        "targetInstanceIps": []
    }
]
 
[jerryj@jerrydev tmp]$ curl -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip
104.199.xxx.xxx
 
Posted by Hey Jerry
,