๊ฐ์ ๋จธ์ (VM) ๋ฐ ๋ฒ ์ด ๋ฉํ ์ธ์คํด์ค์ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ํ ๋นํ ์ ์์ต๋๋ค. ์ธ์คํด์ค์ ๊ณ ์ IP ์ฃผ์๋ฅผ ๋ณ๊ฒฝ, ๋์ด, ํด์ ํ ์๋ ์์ต๋๋ค. ๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ์์ฝํ๋ ค๋ฉด ๊ณ ์ ์ธ๋ถ IP ์ฃผ์ ์์ฝ์ ์ฐธ์กฐํ์ธ์.
์ธ๋ถ IP ์ฃผ์๋ ๊ณ ์ ๋๋ ์์ ์ฃผ์์ผ ์ ์์ต๋๋ค. ์ธ์คํด์ค์ ๋ณ๊ฒฝ๋์ง ์๋ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์๊ฐ ํ์ํ ๊ฒฝ์ฐ ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
- ๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ์์ฝํ๊ฑฐ๋ ๊ธฐ์กด ์์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ์น๊ฒฉํ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค.
- ์์ฝ๋ IP ์ฃผ์๋ฅผ ๊ธฐ์กด ์ธ์คํด์ค์ ํ ๋นํ๊ฑฐ๋ ์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค ๋ ํ ๋นํฉ๋๋ค.
๋ด๋ถ Compute Engine ๋คํธ์ํฌ์ ๊ณ ์ IP ์ฃผ์๊ฐ ํ์ํ ๊ฒฝ์ฐ์๋ ๋์ ๊ณ ์ ๋ด๋ถ IP ์ฃผ์ ์์ฝ์ ์ฐธ์กฐํ์ธ์.
๊ณ ์ ์ธ๋ถ IP ์ฃผ์ ์์ฝ ๋๋ ์ ์ญ ์ธ๋ถ IP ์ฃผ์ ์์ฑ์ ๊ดํ ์์ธํ ๋ด์ฉ์ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์ ์์ฝ์ ์ฐธ์กฐํ์ธ์.
์์ํ๊ธฐ ์ ์
- IP ์ฃผ์์ ๋ํด ์์๋ด ๋๋ค.
- ๊ณ ์ ์ธ๋ถ IP ์ฃผ์์ ํ ๋น๋ ๋ฐ ํ๋์ ๋ํด ์ฝ์ด๋ด ๋๋ค.
- ์ธ๋ถ IP ์ฃผ์ ๊ฐ๊ฒฉ ์ฑ ์ ์ ๋ํด ์ฝ์ด๋ด ๋๋ค.
-
์์ง ์ธ์ฆ์ ์ค์ ํ์ง ์์๋ค๋ฉด ์ค์ ํฉ๋๋ค.
์ธ์ฆ์ Google Cloud ์๋น์ค ๋ฐ API์ ์ก์ธ์คํ๊ธฐ ์ํด ID๋ฅผ ํ์ธํ๋ ํ๋ก์ธ์ค์
๋๋ค.
๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ฝ๋ ๋๋ ์ํ์ ์คํํ๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ์ ํํ์ฌ Compute Engine์ ์ธ์ฆํ๋ฉด ๋ฉ๋๋ค.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Terraform
๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ด ํ์ด์ง์ Terraform ์ํ์ ์ฌ์ฉํ๋ ค๋ฉด gcloud CLI๋ฅผ ์ค์น ๋ฐ ์ด๊ธฐํํ ๋ค์ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ก ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํ์ธ์.
์์ธํ ๋ด์ฉ์ ๋ค์์ ์ฐธ์กฐํ์ธ์: Set up authentication for a local development environment.
REST
๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ด ํ์ด์ง์ REST API ์ํ์ ์ฌ์ฉํ๋ ค๋ฉด gcloud CLI์ ์ ๊ณตํ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
์์ธํ ๋ด์ฉ์ Google Cloud ์ธ์ฆ ๋ฌธ์์ REST ์ฌ์ฉ์ ์ํ ์ธ์ฆ์ ์ฐธ์กฐํ์ธ์.
-
ํ์ํ ์ญํ
๊ณ ์ IP ์ฃผ์๋ฅผ ๊ตฌ์ฑํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐ ํ์ํ ๊ถํ์ ์ป์ผ๋ ค๋ฉด ๊ด๋ฆฌ์์๊ฒ ํ๋ก์ ํธ์ ๋ํ ๋ค์ IAM ์ญํ ์ ๋ถ์ฌํด ๋ฌ๋ผ๊ณ ์์ฒญํ์ธ์.
-
์ธ์คํด์ค ๋ง๋ค๊ธฐ ๋ฐ ์
๋ฐ์ดํธ: Compute ์ธ์คํด์ค ๊ด๋ฆฌ์(v1)(
roles/compute.instanceAdmin.v1
)
์ญํ ๋ถ์ฌ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํ๋ก์ ํธ, ํด๋, ์กฐ์ง์ ๋ํ ์ก์ธ์ค ๊ด๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ด๋ฌํ ์ฌ์ ์ ์๋ ์ญํ ์๋ ๊ณ ์ IP ์ฃผ์๋ฅผ ๊ตฌ์ฑํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐ ํ์ํ ๊ถํ์ด ํฌํจ๋์ด ์์ต๋๋ค. ํ์ํ ์ ํํ ๊ถํ์ ๋ณด๋ ค๋ฉด ํ์ ๊ถํ ์น์ ์ ํผ์น์ธ์.
ํ์ ๊ถํ
๊ณ ์ IP ์ฃผ์๋ฅผ ๊ตฌ์ฑํ๊ณ ๊ด๋ฆฌํ๋ ค๋ฉด ๋ค์ ๊ถํ์ด ํ์ํฉ๋๋ค.
-
์ธ์คํด์ค์ ๋ํ
compute.instances.update
๊ถํ -
์ธ์คํด์ค์ ๋ํ
compute.instances.updateNetworkInterface
๊ถํ -
์ธ์คํด์ค์ ๋ํ
compute.instances.addAccessConfig
๊ถํ -
์ธ์คํด์ค์ ๋ํ
compute.instances.deleteAccessConfig
๊ถํ -
๋คํธ์ํฌ์ ๋ํ
compute.networks.list
- ์๋ธ๋ท์ ๋ํ
compute.subnetworks.use
๊ถํ - ์๋ธ๋ท์ ๋ํ
compute.subnetworks.list
๊ถํ -
์ธ์คํด์ค๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ:
- ํ๋ก์ ํธ์ ๋ํ
compute.instances.create
๊ถํ - ์ปค์คํ
์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ VM ๋ง๋ค๊ธฐ: ์ด๋ฏธ์ง์ ๋ํ
compute.images.useReadOnly
๊ถํ - ์ค๋
์ท์ ์ฌ์ฉํ์ฌ VM ๋ง๋ค๊ธฐ: ์ค๋
์ท์ ๋ํ
compute.snapshots.useReadOnly
๊ถํ - ์ธ์คํด์ค ํ
ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ VM ๋ง๋ค๊ธฐ: ์ธ์คํด์ค ํ
ํ๋ฆฟ์ ๋ํ
compute.instanceTemplates.useReadOnly
๊ถํ - VM์ ๊ธฐ์กด ๋คํธ์ํฌ ํ ๋น: ํ๋ก์ ํธ์ ๋ํ
compute.networks.use
๊ถํ - VM์ ๊ณ ์ IP ์ฃผ์ ์ง์ : ํ๋ก์ ํธ์ ๋ํ
compute.addresses.use
๊ถํ - ๊ธฐ์กด ๋คํธ์ํฌ ์ฌ์ฉ ์ VM์ ์ธ๋ถ IP ์ฃผ์ ํ ๋น: ํ๋ก์ ํธ์ ๋ํ
compute.networks.useExternalIp
๊ถํ - VM์ ์๋ธ๋ท ์ง์ : ํ๋ก์ ํธ ๋๋ ์ ํํ ์๋ธ๋ท์ ๋ํ
compute.subnetworks.use
๊ถํ - VPC ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ ๋ VM์ ์ธ๋ถ IP ์ฃผ์ ํ ๋น: ํ๋ก์ ํธ ๋๋ ์ ํํ ์๋ธ๋ท์ ๋ํ
compute.subnetworks.useExternalIp
๊ถํ - VM์ VM ์ธ์คํด์ค ๋ฉํ๋ฐ์ดํฐ ์ค์ : ํ๋ก์ ํธ์ ๋ํ
compute.instances.setMetadata
๊ถํ - VM์ ํ๊ทธ ์ค์ : VM์ ๋ํ
compute.instances.setTags
๊ถํ - VM์ ๋ผ๋ฒจ ์ค์ : VM์ ๋ํ
compute.instances.setLabels
๊ถํ - VM์ ์ฌ์ฉํ ์๋น์ค ๊ณ์ ์ค์ : VM์ ๋ํ
compute.instances.setServiceAccount
๊ถํ - VM์ ์ ๋์คํฌ ๋ง๋ค๊ธฐ: ํ๋ก์ ํธ์ ๋ํ
compute.disks.create
๊ถํ - ๊ธฐ์กด ๋์คํฌ๋ฅผ ์ฝ๊ธฐ ์ ์ฉ ๋๋ ์ฝ๊ธฐ-์ฐ๊ธฐ ๋ชจ๋๋ก ์ฐ๊ฒฐ: ๋์คํฌ์ ๋ํ
compute.disks.use
๊ถํ - ๊ธฐ์กด ๋์คํฌ๋ฅผ ์ฝ๊ธฐ ์ ์ฉ ๋ชจ๋๋ก ์ฐ๊ฒฐ: ๋์คํฌ์ ๋ํ
compute.disks.useReadOnly
๊ถํ
- ํ๋ก์ ํธ์ ๋ํ
์ปค์คํ ์ญํ ์ด๋ ๋ค๋ฅธ ์ฌ์ ์ ์๋ ์ญํ ์ ์ฌ์ฉํ์ฌ ์ด ๊ถํ์ ๋ถ์ฌ๋ฐ์ ์๋ ์์ต๋๋ค.
์ ํ์ฌํญ
ํ ๋ฒ์ ํ๋์ ๋ฆฌ์์ค๋ง ๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
IP ์ฃผ์๊ฐ ๋ฆฌ์์ค์ ํ ๋น๋๋ฉด ํด๋น ์ฃผ์๊ฐ ๊ณ ์ ์ฃผ์์ธ์ง ์์ ์ฃผ์์ธ์ง ํ์ธํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. IP ์ฃผ์๋ฅผ ํด๋น ํ๋ก์ ํธ์ ์์ฝ๋ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์ ๋ชฉ๋ก๊ณผ ๋น๊ตํ ์ ์์ต๋๋ค. ํ๋ก์ ํธ์์ ์ฌ์ฉํ ์ ์๋ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์์ ๋ชฉ๋ก์ ํ์ธํ๋ ค๋ฉด
gcloud compute addresses list
ํ์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.๊ฐ VM์๋ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๊ฐ ์ฌ๋ฌ ๊ฐ ์์ ์ ์์ผ๋ฉฐ ๊ฐ ์ธํฐํ์ด์ค์๋ ์คํ ์ ํ์ ๋ฐ๋ผ ๋ค์ IP ์ฃผ์๊ฐ ํ ๋น๋ ์ ์์ต๋๋ค.
- IPv4 ์ ์ฉ ์ธํฐํ์ด์ค:
- ๋ด๋ถ IPv4 ์ฃผ์(ํ์)
- ์ธ๋ถ IPv4 ์ฃผ์(์ ํ์ฌํญ)
- ์ด์ค ์คํ(IPv4 ๋ฐ IPv6) ์ธํฐํ์ด์ค:
- ๋ด๋ถ IPv4 ์ฃผ์(ํ์)
- ์ธ๋ถ IPv4 ์ฃผ์(์ ํ์ฌํญ)
/96
IPv6 ์ฃผ์ ๋ฒ์(๋ด๋ถ ๋๋ ์ธ๋ถ ์ค ํ๋)(ํ์)
- IPv6 ์ ์ฉ ์ธํฐํ์ด์ค(ํ๋ฆฌ๋ทฐ):
/96
IPv6 ์ฃผ์ ๋ฒ์(๋ด๋ถ ๋๋ ์ธ๋ถ ์ค ํ๋)(ํ์)
- IPv4 ์ ์ฉ ์ธํฐํ์ด์ค:
IPv6 ์ ์ฉ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๊ฐ ์๋ VM์ ์ธ๋ถ IPv6 ์ฃผ์๋ ํ ๋น ํด์ ํ๊ฑฐ๋ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋ฆฌ์์ค๋ฅผ ์ญ์ ํด๋ ์ฃผ์๊ฐ ๊ณ์ ์์ฝ๋๋๋ก ๋ฆฌ์์ค์ ์์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ก ์น๊ฒฉํ ์๋ ์์ต๋๋ค.
๊ณ ์ IP ์ฃผ์ ์ด๋ฆ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์ฐธ๊ณ : ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ ์ฌ๋ฌ ์ ๋ฌ ๊ท์น์ผ๋ก๋ถํฐ ํธ๋ํฝ์ ์์ ํ๋ฉฐ ์ด ์ ๋ฌ ๊ท์น์ ๋ค๋ฅธ ์ธ๋ถ IP ์ฃผ์์๋ ์ ์ฉ๋ ์ ์์ต๋๋ค. ์ฌ๋ฌ ์ธ๋ถ IP ์ฃผ์์์ ์ด๋ฌํ ์ ๋ฌ ๊ท์น์ ํตํด ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ ์ฐธ์กฐํ ์ ์์ง๋ง ๊ฐ ๋คํธ์ํฌ ์ธํฐํ์ด์ค์๋ ์ธ๋ถ IPv4 ์ฃผ์ ํ๋์ ์ธ๋ถ /96
IPv6 ์ฃผ์ ๋ฒ์ ํ๋๋ง ํ ๋น๋ ์ ์์ต๋๋ค.
๋ถํ ๋ถ์ฐ ๋ฐ ์ ๋ฌ ๊ท์น์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ถํ ๋ถ์ฐ ๋ฌธ์๋ฅผ ์ฝ์ด๋ณด์ธ์.
์ฌ์ฉ ๊ฐ๋ฅํ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์ ๋ณด๊ธฐ
ํ๋ก์ ํธ์ ์์ฝํ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ๋์ดํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ์ํํฉ๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ IP ์ฃผ์ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์ธ๋ถ IP ์ฃผ์๋ฅผ ํด๋ฆญํฉ๋๋ค.
gcloud
gcloud compute addresses list
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ชจ๋ IP ์ฃผ์๋ฅผ ๋์ดํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
gcloud compute addresses list
๋ชจ๋ ์ ์ญ IP ์ฃผ์๋ฅผ ๋์ดํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
gcloud compute addresses list --global
ํน์ ๋ฆฌ์ ์ ๋ชจ๋ ๋ฆฌ์ IP ์ฃผ์๋ฅผ ๋์ดํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
gcloud compute addresses list \ --regions=REGION
REGION
์ ์ฃผ์๋ฅผ ๋์ดํ ๋ฆฌ์ ์ผ๋ก ๋ฐ๊ฟ๋๋ค. ์ผํ๋ก ๊ตฌ๋ถํ ๋ฆฌ์ ์ด๋ฆ์ ์ง์ ํ์ฌ ์ฌ๋ฌ ๋ฆฌ์ ์ ์ฃผ์๋ฅผ ๋์ดํ ์ ์์ต๋๋ค.gcloud compute addresses list \ --regions=REGION1,REGION2,..REGION_n_
API
๋ฆฌ์ IPv4 ๋๋ IPv6 ์ฃผ์๋ฅผ ๋์ดํ๋ ค๋ฉด
addresses.list
๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
๋ค์์ ๋ฐ๊ฟ๋๋ค.
PROJECT_ID
: ์ด ์์ฒญ์ ํ๋ก์ ํธ IDREGION
: ์์ฒญ์ ๋ฆฌ์ ์ด๋ฆ
๋ชจ๋ ๋ฆฌ์ ์ ๋ชจ๋ ์ฃผ์๋ฅผ ๋์ดํ๋ ค๋ฉด
addresses.aggregatedList
๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/addresses
์ ์ญ IPv4 ๋๋ IPv6 ์ฃผ์๋ฅผ ๋์ดํ๋ ค๋ฉด
globalAddresses.list
๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
๋ค์์ ๋ฐ๊ฟ๋๋ค.
PROJECT_ID
: ์ด ์์ฒญ์ ํ๋ก์ ํธ ID
Go
์๋ฐ
Python
๊ณ ์ ์ธ๋ถ IP ์ฃผ์ ๊ตฌ์ฑ
๋ค์ ์น์ ์์๋ ์ธ์คํด์ค์ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ ์ธ์คํด์ค ๋ง๋ค๊ธฐ
๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ์์ฝํ ํ ์ธ์คํด์ค์ ํ ๋นํ ์ ์์ต๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ ์ธ์คํด์ค ๋ง๋ค๊ธฐ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์ธ์คํด์ค์ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ํ ๋นํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
ํ์ ๋ฉ๋ด์์ ๋คํธ์ํน์ ํด๋ฆญํฉ๋๋ค.
๋คํธ์ํฌ ์ธํฐํ์ด์ค ์น์ ์์ ๋ค์ ์ต์ ์ ์ฌ์ฉํ์ฌ ์ธ์คํด์ค์ ์ํ๋ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ ์ง์ ํฉ๋๋ค.
๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด ๋คํธ์ํฌ ์ธํฐํ์ด์ค ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋คํธ์ํฌ ๋ชฉ๋ก์์ ๋คํธ์ํฌ๋ฅผ ์ ํํฉ๋๋ค.
๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ ์ญ์ ํ๋ ค๋ฉด
์ญ์ ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ค์ ์ต์ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
๊ณ ์ ์ธ๋ถ IPv4 ์ฃผ์๋ฅผ ํ ๋นํ๋ ค๋ฉด ๋ค์์ ์คํํฉ๋๋ค.
- ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ ํผ์นฉ๋๋ค.
- ์ธ๋ถ IPv4 ์ฃผ์ ๋ชฉ๋ก์์ IP ์ฃผ์๋ฅผ ์ ํํฉ๋๋ค.
๊ณ ์ ์ธ๋ถ IPv6 ์ฃผ์๋ฅผ ํ ๋นํ๋ ค๋ฉด ๋ค์์ ์คํํฉ๋๋ค.
- ์ธ๋ถ IPv6 ์ฃผ์ ๋ฒ์๋ฅผ ์ฌ์ฉํ๋ ์๋ธ๋ท์ด ํฌํจ๋ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ ํผ์นฉ๋๋ค.
- ์๋ธ๋คํธ์ํฌ ๋ชฉ๋ก์์ ํด๋น ์๋ธ๋ท์ ์ ํํฉ๋๋ค.
- IP ์คํ ์ ํ์์ IPv4 ๋ฐ IPv6(์ด์ค ์คํ) ๋๋ IPv6(๋จ์ผ ์คํ)์ ์ ํํฉ๋๋ค.
- ์ธ๋ถ IPv6 ์ฃผ์ ๋ชฉ๋ก์์ ์๋ก ์์ฝ๋ ์ธ๋ถ IPv6 ์ฃผ์๋ฅผ ์ ํํฉ๋๋ค. ๋๋ ๊ณ ์ ์ธ๋ถ IPv6 ์ฃผ์ ์์ฝ์ ์ ํํ๊ณ ์ ๊ณ ์ ์ธ๋ถ IPv6 ์ฃผ์๋ฅผ ์์ฝํฉ๋๋ค.
- ๋คํธ์ํฌ ์๋น์ค ๋ฑ๊ธ์์ ํ๋ฆฌ๋ฏธ์์ ์ ํํฉ๋๋ค.
๋คํธ์ํฌ ์ธํฐํ์ด์ค ์์ ์ ์๋ฃํ๋ ค๋ฉด ์๋ฃ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ธ์คํด์ค ์์ฑ ํ๋ก์ธ์ค๋ฅผ ๊ณ์ ์งํํฉ๋๋ค.
gcloud
์ธ์คํด์ค๋ฅผ ๋ง๋ค๊ณ ์ด๋ฏธ ์์ฝํ ๊ณ ์ ๋ฆฌ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ํ ๋นํ ์ ์์ต๋๋ค.
๊ณ ์ ์ธ๋ถ IPv4 ์ฃผ์๋ฅผ ํ ๋นํ๋ ค๋ฉด ๋ค์์ ์คํํฉ๋๋ค.
gcloud compute instances create INSTANCE_NAME \ --zone=ZONE \ --address=IPV4_ADDRESS
๊ณ ์ ์ธ๋ถ IPv6 ์ฃผ์๋ฅผ ํ ๋นํ๋ ค๋ฉด ๋ค์์ ์คํํฉ๋๋ค.
gcloud compute instances create INSTANCE_NAME \ --zone=ZONE \ --subnet=SUBNET \ --stack-type=STACK_TYPE \ --external-ipv6-address=IPV6_ADDRESS \ --external-ipv6-prefix-length=96 \ --ipv6-network-tier=PREMIUM
๋ค์์ ๋ฐ๊ฟ๋๋ค.
INSTANCE_NAME
: ์ปดํจํ ์ธ์คํด์ค์ ์ด๋ฆZONE
: ์ธ์คํด์ค๋ฅผ ๋ง๋ค ์์ญIPV4_ADDRESS
: ์ธ์คํด์ค์ ํ ๋นํ IPv4 ์ฃผ์. ์ฃผ์ ์ด๋ฆ์ด ์๋ ์์ฝ๋ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.SUBNET
: ์ธ๋ถ IPv6 ์ฃผ์๊ฐ ํฌํจ๋ ์๋ธ๋ทSTACK_TYPE
: ์ธ์คํด์ค์ ์คํ ์ ํ,IPV4_IPV6
(์ด์ค ์คํ) ๋๋IPV6_ONLY
IPV6_ADDRESS
: ์ธ์คํด์ค์ ํ ๋นํ IPv6 ์ฃผ์. ์ฃผ์ ์ด๋ฆ์ด ์๋ ์์ฝ๋ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Terraform
google_compute_instance
๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ธ๋ถ IP ์ฃผ์๋ฅผ ํ ๋นํ ์ ์์ต๋๋ค.
REST
์ ์ปดํจํ ์ธ์คํด์ค์ ๊ณ ์ ์ธ๋ถ IPv4 ์ฃผ์๋ฅผ ํ ๋นํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์ ์ธ์คํด์ค ๋ง๋ค๊ธฐ ์์ฒญ์์
networkInterfaces[].accessConfigs[].natIP
์์ฑ๊ณผ ์ฌ์ฉํ๋ ค๋ ์ธ๋ถ IPv4 ์ฃผ์๋ฅผ ๋ช ์์ ์ผ๋ก ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.{ "name": "INSTANCE_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "networkInterfaces": [{ "accessConfigs": [{ "type": "ONE_TO_ONE_NAT", "name": "External NAT", "natIP": "IPV4_ADDRESS" }], "network": "global/networks/default" }], "disks": [{ "autoDelete": "true", "boot": "true", "type": "PERSISTENT", "initializeParams": { "sourceImage": "SOURCE_IMAGE" } }] }
๋ค์์ ๋ฐ๊ฟ๋๋ค.
INSTANCE_NAME
: ์ปดํจํ ์ธ์คํด์ค ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.ZONE
: ์ธ์คํด์ค๋ฅผ ๋ง๋ค ์์ญMACHINE_TYPE
: ์ ํ์ฌํญ: ์ธ์คํด์ค๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉํ ๋จธ์ ์ ํ ๋ฆฌ์์ค์ ์ ์ฒด ๋๋ ๋ถ๋ถ URL(zones/ZONE/machineTypes/MACHINE_TYPE
ํ์)IPV4_ADDRESS
: ์ธ์คํด์ค์ ํ ๋นํ IPv4 ์ฃผ์. ์ฃผ์ ์ด๋ฆ์ด ์๋ ์์ฝ๋ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.SOURCE_IMAGE
: ๊ณต๊ฐ ์ด๋ฏธ์ง์ ํน์ ๋ฒ์ (์:projects/debian-cloud/global/images/debian-10-buster-v20200309
) ๋๋ ์ด๋ฏธ์ง ๊ณ์ด(์:projects/debian-cloud/global/images/family/debian-10
)
์ ์ธ์คํด์ค์ ๊ณ ์ ์ธ๋ถ IPv6 ์ฃผ์๋ฅผ ํ ๋นํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์ ์ธ์คํด์ค ๋ง๋ค๊ธฐ ์์ฒญ์์
networkInterfaces[].ipv6AccessConfigs[].externalIpv6
์์ฑ๊ณผ ์ฌ์ฉํ๋ ค๋ ์ธ๋ถ IPv6 ์ฃผ์๋ฅผ ๋ช ์์ ์ผ๋ก ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.{ "name": "INSTANCE_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "networkInterfaces": [{ "ipv6AccessConfigs": [{ "externalIpv6": "IPV6_ADDRESS", "externalIpv6PrefixLength": 96, "name": "external-ipv6-access-config", "networkTier": "PREMIUM", "type": "DIRECT_IPV6" }], "stackType": "STACK_TYPE", "subnetwork":"SUBNETWORK" }], "disks": [{ "autoDelete": "true", "boot": "true", "mode": "READ_WRITE", "type": "PERSISTENT", "initializeParams": { "sourceImage": "SOURCE_IMAGE" }, }], }
๋ค์์ ๋ฐ๊ฟ๋๋ค.
INSTANCE_NAME
: ์ปดํจํ ์ธ์คํด์ค ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.ZONE
: ์ธ์คํด์ค๋ฅผ ๋ง๋ค ์์ญMACHINE_TYPE
: ์ ํ์ฌํญ: ์ธ์คํด์ค๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉํ ๋จธ์ ์ ํ ๋ฆฌ์์ค์ ์ ์ฒด ๋๋ ๋ถ๋ถ URL(zones/ZONE/machineTypes/MACHINE_TYPE
ํ์)IPV6_ADDRESS
: ์ธ์คํด์ค์ ํ ๋นํ IPv6 ์ฃผ์. ์ฃผ์ ์ด๋ฆ์ด ์๋ ์์ฝ๋ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.STACK_TYPE
: ์ธ์คํด์ค์ ์คํ ์ ํ,IPV4_IPV6
(์ด์ค ์คํ) ๋๋IPV6_ONLY
SUBNET
: ์ธ๋ถ IPv6 ์ฃผ์๊ฐ ํฌํจ๋ ์๋ธ๋ทSOURCE_IMAGE
: ๊ณต๊ฐ ์ด๋ฏธ์ง์ ํน์ ๋ฒ์ (์:"projects/debian-cloud/global/images/debian-10-buster-v20200309"
) ๋๋ ์ด๋ฏธ์ง ๊ณ์ด(์:"projects/debian-cloud/global/images/family/debian-10"
)
Go
์๋ฐ
Python
์ธ๋ถ IP ์ฃผ์ ๋ณ๊ฒฝ ๋๋ ๊ธฐ์กด ์ธ์คํด์ค์ ํ ๋น
์์ ๋๋ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ๊ธฐ์กด IPv4 ์ ์ฉ ๋๋ ์ด์ค ์คํ ์ธ์คํด์ค์ ํ ๋นํ ์ ์์ต๋๋ค. ์ด ์ ์ฐจ๋ IPv6 ์ ์ฉ ์ธ์คํด์ค์๋ ์ง์๋์ง ์์ต๋๋ค.
์ปดํจํ ์ธ์คํด์ค์๋ ์ฌ๋ฌ ์ธํฐํ์ด์ค๊ฐ ์์ ์ ์์ต๋๋ค. ๋จ์ผ ์คํ ์ธํฐํ์ด์ค๋ ์ธ๋ถ IP ์ฃผ์๋ฅผ ํ๋ ๊ฐ์ง ์ ์์ต๋๋ค. ์ด์ค ์คํ ์ธํฐํ์ด์ค์๋ ์ธ๋ถ IPv4 ์ฃผ์ 1๊ฐ์ ์ธ๋ถ IPv6 ์ฃผ์ 1๊ฐ๊ฐ ์์ ์ ์์ต๋๋ค. ์ธ์คํด์ค์ ์ด๋ฏธ ์ธ๋ถ IP ์ฃผ์๊ฐ ์๋ ๊ฒฝ์ฐ ๋จผ์ ํด๋น ์ฃผ์๋ฅผ ์ญ์ ํด์ผ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ๊ธฐ์กด ์ธ์คํด์ค์ ํ ๋นํ ์ ์์ต๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ VM ์ธ์คํด์ค ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์ธ๋ถ IP๋ฅผ ํ ๋นํ๋ ค๋ ์ธ์คํด์ค ์ด๋ฆ์ ํด๋ฆญํฉ๋๋ค. ์ธ์คํด์ค ์ธ๋ถ์ ๋ณด ํ์ด์ง๊ฐ ํ์๋ฉ๋๋ค.
์ธ์คํด์ค ์ธ๋ถ์ ๋ณด ํ์ด์ง์์ ๋ค์ ๋จ๊ณ๋ฅผ ์๋ฃํฉ๋๋ค.
- ์์ ์ ํด๋ฆญํฉ๋๋ค.
- ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ ํผ์นฉ๋๋ค.
- ํ์ํ ์ธ๋ถ IP ์ฃผ์๋ฅผ ์ ํํ์ฌ ์ธ์คํด์ค์ ํ ๋นํฉ๋๋ค.
์ธ์คํด์ค๊ฐ IPv4 ์ ์ฉ์ธ๋ฐ IPv6 ์ฃผ์๋ฅผ ํ ๋นํ๋ ค๋ฉด ๋จผ์ ์คํ ์ ํ์ ์ด์ค ์คํ์ผ๋ก ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
- ์ธ๋ถ IPv4 ์ฃผ์์ ๊ฒฝ์ฐ ์์ ๋๋ ๊ณ ์ ์ธ๋ถ IPv4 ์ฃผ์๋ฅผ ์ ํํฉ๋๋ค.
- ์ธ๋ถ IPv6 ์ฃผ์์ ๊ฒฝ์ฐ ์์ ๋๋ ๊ณ ์ ์ธ๋ถ IPv6 ์ฃผ์๋ฅผ ์ ํํฉ๋๋ค.
- ์๋ฃ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
gcloud
์ ํ์ฌํญ: ๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ์์ฝํฉ๋๋ค.
๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ํ ๋นํ๋ ค๋ ๊ฒฝ์ฐ์๋ ์ฃผ์๋ฅผ ์์ฝํ๊ณ ํด๋น ์ฃผ์๊ฐ ๋ค๋ฅธ ๋ฆฌ์์ค์์ ์ฌ์ฉ๋๊ณ ์์ง ์์์ง ํ์ธํด์ผ ํฉ๋๋ค. ํ์ํ ๊ฒฝ์ฐ์๋ ์๋ด์ ๋ฐ๋ผ ์ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ์์ฝํ๊ฑฐ๋ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ํ ๋น ํด์ ํฉ๋๋ค.
์์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ์๋ ์ด ๋จ๊ณ๋ฅผ ๊ฑด๋ ๋ฐ๊ณ , Compute Engine์ด ์์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ๋ฌด์์๋ก ํ ๋นํ๋๋ก ํ ์ ์์ต๋๋ค.
๊ณ ์ ์ธ๋ถ IP ์ฃผ์ ํ ๋น ํด์ ์ ์ค๋ช ๋๋ก ๊ธฐ์กด IP ์ฃผ์ ํ ๋น์ ์ญ์ ํฉ๋๋ค.
์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ํ ๋นํฉ๋๋ค.
IPv4 ์ฃผ์๋ฅผ ํ ๋นํ๋ ค๋ฉด
instances add-access-config
ํ์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.์ฐธ๊ณ :IP_ADDRESS
๋ฅผ ๊ณ ์ IP ์ฃผ์์ ์ด๋ฆ์ผ๋ก ๋ฐ๊พธ์ง ๋ง์ธ์. ์ค์ IP ์ฃผ์๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.gcloud compute instances add-access-config INSTANCE_NAME \ --access-config-name="ACCESS_CONFIG_NAME" --address=IP_ADDRESS
๋ค์์ ๋ฐ๊ฟ๋๋ค.
INSTANCE_NAME
: ์ธ์คํด์ค ์ด๋ฆ์ ๋๋ค.ACCESS_CONFIG_NAME
: ์ก์ธ์ค ๊ตฌ์ฑ์ ์ด๋ฆ์ ๋๋ค. ๋ฐ์ดํ ์ฌ์ด์ ์ ์ฒด ์ด๋ฆ์ ํฌํจํด์ผ ํฉ๋๋ค.IP_ADDRESS
: ์ถ๊ฐํ IP ์ฃผ์์ ๋๋ค.
๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ ๋์ Compute Engine์ด ์์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ํ ๋นํ๋๋ก ํ๋ ค๋ฉด
--address IP_ADDRESS
์์ฑ์ ์๋ตํฉ๋๋ค.gcloud compute instances add-access-config INSTANCE_NAME \ --access-config-name="ACCESS_CONFIG_NAME"
์ธ์คํด์ค๋ฅผ ์ด์ค ์คํ์ผ๋ก ๋ณ๊ฒฝํ๊ณ IPv6 ์ฃผ์๋ฅผ ํ ๋นํ๋ ค๋ฉด
instance network-interfaces update
ํ์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.gcloud compute instances network-interfaces update INSTANCE_NAME \ --network-interface=NIC \ --ipv6-network-tier=PREMIUM \ --stack-type=STACK_TYPE \ --external-ipv6-address=IPV6_ADDRESS \ --external-ipv6-prefix-length=96 \ --zone=ZONE
๋ค์์ ๋ฐ๊ฟ๋๋ค.
INSTANCE_NAME
: ์ธ์คํด์ค ์ด๋ฆ์ ๋๋ค.NIC
: ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ์ด๋ฆ์ ๋๋ค.STACK_TYPE
: ์ธ์คํด์ค์ ์คํ ์ ํ์ผ๋กIPV4_IPV6
์ด์ด์ผ ํฉ๋๋ค. ์คํ ์ ํ์ IPV6_ONLY๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.IPV6_ADDRESS
: ์ธ์คํด์ค์ ํ ๋นํ IPv6 ์ฃผ์์ ๋๋ค./96
๋ฒ์์์ ์ฒซ ๋ฒ์งธ IPv6 ์ฃผ์๋ฅผ ์ง์ ํฉ๋๋ค.ZONE
: ์ธ์คํด์ค์ ์์ญ์ ๋๋ค.
REST
์ธ์คํด์ค์ ์ ์ก์ธ์ค ๊ตฌ์ฑ์ ์ถ๊ฐํ์ฌ ์ธ์คํด์ค์ ์ธ๋ถ IPv4 ๋๋ IPv6 ์ฃผ์๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
๊ณ ์ ์ธ๋ถ IP ์ฃผ์ ํ ๋น ํด์ ์ ์ค๋ช ๋๋ก ๊ธฐ์กด IP ์ฃผ์ ํ ๋น์ ์ญ์ ํฉ๋๋ค.
instances.deleteAccessConfig
๋ฉ์๋์POST
์์ฒญ์ ์ํํ์ฌ ๊ธฐ์กด ์ก์ธ์ค ๊ตฌ์ฑ์ ์ญ์ ํ์ธ์.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/deleteAccessConfig
instances.addAccessConfig
๋ฉ์๋์POST
์์ฒญ์ ์ํํ์ฌ ์ธ์คํด์ค์ ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ์ ์ก์ธ์ค ๊ตฌ์ฑ์ ์ถ๊ฐํฉ๋๋ค.IPv4 ์ฃผ์์ ๊ฒฝ์ฐ ๋ค์ ์์ฒญ์ ์ํํฉ๋๋ค.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/addAccessConfig { "natIP": "IPV4_ADDRESS", "name": "ACCESS_CONFIG_NAME" }
IPv6 ์ฃผ์์ ๊ฒฝ์ฐ ๋คํธ์ํฌ ์ธํฐํ์ด์ค์
stackType
์IPV4_IPV6
๋ก ์ ๋ฐ์ดํธํ๊ณnetworkInterfaces[].ipv6AccessConfigs[].externalIpv6
์์ฑ๊ณผ ์ฌ์ฉํ๋ ค๋ ์ธ๋ถ IPv6 ์ฃผ์๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.์์ธํ ๋ด์ฉ์ ์ ์ธ์คํด์ค์ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์ ํ ๋น์ ์ฐธ์กฐํ์ธ์.
Go
์๋ฐ
Python
์ธ๋ถ IP ์ฃผ์๋ฅผ ํน์ ์ธ์คํด์ค๋ก ์ ํ
ํน์ ์ํฌ๋ก๋์์๋ ๊ธฐ๋ณธ์ ์ธ ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ๋ณด์ ๋ฐ ๋คํธ์ํฌ ์ ํ์ฌํญ์ด ํฌํจ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ํน์ ์ปดํจํ ์ธ์คํด์ค๋ง ์ธ๋ถ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ๋๋ก ์ ํํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ฐ์ดํฐ ๋ฌด๋จ ๋ฐ์ถ์ ๋ฐฉ์งํ๊ฑฐ๋ ๋คํธ์ํฌ ๊ฒฉ๋ฆฌ๋ฅผ ์ ์งํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ์กฐ์ง ์ ์ฑ ์ ์ฌ์ฉํ๋ฉด ์กฐ์ง ๋๋ ํ๋ก์ ํธ ๋ด์์ ์ธ์คํด์ค์ ์ธ๋ถ IP ์ฃผ์ ์ฌ์ฉ์ ์ ์ดํ๋ ์ ์ฝ ์กฐ๊ฑด์ด ํฌํจ๋ ํน์ ์ธ์คํด์ค์์๋ง ์ธ๋ถ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ธ์คํด์ค์์ ์ธ๋ถ IP ์ฃผ์ ์ ์ด๋ฅผ ์ํ ์ ์ฝ ์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
constraints/compute.vmExternalIpAccess
์ ์ฝ ์กฐ๊ฑด์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ธ๋ถ IP ์ฃผ์๋ฅผ ํฌํจํ ์ ์๋ ์ธ์คํด์ค์ allowedList
๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฑ
์ ์ง์ ํฉ๋๋ค. ์ ์ฑ
์ ์ง์ ํ์ง ์์ผ๋ฉด ๋ชจ๋ ์ธ์คํด์ค์ ๋ชจ๋ ์ธ๋ถ IP ์ฃผ์๊ฐ ํ์ฉ๋ฉ๋๋ค. ์ ์ฑ
์ด ์ ์ฉ๋๋ฉด allowedValues
๋ชฉ๋ก์ ๋์ด๋ ์ธ์คํด์ค์๋ง ์ธ๋ถ IP ์ฃผ์(์์ ๋๋ ๊ณ ์ )๋ฅผ ํ ๋นํ ์ ์๊ณ , ์กฐ์ง ๋๋ ํ๋ก์ ํธ์์ ์ ์ฑ
์ ๋ช
์์ ์ผ๋ก ์ ์๋์ง ์์ ๋ค๋ฅธ Compute Engine ์ธ์คํด์ค๋ ์ธ๋ถ IP ์ฃผ์ ์ฌ์ฉ์ด ๊ธ์ง๋ฉ๋๋ค.
์ธ์คํด์ค๋ ํ์ฉ ๋ฐ ๊ฑฐ๋ถ ๋ชฉ๋ก์์ ์ธ์คํด์ค์ URI๋ฅผ ์ฌ์ฉํ์ฌ ์๋ณ๋ฉ๋๋ค.
projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
์ธ๋ถ IP ์ฃผ์ ์ ํ ์ฌ์
- ์ด ๋ชฉ๋ก ์ ์ฝ ์กฐ๊ฑด์ ์ธ์คํด์ค์๋ง ์ ์ฉํ ์ ์์ต๋๋ค.
- ์ด ์ ์ฝ์กฐ๊ฑด์ ์๊ธํด์ ์ ์ฉํ ์ ์์ต๋๋ค. ์ ์ฑ ์ ์ฌ์ฉ ์ค์ ํ๊ธฐ ์ ์ ์ธ๋ถ IP ์ฃผ์๊ฐ ์๋ ๋ชจ๋ ์ธ์คํด์ค๊ฐ ์ธ๋ถ IP ์ฃผ์๋ฅผ ์ ์งํฉ๋๋ค.
- ์ด ์ ์ฝ์กฐ๊ฑด์
allowedList
๋๋deniedList
๋ฅผ ํ์ฉํ์ง๋ง ๋์ผ ์ ์ฑ ์์ ๋ ๋ค ํ์ฉํ์ง๋ ์์ต๋๋ค. - ํ์ํ ๊ถํ์ด ์๋ ์ฌ์ฉ์ ๋๋ ๊ด๋ฆฌ์๊ฐ ์ธ์คํด์ค ์๋ช ์ฃผ๊ธฐ ๋ฐ ๋ฌด๊ฒฐ์ฑ์ ๊ด๋ฆฌ ๋ฐ ์ ์ง๋ณด์ํ ์ ์์ต๋๋ค. ์ด ์ ์ฝ ์กฐ๊ฑด์ ์ธ์คํด์ค์ URI๋ง ํ์ธํ๋ฉฐ, ํ์ฉ ๋ชฉ๋ก์ ์๋ ์ธ์คํด์ค๊ฐ ๋ณ๊ฒฝ, ์ญ์ ๋๋ ์ฌ์์ฑ๋๋ ๊ฒ์ ๋ฐฉ์งํ์ง ์์ต๋๋ค.
์ธ๋ถ IP ์ฃผ์๋ฅผ ์ ํํ๋ ๋ฐ ํ์ํ ๊ถํ
ํ๋ก์ ํธ ๋๋ ์กฐ์ง ์์ค์์ ์ ์ฝ์กฐ๊ฑด์ ์ค์ ํ๋ ค๋ฉด ํด๋น ์กฐ์ง์์ orgpolicy.policyAdmin
์ญํ ์ ๋ถ์ฌ ๋ฐ์์ผ ํฉ๋๋ค.
์กฐ์ง ์์ค์์ ์ ์ฑ ์ ์ฝ์กฐ๊ฑด ์ค์
์ฝ์
- ์กฐ์ง ์ ์ฑ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
- ํ์ํ ๊ฒฝ์ฐ ํ๋ก์ ํธ ๋๋กญ๋ค์ด ๋ฉ๋ด์์ ํ์ํ ์กฐ์ง์ ์ ํํฉ๋๋ค.
- VM ์ธ์คํด์ค์ ํ์ฉ๋๋ ์ธ๋ถ IP ์ ์๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ์์ ์ ํด๋ฆญํ์ฌ ์ธ๋ถ IP ์ ์ฑ ์ ์์ ํฉ๋๋ค. ์์ ๋๊ตฌ์ ์ก์ธ์คํ ์ ์์ผ๋ฉด ์ ์ ํ ๊ถํ์ด ์๋ ๊ฒ์ ๋๋ค.
๋ง์ถค์ค์ ์ ์ ํํ์ฌ ํน์ ์ธ์คํด์ค์ ์กฐ์ง ์ ์ฑ ์ ์ค์ ํฉ๋๋ค.
ํ์ํ ์ ์ฑ ์ํ ๋ฐ ์ ์ฑ ์ ํ์ ์ ํํฉ๋๋ค.
์ ์ฑ ๊ฐ์์ ์ปค์คํ ์ ์ ํํฉ๋๋ค.
์ธ์คํด์ค์ URI๋ฅผ ์ ๋ ฅํฉ๋๋ค. URI๋ ๋ค์๊ณผ ๊ฐ์ ํ์์ด์ด์ผ ํฉ๋๋ค.
projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
์ ์ ์ฑ ๊ฐ์ ํด๋ฆญํ๊ณ ํ์์ ๋ฐ๋ผ ์ธ์คํด์ค์ URI๋ฅผ ์ ๋ ฅํฉ๋๋ค.
์ ์ฅ์ ํด๋ฆญํ์ฌ ์ ์ฝ์กฐ๊ฑด์ ์ ์ฉํฉ๋๋ค.
gcloud
์ธ๋ถ IP ์ฃผ์์ ๋ํด ์ ์ฝ์กฐ๊ฑด์ ์ค์ ํ๋ ค๋ฉด ๋จผ์ ์กฐ์ง ID๊ฐ ํ์ํฉ๋๋ค. organizations list
๋ช
๋ น์ด๋ฅผ ์คํํ๊ณ ์๋ต์์ ์ซ์ ID๋ฅผ ์ฐพ์ ์กฐ์ง ID๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
gcloud organizations list
gcloud CLI๋ ์กฐ์ง ๋ชฉ๋ก์ ๋ค์ ํ์์ผ๋ก ๋ฐํํฉ๋๋ค.
DISPLAY_NAME ID example-organization1 29252605212 example-organization2 1234567890
gcloud resource-manager org-policies set-policy
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฑ
์ ์ค์ ํฉ๋๋ค. ์ ์ฑ
์ JSON ํ์ผ๋ก ์ ๊ณตํด์ผ ํฉ๋๋ค.
๋ค์ ํ์์ผ๋ก JSON ํ์ผ์ ๋ง๋ญ๋๋ค.
{ "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allowedValues": [ "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME", "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME", "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME" ] } }
๋ค์์ ๋ฐ๊ฟ๋๋ค.
PROJECT_ID
: ์์ฒญ์ ํ๋ก์ ํธ ID(์:example-project
). ์ด๋ ์กฐ์ง ์ซ์ ID๊ฐ ํ์ํ ์กฐ์ง ์ ์ฑ ์ค์ ๊ณผ ๋ค๋ฆ ๋๋ค.ZONE
: ์ธ์คํด์ค์ ์์ญINSTANCE_NAME
: ์ธ์คํด์ค ์ด๋ฆ์ ๋๋ค.
๋๋ deniedValues
๋ชฉ๋ก์ ์ง์ ํ์ฌ ์ธ๋ถ IP ์ฃผ์๋ฅผ ๊ฐ์ง ๋ชปํ๋๋ก ๋ช
์์ ์ผ๋ก ๊ธ์งํ ์ธ์คํด์ค๋ฅผ ํ์ํ ์๋ ์์ต๋๋ค.
๋ชฉ๋ก์ ์๋ ์ธ์คํด์ค๋ ๋ชจ๋ ์ธ๋ถ IP ์ฃผ์๋ฅผ ๊ฐ๋๋ก ์์์ ์ผ๋ก ํ์ฉ๋ฉ๋๋ค. allowedValues
๋๋ deniedValues
์ค ํ๋๋ฅผ ์ง์ ํ ์ ์์ง๋ง ๋ ๋ค ์ง์ ํ ์๋ ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ์์ฒญ์ ์ฌ์ฉํด์ ํ์ผ์ ์ ๋ฌํฉ๋๋ค.
gcloud resource-manager org-policies set-policy MY_POLICY.JSON --organization=ORGANIZATION_ID
ORGANIZATION_ID
๋ฅผ ์กฐ์ง์ ์ซ์ ID๋ก ๋ฐ๊ฟ๋๋ค.
์ธ์คํด์ค๊ฐ ์ธ๋ถ IP ์ฃผ์์ ์ก์ธ์คํ์ง ์๋๋ก ํ๋ ค๋ฉด allValues
๊ฐ DENY
๋ก ์ค์ ๋ ์ ์ฑ
์ ์ค์ ํ๋ฉด ๋ฉ๋๋ค.
{ "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allValues": "DENY" } }
REST
setOrgPolicy()
API๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฝ์กฐ๊ฑด์ ์ ์ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ง์ ํ๋ allowedValue
๋ชฉ๋ก์ ์ธ์คํด์ค๋ ์ธ๋ถ IP ์ฃผ์๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ๋๋ deniedValues
๋ชฉ๋ก์ ์ง์ ํ์ฌ ์ธ๋ถ IP ์ฃผ์๋ฅผ ๊ฐ์ง ๋ชปํ๋๋ก ๋ช
์์ ์ผ๋ก ๊ธ์งํ ์ธ์คํด์ค๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ๋ชฉ๋ก์ ์๋ ์ธ์คํด์ค๋ ๋ชจ๋ ์ธ๋ถ IP ์ฃผ์๋ฅผ ๊ฐ๋๋ก ์์์ ์ผ๋ก ํ์ฉ๋ฉ๋๋ค. allowedValues
๋๋ deniedValues
์ค ํ๋๋ฅผ ์ง์ ํ ์ ์์ง๋ง ๋ ๋ค ์ง์ ํ ์๋ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์์ ์กฐ์ง ๋ด ํน์ ํ๋ก์ ํธ์ ์ธ์คํด์ค๊ฐ ์ธ๋ถ IP ์ฃผ์๋ฅผ ๊ฐ๋ ๊ฒ์ด ํ์ฉ๋๋ compute.vmExternalIpAccess
์ ์ฝ ์กฐ๊ฑด์ ์กฐ์ง์ ์ ์ฉํ๊ธฐ ์ํ ์์ฒญ์
๋๋ค.
POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORGANIZATION_ID:setOrgPolicy
์ฌ๊ธฐ์ ORGANIZATION_ID
๋ ์กฐ์ง์ ์ซ์ ID์
๋๋ค.
์ด์ ์์ฒญ ๋ณธ๋ฌธ์์ ์ด ์ ์ฝ์กฐ๊ฑด์ ์ ์ฑ ์ ์ ๊ณตํฉ๋๋ค.
{ "policy": { "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allowedValues": [ "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME", "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME", "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME" ] } } }
์ธ์คํด์ค๊ฐ ์ธ๋ถ IP ์ฃผ์์ ์ก์ธ์คํ์ง ์๋๋ก ํ๋ ค๋ฉด allValues
๊ฐ DENY
๋ก ์ค์ ๋ ์ ์ฑ
์ ์ค์ ํ๋ฉด ๋ฉ๋๋ค.
{ "policy": { "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allValues": "DENY" } } }
ํ๋ก์ ํธ ์์ค์์ ์ ์ฑ ์ค์
ํ๋ก์ ํธ ์์ค์์ ์ ์ฑ
์ ์ค์ ํ๋ฉด ์กฐ์ง ์์ค์ ์ ์ฑ
์ด ์ฌ์ ์๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ์กฐ์ง ์์ค์์ allowedValues
๋ชฉ๋ก์ example-vm-1
์ด ์์ง๋ง, ํ๋ก์ ํธ ์์ค์ ์ ์ฑ
์์ deniedValues
๋ชฉ๋ก์ ๋์ผํ ์ธ์คํด์ค๊ฐ ์๋ ๊ฒฝ์ฐ ์ธ์คํด์ค๊ฐ ์ธ๋ถ IP ์ฃผ์๋ฅผ ๊ฐ๋ ๊ฒ์ด ํ์ฉ๋์ง ์์ต๋๋ค.
์ฝ์
์กฐ์ง ์์ค์์ ์ ์ฑ ์ ์ฝ์กฐ๊ฑด ์ค์ ์ ์ค๋ช ๋ ๊ฒ๊ณผ ๋์ผํ ์ ์ฐจ๋ฅผ ๋ฐ๋ฅด์ง๋ง, ์กฐ์ง ๋์ ํ๋ก์ ํธ ์ ํ๊ธฐ์์ ํ๋ก์ ํธ๋ฅผ ์ ํํฉ๋๋ค.
gcloud
gcloud resource-manager org-policies set-policy
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฑ
์ ์ค์ ํฉ๋๋ค. ์ ์ฑ
์ JSON ํ์ผ๋ก ์ ๊ณตํด์ผ ํฉ๋๋ค. ๋ค์ ํ์์ผ๋ก JSON ํ์ผ์ ๋ง๋ญ๋๋ค.
{ "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allowedValues": [ "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME" ] } }
๋ค์์ ๋ฐ๊ฟ๋๋ค.
PROJECT_ID
: ์์ฒญ์ ํ๋ก์ ํธ ID(์:example-project
). ์ด๋ ์กฐ์ง ์ซ์ ID๊ฐ ํ์ํ ์กฐ์ง ์ ์ฑ ์ค์ ๊ณผ ๋ค๋ฆ ๋๋ค.ZONE
: ์ธ์คํด์ค์ ์์ญ์ ๋๋ค.INSTANCE_NAME
: ์ธ์คํด์ค ์ด๋ฆ์ ๋๋ค.
๋๋ ์ธ๋ถ IP ์ฃผ์๋ฅผ ๊ฐ์ง ๋ชปํ๋๋ก ๋ช
์์ ์ผ๋ก ๊ธ์งํ ์ธ์คํด์ค์ deniedValues
๋ชฉ๋ก์ ์ง์ ํ ์ ์์ต๋๋ค. ๋ชฉ๋ก์ ์๋ ์ธ์คํด์ค๋ ๋ชจ๋ ์ธ๋ถ IP ์ฃผ์๋ฅผ ๊ฐ๋๋ก ์์์ ์ผ๋ก ํ์ฉ๋ฉ๋๋ค.
allowedValues
๋๋ deniedValues
์ค ํ๋๋ฅผ ์ง์ ํ ์ ์์ง๋ง ๋ ๋ค ์ง์ ํ ์๋ ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ์์ฒญ์ ์ฌ์ฉํด์ ํ์ผ์ ์ ๋ฌํฉ๋๋ค.
gcloud resource-manager org-policies set-policy MY_POLICY.JSON --project=example-project
REST
setOrgPolicy
API๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฝ์กฐ๊ฑด์ ์ ์ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ง์ ํ๋ allowedValue
๋ชฉ๋ก์ ์ธ์คํด์ค๋ ์ธ๋ถ IP ์ฃผ์๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ๋๋ deniedValues
๋ชฉ๋ก์ ์ง์ ํ์ฌ ์ธ๋ถ IP ์ฃผ์๋ฅผ ๊ฐ์ง ๋ชปํ๋๋ก ๋ช
์์ ์ผ๋ก ๊ธ์งํ ์ธ์คํด์ค๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ๋ชฉ๋ก์ ์๋ ์ธ์คํด์ค๋ ๋ชจ๋ ์ธ๋ถ IP ์ฃผ์๋ฅผ ๊ฐ๋๋ก ์์์ ์ผ๋ก ํ์ฉ๋ฉ๋๋ค. allowedValues
๋๋ deniedValues
์ค ํ๋๋ง ์ง์ ํ ์ ์์ผ๋ฉฐ ๋ ๋ค ์ง์ ํ ์๋ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์์ ํน์ ์ธ์คํด์ค๊ฐ ์ธ๋ถ IP ์ฃผ์๋ฅผ ๊ฐ๋ ๊ฒ์ ํ์ฉํ๋ compute.vmExternalIpAccess
์ ์ฝ ์กฐ๊ฑด์ ํ๋ก์ ํธ์ ์ค์ ํ๊ธฐ ์ํ ์์ฒญ์
๋๋ค.
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setOrgPolicy
PROJECT_ID
๋ฅผ ์ด ์์ฒญ์ ํ๋ก์ ํธ ID๋ก ๋ฐ๊พธ์ธ์.
์์ฒญ ๋ณธ๋ฌธ์๋ ์ด ์ ์ฝ์กฐ๊ฑด์ ์ ์ฑ ์ด ํฌํจ๋ฉ๋๋ค.
{ "policy": { "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allowedValues": [ "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME" ] } } }
์ธ๋ถ IP ์ฃผ์ ์ ํ ๊ด๋ จ ๊ถ์ฅ์ฌํญ
์ด ์ ์ฝ ์กฐ๊ฑด๊ณผ ํจ๊ป
deniedValues
๋ชฉ๋ก์ ์ฌ์ฉํ์ง ๋ง์ธ์.deniedValues
๋ชฉ๋ก์ ๊ฐ์ ์ ์ํ๋ฉดdeniedValues
๋ชฉ๋ก์ ์๋ ์ธ์คํด์ค๋ง ์ธ๋ถ IP ์ฃผ์ ์ฌ์ฉ์ด ์ ํ๋ฉ๋๋ค. ์ธ๋ถ IP ์ฃผ์๋ฅผ ํฌํจํ ์ ์๋ ์ธ์คํด์ค๋ฅผ ์ ํํ๊ฒ ์ ์ดํด์ผ ํ ๊ฒฝ์ฐ, ์ด ๋ฐฉ์์ ๋ณด์์ ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค.allowedValues
๋ชฉ๋ก์์ ํน์ ์ธ์คํด์ค๋ฅผ ์ญ์ ํ๋ ค๋ฉด, ์ธ์คํด์ค๋ฅผ ํ์ ๊ณ์ธต์deniedValues
๋ชฉ๋ก์ ๋ฃ๋ ๋์allowedList
์์ ์ธ์คํด์ค๋ฅผ ์ญ์ ํ๋๋ก ๊ธฐ์กด ์ ์ฑ ์ ์ ๋ฐ์ดํธํฉ๋๋ค.๋ฆฌ์์ค ๊ณ์ธต์ ๋๋ถ๋ถ์ ์ ์ฉํ ์ ์ฑ ์ ์ค์ ํ๋ ํน์ ํ๋ก์ ํธ๋ฅผ ์ ์ธ์ํค๋ ค๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ์ ์ฑ ์ ๋ณต์ํด์ผ ํฉ๋๋ค. ์ด๋ ํ๋ก์ ํธ์ ๋ชจ๋ ์ธ์คํด์ค๊ฐ ์ธ๋ถ IP ์ฃผ์์ ์ฐ๊ฒฐ๋ ์ ์๋๋ก
restoreDefault
๊ฐ์ฒด๋ฅผ ์ง์ ํ์ฌsetOrgPolicy
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. ํ๋ก์ ํธ์ ํ์ฌ ์ ์ฑ ์ ๊ธฐ๋ณธ ์ค์ ์ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.ํ๊ฒฝ์ ๋ณด๋ค ํจ๊ณผ์ ์ผ๋ก ์ ์ดํ๋ ค๋ฉด ์กฐ์ง ์ ์ฑ ์ IAM ์ญํ ๊ณผ ํจ๊ป ์ฌ์ฉํฉ๋๋ค. ์ด ์ ์ฑ ์ ์ธ์คํด์ค์๋ง ์ ์ฉ๋์ง๋ง, ๋คํธ์ํฌ ๊ธฐ๊ธฐ์์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ๋ ํจ๊ณผ์ ์ผ๋ก ์ ์ดํ๊ณ ์ ํํ๋ ค๋ ๊ฒฝ์ฐ ์ ์ ํ ๋น์ฌ์์๊ฒ
compute.networkAdmin
์ญํ ์ ๋ถ์ฌํ ์ ์์ต๋๋ค.์ ์ฑ ์ด ์ฌ์ฉ ์ค์ ๋ ์ํ๋ก Compute Engine์์ ์คํ๋๊ณ ์๋ ์กฐ์ง ๋๋ ํ๋ก์ ํธ ๋ด์ ๋ชจ๋ ์๋น์ค ๋ฐ ์ ํ์ ์ด ์กฐ์ง ์ ์ฑ ์ ์ํฅ์ ๋ฐ์ต๋๋ค. ํนํ Google Kubernetes Engine, Dataflow, Dataproc, Cloud SQL ๊ฐ์ ์๋น์ค๊ฐ ์ด ์ ์ฑ ์ ์ํฅ์ ๋ฐ์ต๋๋ค. ์ด๊ฒ์ด ๋ฌธ์ ๊ฐ ๋ ๊ฒฝ์ฐ์๋ ์กฐ์ง ์ ์ฑ ์ด ์ ์ฉ๋์ง ์๋ ๋ค๋ฅธ ํ๋ก์ ํธ์์ ๋ค๋ฅธ ์๋น์ค ๋ฐ ์ ํ์ ์ค์ ํ๊ณ ํ์ํ ๊ฒฝ์ฐ ๊ณต์ VPC๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ณ ์ ์ธ๋ถ IP ์ฃผ์ ๊ด๋ฆฌ
๋ค์ ์น์ ์์๋ ์ธ์คํด์ค์ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
๋ด๋ถ IP ์ฃผ์๊ฐ ์์ ์ฃผ์ ๋๋ ๊ณ ์ ์ฃผ์์ธ์ง ํ์ธ
๊ณ ์ ๋ฐ ์์ ๋ด๋ถ IP ์ฃผ์๋ ๋๋ถ๋ถ์ ์ํฉ์์ ๋ชจ์๊ณผ ๋์์ด ๋์ผํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ณ ์ ๋ด๋ถ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฆฌ์์ค๋ฅผ ์ญ์ ํ๊ณ ๋ค์ ๋ง๋๋ ๊ฒฝ์ฐ์๋ ๋์ผํ ๋ฆฌ์์ค์ ๊ฐ์ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์์ IP ์ฃผ์๋ ๋ฆฌ์์ค๋ฅผ ์ค์งํ๊ฑฐ๋ ์ญ์ ํ ๋ ํด์ ๋ฉ๋๋ค.
์ฃผ์๊ฐ ๊ณ ์ ์ฃผ์ ๋๋ ์์ ์ฃผ์์ธ์ง ํ์ธํ๋ ค๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
Google Cloud ์ฝ์์์ IP ์ฃผ์ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋ชฉ๋ก์์ ์ฃผ์๋ฅผ ์ฐพ๊ณ ์ ํ ์ด์์ IP ์ฃผ์ ์ ํ์ ํ์ธํฉ๋๋ค.
๊ณ ์ ์ธ๋ถ IP ์ฃผ์ ํ ๋น ํด์
IP ์ฃผ์๋ฅผ ํ ๋น ํด์ ํ๋ฉด ๋ฆฌ์์ค์์ ์ญ์ ๋์ง๋ง, IP ์ฃผ์๋ฅผ ์์ฝ๋ ์ํ๋ก ์ ์งํฉ๋๋ค. IP ์ฃผ์๋ฅผ ํ ๋น ํด์ ํ๋ฉด IP ์ฃผ์๋ฅผ ๋ค๋ฅธ ๋ฆฌ์์ค์ ๋ค์ ํ ๋นํ ์ ์์ต๋๋ค. ์ด ์ ์ฐจ๋ ์ด์ค ์คํ ์ธ์คํด์ค์๋ ์ง์๋์ง๋ง IPv6 ์ ์ฉ ์ธ์คํด์ค์๋ ์ง์๋์ง ์์ต๋๋ค.
์ธ์คํด์ค๋ฅผ ์ญ์ ํ์ฌ IPv4 ๋๋ IPv6 ์ฃผ์๋ฅผ ํ ๋น ํด์ ํ ์๋ ์์ต๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ IP ์ฃผ์ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์ธ๋ถ IP ์ฃผ์๋ฅผ ํด๋ฆญํฉ๋๋ค.
ํ ๋น ํด์ ํ๋ ค๋ ๊ณ ์ IP ์ฃผ์๋ฅผ ์ ํํฉ๋๋ค.
์์ ๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ๊ณ ๋ค๋ฅธ ๋ฆฌ์์ค์ ์ฌํ ๋น ์ต์ ์ ์ ํํฉ๋๋ค.
์ฐ๊ฒฐ ๋์ ๋๋กญ๋ค์ด ๋ชฉ๋ก์์ ์์์ ์ ํํฉ๋๋ค.
ํ์ธ์ ํด๋ฆญํฉ๋๋ค.
gcloud
gcloud compute addresses list
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ณ ์ IP ์ฃผ์๊ฐ ์ฌ์ฉ ์ค์ธ์ง ํ์ธํฉ๋๋ค.gcloud compute addresses list
์ถ๋ ฅ์ ๋ค์๊ณผ ๋น์ทํฉ๋๋ค.
NAME REGION ADDRESS STATUS example-address-ipv4 REGION 198.51.100.1 RESERVED example-address-new-ipv4 REGION 203.0.113.1 IN_USE example-address-ipv6 REGION 2001:db8:1:1:1:1:1:1 RESERVED example-address-new-ipv6 REGION 2001:db8:4:4:4:4:4:4 IN_USE
- IP ์ฃผ์๊ฐ ์ฌ์ฉ ์ค์ด ์๋๋ฉด ์ํ๋
RESERVED
์ ๋๋ค. - IP ์ฃผ์๊ฐ ์ฌ์ฉ ์ค์ด๋ฉด ์ํ๋
IN_USE
์ ๋๋ค.
- IP ์ฃผ์๊ฐ ์ฌ์ฉ ์ค์ด ์๋๋ฉด ์ํ๋
IP ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ ์ธ์คํด์ค์ ์ด๋ฆ์ ๊ฒ์ํฉ๋๋ค.
gcloud compute addresses describe ADDRESS_NAME \ --region=REGION
๋ค์์ ๋ฐ๊ฟ๋๋ค.
ADDRESS_NAME
: IPv6 ์ฃผ์ ๋ฆฌ์์ค์ ์ด๋ฆREGION
: IPv6 ์ฃผ์ ๋ฆฌ์์ค์ ๋ฆฌ์
์ถ๋ ฅ์ ๋ค์๊ณผ ๋น์ทํฉ๋๋ค.
address: IP_ADDRESS addressType: EXTERNAL ... region: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/addresses/ADDRESS_NAME status: IN_USE subnetwork: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNET users: - https://www.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances/INSTANCE_NAME
users
ํ๋์ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ ์ธ์คํด์ค์ ์ด๋ฆ์ด ํ์๋ฉ๋๋ค.์ธ์คํด์ค์์ IP ์ฃผ์๋ฅผ ํ ๋น ํด์ ํฉ๋๋ค.
IPv4 ์ฃผ์๋ฅผ ํ ๋น ํด์ ํ๋ ค๋ฉด ์ธ์คํด์ค ์ก์ธ์ค ๊ตฌ์ฑ ํ์ผ์ ์ญ์ ํฉ๋๋ค.
์ญ์ ํ๋ ค๋ ์ก์ธ์ค ๊ตฌ์ฑ์ ์ด๋ฆ์ ๊ฐ์ ธ์ต๋๋ค. ์ด๋ฆ์ ๊ฐ์ ธ์ค๋ ค๋ฉด
gcloud compute instances describe
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.INSTANCE_NAME
์ ์ธ์คํด์ค ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.gcloud compute instances describe INSTANCE_NAME
์ก์ธ์ค ๊ตฌ์ฑ์ ๋ค์ ํ์์ผ๋ก ํ์๋ฉ๋๋ค.
networkInterfaces: - accessConfigs: - kind: compute#accessConfig name: external-nat natIP: 203.0.113.1 type: ONE_TO_ONE_NAT
gcloud compute instances delete-access-config
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ก์ธ์ค ๊ตฌ์ฑ์ ์ญ์ ํฉ๋๋ค.gcloud compute instances delete-access-config INSTANCE_NAME \ --access-config-name="ACCESS_CONFIG_NAME"
๋ค์์ ๋ฐ๊ฟ๋๋ค.
INSTANCE_NAME
: ์ธ์คํด์ค ์ด๋ฆ์ ๋๋ค.ACCESS_CONFIG_NAME
: ์ญ์ ํ ์ก์ธ์ค ๊ตฌ์ฑ์ ์ด๋ฆ. ๋ฐ์ดํ ์ฌ์ด์ ์ ์ฒด ์ด๋ฆ์ ํฌํจํด์ผ ํฉ๋๋ค.
IPv6 ์ฃผ์ ๋ฒ์๋ฅผ ํ ๋น ํด์ ํ๋ ค๋ฉด
instance network-interfaces update
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.gcloud compute instances network-interfaces update INSTANCE_NAME \ --network-interface=nic0 \ --stack-type=IPV4_ONLY \ --zone=ZONE
๋ค์์ ๋ฐ๊ฟ๋๋ค.
INSTANCE_NAME
: IP ์ฃผ์๋ฅผ ์ฌ์ฉํ๊ณ ์๋ ์ธ์คํด์ค์ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.ZONE
: ์ธ์คํด์ค์ ์์ญ์ ๋๋ค.
๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ ์ ์๊ณ
IN_USE
๋์RESERVED
๋ก ํ์๋์๋์ง ํ์ธํฉ๋๋ค.gcloud compute addresses list \ --filter="ADDRESS_NAME AND region=REGION"
๋ค์์ ๋ฐ๊ฟ๋๋ค.
ADDRESS_NAME
: IP ์ฃผ์ ๋ฆฌ์์ค์ ์ด๋ฆREGION
: IP ์ฃผ์ ๋ฆฌ์์ค์ ๋ฆฌ์
์ด์ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก, ์ด๋ฅผ ๋ค๋ฅธ ์ธ์คํด์ค์ ํ ๋นํ๋๋ก ์ ํํ ์ ์์ต๋๋ค.
REST
๊ณ ์ ์ธ๋ถ IPv4 ๋๋ IPv6 ์ฃผ์๋ฅผ ํ ๋น ํด์ ํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ์ํํฉ๋๋ค.
IPv4 ์ฃผ์์ ๊ฒฝ์ฐ ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ ์ธ์คํด์ค์ ์ฐ๊ฒฐ๋ ์ก์ธ์ค ๊ตฌ์ฑ์ ์ญ์ ํฉ๋๋ค.
์ธ์คํด์ค์ ์ก์ธ์ค ๊ตฌ์ฑ ์ธ๋ถ์ ๋ณด๋ฅผ ํ์ธํ๋ ค๋ฉด
instances.get
๋ฉ์๋์GET
์์ฒญ์ ์ํํ์ธ์.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
instances.deleteAccessConfig
๋ฉ์๋์POST
์์ฒญ์ ์ํํ์ฌ ๊ธฐ์กด ์ก์ธ์ค ๊ตฌ์ฑ์ ์ญ์ ํ์ธ์.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/deleteAccessConfig
๋ค์์ ๋ฐ๊ฟ๋๋ค.
PROJECT_ID
: ์ด ์์ฒญ์ ํ๋ก์ ํธ ID์ ๋๋ค.ZONE
: ์ธ์คํด์ค๊ฐ ์๋ ์์ญINSTANCE_NAME
: ์ธ์คํด์ค ์ด๋ฆ์ ๋๋ค.
IPv6 ์ฃผ์์ ๊ฒฝ์ฐ IPv6 ์ฃผ์๊ฐ ์ฐ๊ฒฐ๋ ์ธ์คํด์ค์ ๋ํ ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ์คํ ์ ํ์ ์ ๋ฐ์ดํธํฉ๋๋ค.
instances.updateNetworkInterface
๋ฉ์๋์ ๋ํดPATCH
์์ฒญ์ ์คํํฉ๋๋ค.์์ฒญ ๋ณธ๋ฌธ์์
stackType
ํ๋ ๊ฐ์IPV4_ONLY
๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateNetworkInterface { "networkInterfaces": [{ ... "stackType" : "IPV4_ONLY" ... }] }
์๋ฐ
Python
๊ณ ์ ์ธ๋ถ IP ์ฃผ์ ํด์
๊ณ ์ ์ธ๋ถ IPv4 ๋๋ IPv6 ์ฃผ์๊ฐ ๋ ์ด์ ํ์ํ์ง ์์ผ๋ฉด IP ์ฃผ์ ๋ฆฌ์์ค๋ฅผ ์ญ์ ํ์ฌ IP ์ฃผ์๋ฅผ ํด์ ํ ์ ์์ต๋๋ค. ์ธ์คํด์ค๋ฅผ ์ญ์ ํด๋ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์๊ฐ ์๋์ผ๋ก ํด์ ๋์ง ์์ต๋๋ค. ๋ ์ด์ ํ์ํ์ง ์์ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ ์๋์ผ๋ก ํด์ ํด์ผ ํฉ๋๋ค.
๊ณ ์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ํด์ ํ๋ ค๋ฉด VPC ๋ฌธ์์ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์ ํด์ ๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ค์ ๋จ๊ณ
- IP ์ฃผ์์ ๋ํด ์์ธํ ์์๋ณด๊ธฐ
- ๋คํธ์ํฌ ๋ฐ ๋ฐฉํ๋ฒฝ์ ๋ํด ์์ธํ ์์๋ณด๊ธฐ
- ๋ด๋ถ DNS๋ฅผ ์ฌ์ฉํ์ฌ Compute Engine ์ธ์คํด์ค ์ฃผ์๋ฅผ ํ์ธํ๋ ๋ฐฉ๋ฒ ์์ธํ ์์๋ณด๊ธฐ
- VPC ๊ฐ๊ฒฉ ์ฑ ์ ์ดํด๋ณด๊ธฐ