์ปค์Šคํ…€ ์ฃผ์†Œ ๋ฒ”์œ„ ๊ณต์ง€

Cloud Router์—์„œ ์ปค์Šคํ…€ ๊ณต์ง€ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ Cloud Router์˜ ๊ฒฝ๊ณ„ ๊ฒŒ์ดํŠธ์›จ์ด ํ”„๋กœํ† ์ฝœ(BGP) ์„ธ์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ Virtual Private Cloud(VPC) ๋„คํŠธ์›Œํฌ์˜ ์„œ๋ธŒ๋„ท IP ์ฃผ์†Œ ๋ฒ”์œ„ ์ด์™ธ์˜ IP ์ฃผ์†Œ ๋ฒ”์œ„๋ฅผ ๊ณต์ง€ํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด VPC ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋œ ๋‹ค๋ฅธ VPC ๋„คํŠธ์›Œํฌ์˜ IP ์ฃผ์†Œ ๋ฒ”์œ„์—์„œ ์™ธ๋ถ€ IP ์ฃผ์†Œ ๋ฒ”์œ„, ์ž„์˜์˜ ๋‚ด๋ถ€ IP ์ฃผ์†Œ ๋ฒ”์œ„ ๋˜๋Š” ๋‚ด๋ถ€ IP ์ฃผ์†Œ๋ฅผ ๊ณต์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. VPC ๋„คํŠธ์›Œํฌ๋Š” Network Connectivity Center์˜ VPC ๋„คํŠธ์›Œํฌ ํ”ผ์–ด๋ง ๋˜๋Š” VPC ์Šคํฌํฌ๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Cloud Router๊ฐ€ ๊ธฐ๋ณธ ๊ณต์ง€ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ Cloud Router์™€ ๋™์ผํ•œ VPC ๋„คํŠธ์›Œํฌ์— ์†ํ•˜๋Š” ์„œ๋ธŒ๋„ท์˜ ๊ฒฝ๋กœ๋งŒ ๊ณต์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“œ์—์„œ Cloud Router๋Š” ๋‹ค๋ฅธ VPC ๋„คํŠธ์›Œํฌ์—์„œ ๋™์ ์œผ๋กœ ํ•™์Šต๋œ ์ •์  ๊ฒฝ๋กœ(์˜ˆ: VPC ๋„คํŠธ์›Œํฌ ํ”ผ์–ด๋ง ๋˜๋Š” Network Connectivity Center์˜ VPC ์Šคํฌํฌ์—์„œ ํ•™์Šต๋œ ๊ฒฝ๋กœ)๋ฅผ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค.

Cloud Router๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ BGP ์„ธ์…˜์„ ๊ตฌ์„ฑํ•  ๋•Œ ์ปค์Šคํ…€ ๊ณต์ง€ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•˜๋ ค๋ฉด Cloud Router ๋งŒ๋“ค๊ธฐ ๋˜๋Š” BGP ์„ธ์…˜ ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—

gcloud

์ด ๊ฐ€์ด๋“œ์˜ ๋ช…๋ น์ค„ ์˜ˆ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์„ธ์š”.

  1. ์ตœ์‹  ๋ฒ„์ „์˜ Google Cloud CLI๋ฅผ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
  2. ๊ธฐ๋ณธ ๋ฆฌ์ „ ๋ฐ ์˜์—ญ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

API

์ด ๊ฐ€์ด๋“œ์˜ API ์˜ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด API ์•ก์„ธ์Šค๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

Cloud Router์—์„œ ์ปค์Šคํ…€ ๊ณต์ง€ ๊ฒฝ๋กœ ์ง€์ •

๊ธฐ์กด Cloud Router์—์„œ ์ปค์Šคํ…€ ๊ณต์ง€ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ Cloud Routers ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    Cloud Router๋กœ ์ด๋™

  2. ์—…๋ฐ์ดํŠธํ•  Cloud Router๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. ๋ผ์šฐํ„ฐ ์„ธ๋ถ€์ •๋ณด ํŽ˜์ด์ง€์—์„œ ์ˆ˜์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ๊ณต์ง€๋œ ๊ฒฝ๋กœ ์„น์…˜์—์„œ ๊ฒฝ๋กœ์— ๋Œ€ํ•ด ์ปค์Šคํ…€ ๊ฒฝ๋กœ ๋งŒ๋“ค๊ธฐ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  5. Cloud Router์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ธŒ๋„ท์„ ๊ณ„์† ๊ณต์ง€ํ•˜๋ ค๋ฉด Cloud Router์— ํ‘œ์‹œ๋˜๋Š” ๋ชจ๋“  ์„œ๋ธŒ๋„ท ๊ณต์ง€ ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ฉด ๊ธฐ๋ณธ ๊ณต์ง€ ๋ชจ๋“œ์—์„œ Cloud Router์˜ ๋™์ž‘์„ ๋ชจ๋ฐฉํ•ฉ๋‹ˆ๋‹ค.

  6. ๊ณต์ง€ ๊ฒฝ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ์ปค์Šคํ…€ ๊ฒฝ๋กœ ์ถ”๊ฐ€๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  7. ์ปค์Šคํ…€ ๊ณต์ง€ ๊ฒฝ๋กœ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    • ์†Œ์Šค: ์ปค์Šคํ…€ IP ๋ฒ”์œ„๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    • IP ์ฃผ์†Œ ๋ฒ”์œ„: CIDR ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปค์Šคํ…€ IP ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

      IPv4 ๋ฐ IPv6 ์ปค์Šคํ…€ IP ๋ฒ”์œ„๋ฅผ ๋ชจ๋‘ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ IPv6 ์ปค์Šคํ…€ ๋ฒ”์œ„๋Š” IPv6๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ BGP ์„ธ์…˜์—์„œ๋งŒ ๊ณต์ง€๋ฉ๋‹ˆ๋‹ค.

      ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ ์—†์ด IP ์ฃผ์†Œ ์ ‘๋‘์‚ฌ๋ฅผ ์ œ๊ณตํ•˜๋ฉด IPv4์šฉ /32 ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ ๋ฐ IPv6์šฉ /128๋กœ ํ•ด์„๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปค์Šคํ…€ ํ•™์Šต๋œ ๊ฒฝ๋กœ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ•œ๋„๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    • ์„ค๋ช…: ์ด ์ปค์Šคํ…€ ๊ณต์ง€ ๊ฒฝ๋กœ์˜ ๋ชฉ์ ์„ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์„ค๋ช…์„ ์ถ”๊ฐ€ํ•œ ํ›„ ์™„๋ฃŒ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  8. ์ปค์Šคํ…€ ๊ณต์ง€ ๊ฒฝ๋กœ ์ถ”๊ฐ€๋ฅผ ๋งˆ์นœ ํ›„ ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

update ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ปค์Šคํ…€ IP ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜๋ ค๋ฉด --set-advertisement-ranges ํ”Œ๋ž˜๊ทธ ๋˜๋Š” --add-advertisement-ranges ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  1. --set-advertisement-ranges ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ ๋ชจ๋“  ์ปค์Šคํ…€ ๊ณต์ง€๊ฐ€ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค.

    gcloud compute routers update ROUTER_NAME \
       --project=PROJECT_ID \
       --advertisement-mode custom \
       --set-advertisement-groups=ADVERTISED_GROUPS \
       --set-advertisement-ranges=ADVERTISED_IP_RANGES
    

    ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • ROUTER_NAME: Cloud Router์˜ ์ด๋ฆ„
    • PROJECT_ID: Cloud Router๋ฅผ ํฌํ•จํ•˜๋Š” ํ”„๋กœ์ ํŠธ
    • ADVERTISED_GROUPS: Cloud Router๊ฐ€ ๋™์ ์œผ๋กœ ๊ณต์ง€ํ•˜๋Š” Google ์ •์˜ ๊ทธ๋ฃน

      ์œ ์ผํ•˜๊ฒŒ ์œ ํšจํ•œ ๊ฐ’์€ all_subnets๋กœ, VPC ๋„คํŠธ์›Œํฌ์˜ ๋™์  ๋ผ์šฐํŒ… ๋ชจ๋“œ์— ๋”ฐ๋ผ ์„œ๋ธŒ๋„ท์„ ๊ณต์ง€ํ•ฉ๋‹ˆ๋‹ค(๊ธฐ๋ณธ ๊ณต์ง€ ๋ชจ๋“œ์™€ ๋น„์Šทํ•จ).

    • ADVERTISED_IP_RANGES: IP ์ฃผ์†Œ ๋ฒ”์œ„์˜ ์ƒˆ ๋ฐฐ์—ด์˜ ์ฝ˜ํ…์ธ 

      IPv4 ๋ฐ IPv6 ์ปค์Šคํ…€ IP ๋ฒ”์œ„๋ฅผ ๋ชจ๋‘ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ IPv6 ์ปค์Šคํ…€ ๋ฒ”์œ„๋Š” IPv6๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ BGP ์„ธ์…˜์—์„œ๋งŒ ๊ณต์ง€๋ฉ๋‹ˆ๋‹ค.

      ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ ์—†์ด IP ์ฃผ์†Œ ์ ‘๋‘์‚ฌ๋ฅผ ์ œ๊ณตํ•˜๋ฉด IPv4์šฉ /32 ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ ๋ฐ IPv6์šฉ /128๋กœ ํ•ด์„๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปค์Šคํ…€ ํ•™์Šต๋œ ๊ฒฝ๋กœ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ•œ๋„๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    ๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” ๋ชจ๋“  ์„œ๋ธŒ๋„ท๊ณผ ์ปค์Šคํ…€ IP ๋ฒ”์œ„ 192.0.2.0/24 ๋ฐ 198.51.100.0/24์„ ๊ณต์ง€ํ•˜๋„๋ก my-router Cloud Router๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute routers update my-router \
       --advertisement-mode custom \
       --set-advertisement-groups=all_subnets \
       --set-advertisement-ranges='192.0.2.0/24,198.51.100.0/24'
    

    ๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” my-router Cloud Router๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ๋ชจ๋“  ์„œ๋ธŒ๋„ท ๋ฐ ๊ธฐ๋ณธ IPv6 ๋ฒ”์œ„๋ฅผ ๊ณต์ง€ํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute routers update my-router \
       --advertisement-mode custom \
       --set-advertisement-groups=all_subnets \
       --set-advertisement-ranges='2001:db8:abcd:12::/64'
    

    Cloud Router๋Š” IPv6์— ์‚ฌ์šฉ ์„ค์ •๋œ BGP ์„ธ์…˜์—์„œ๋งŒ IPv6 ๋ฒ”์œ„๋ฅผ ๊ณต์ง€ํ•ฉ๋‹ˆ๋‹ค.

    --set-advertisement-groups ํ”Œ๋ž˜๊ทธ๋Š” Cloud Router๊ฐ€ ๋™์ ์œผ๋กœ ๊ณต์ง€ํ•˜๋Š” Google ์ •์˜ ๊ทธ๋ฃน์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. --set-advertisement-groups ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ญ์ œํ•˜์—ฌ ์„œ๋ธŒ๋„ท ๊ณต์ง€๋ฅผ ์ œ์™ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒด ๊ณต์ง€ ๊ทธ๋ฃน ๋ชฉ๋ก์€ Google SDK ๋ฌธ์„œ์˜ set-advertisement-groups ํ”Œ๋ž˜๊ทธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  2. --add-advertisement-ranges ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Cloud Router์˜ ๊ณต์ง€ ๋ชจ๋“œ๊ฐ€ ์ด๋ฏธ custom์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute routers update ROUTER_NAME \
       --add-advertisement-ranges=ADVERTISED_IP_RANGES
    

    ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • ROUTER_NAME: Cloud Router์˜ ์ด๋ฆ„
    • ADVERTISED_IP_RANGES: IP ์ฃผ์†Œ ๋ฒ”์œ„์˜ ์ƒˆ ๋ฐฐ์—ด์˜ ์ฝ˜ํ…์ธ 

    ๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” 203.0.113.1 ์ปค์Šคํ…€ IP ์ฃผ์†Œ๋ฅผ Cloud Router์˜ ๊ณต์ง€์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute routers update my-router \
       --add-advertisement-ranges='203.0.113.1'
    

    ๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” 2001:db8:abcd:12::/64 ์ปค์Šคํ…€ IPv6 ๋ฒ”์œ„๋ฅผ Cloud Router์˜ ๊ณต์ง€์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute routers update my-router \
       --add-advertisement-ranges='2001:db8:abcd:12::/64'
    

    Cloud Router๋Š” IPv6์— ์‚ฌ์šฉ ์„ค์ •๋œ BGP ์„ธ์…˜์—์„œ๋งŒ IPv6 ๋ฒ”์œ„๋ฅผ ๊ณต์ง€ํ•ฉ๋‹ˆ๋‹ค.

API

routers.patch ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ bgp.advertisedGroups[] ๋ฐ bgp.advertisedIpRanges[] ํ•„๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์„ธ์š”.

bgp.advertisedGroups[] ๋ฐ bgp.advertisedIpRanges[] ํ•„๋“œ๋Š” ๊ณต์ง€๋œ ๊ทธ๋ฃน ๋ฐ ๊ณต์ง€๋œ IP ์ฃผ์†Œ ๋ฒ”์œ„์˜ ๋ฐฐ์—ด์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ•„๋“œ๋ฅผ PATCHํ•˜๋ฉด ๊ธฐ์กด ๋ฐฐ์—ด์„ ์š”์ฒญ์— ์žˆ๋Š” ์ƒˆ ๋ฐฐ์—ด๋กœ ๋ฎ์–ด์”๋‹ˆ๋‹ค.

  1. GET ์š”์ฒญ์„ ๋ณด๋‚ด ๋ผ์šฐํ„ฐ์˜ ๊ณต์ง€๋œ ๊ทธ๋ฃน ๋ฐ ๊ณต์ง€๋œ IP ์ฃผ์†Œ ๋ฒ”์œ„์˜ ํ˜„์žฌ ๋ฐฐ์—ด์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ BGP ์„ธ์…˜ ๊ตฌ์„ฑ ๋ณด๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  2. ๊ณต์ง€๋œ ๊ทธ๋ฃน ๋ฐ ๊ณต์ง€๋œ IP ์ฃผ์†Œ ๋ฒ”์œ„์˜ ์ƒˆ ๋ฐฐ์—ด์ด ํฌํ•จ๋œ PATCH ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ๋‹จ๊ณ„์˜ GET ์š”์ฒญ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๊ณ  ๋ผ์šฐํ„ฐ์— ์›ํ•˜๋Š” ๊ทธ๋ฃน ๋˜๋Š” IP ์ฃผ์†Œ ๋ฒ”์œ„๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
    {
      "bgp": {
        "advertisedGroups": [
        "ADVERTISED_GROUPS"
       ],
        "advertisedIpRanges": [
        ADVERTISED_IP_RANGES
       ]
     }
    }
    

    ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • PROJECT_ID: Cloud Router๋ฅผ ํฌํ•จํ•˜๋Š” ํ”„๋กœ์ ํŠธ
    • REGION: Cloud Router๊ฐ€ ์žˆ๋Š” ๋ฆฌ์ „
    • ROUTER_NAME: Cloud Router์˜ ์ด๋ฆ„
    • ADVERTISED_GROUPS: Cloud Router๊ฐ€ ๋™์ ์œผ๋กœ ๊ณต์ง€ํ•˜๋Š” Google ์ •์˜ ๊ทธ๋ฃน

    ์œ ์ผํ•˜๊ฒŒ ์œ ํšจํ•œ ๊ฐ’์€ ALL_SUBNETS๋กœ, VPC ๋„คํŠธ์›Œํฌ์˜ ๋™์  ๋ผ์šฐํŒ… ๋ชจ๋“œ์— ๋”ฐ๋ผ ์„œ๋ธŒ๋„ท์„ ๊ณต์ง€ํ•ฉ๋‹ˆ๋‹ค(๊ธฐ๋ณธ ๊ณต์ง€์™€ ๋น„์Šทํ•จ).

    • ADVERTISED_IP_RANGES: IP ์ฃผ์†Œ ๋ฒ”์œ„์˜ ์ƒˆ ๋ฐฐ์—ด์˜ ์ฝ˜ํ…์ธ 

    IPv4 ๋ฐ IPv6 ์ปค์Šคํ…€ IP ๋ฒ”์œ„๋ฅผ ๋ชจ๋‘ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ IPv6 ์ปค์Šคํ…€ ๋ฒ”์œ„๋Š” IPv6๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ BGP ์„ธ์…˜์—์„œ๋งŒ ๊ณต์ง€๋ฉ๋‹ˆ๋‹ค.

    ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ ์—†์ด IP ์ฃผ์†Œ ์ ‘๋‘์‚ฌ๋ฅผ ์ œ๊ณตํ•˜๋ฉด IPv4์šฉ /32 ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ ๋ฐ IPv6์šฉ /128๋กœ ํ•ด์„๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปค์Šคํ…€ ํ•™์Šต๋œ ๊ฒฝ๋กœ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ•œ๋„๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    ๋‹ค์Œ ์˜ˆ์‹œ์—๋Š” 2๊ฐœ์˜ ์„œ๋ธŒ๋„ท IPv4 ์ฃผ์†Œ ๋ฒ”์œ„์™€ ํ•œ ๊ฐœ์˜ IPv6 ์ฃผ์†Œ ๋ฒ”์œ„๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

        {
          "range": "192.0.2.0/24",
          "description": "First example range"
        },
        {
          "range": "198.51.100.0/24",
          "description": "Second example range"
        },
        {
          "range": "2001:db8:abcd:12::/64",
          "description: "Third example range"
        }
    

BGP ์„ธ์…˜์˜ ์ปค์Šคํ…€ ๊ณต์ง€ ๊ฒฝ๋กœ ์ง€์ •

๊ธฐ์กด BGP ์„ธ์…˜์— ์ปค์Šคํ…€ ๊ณต์ง€ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ Cloud Routers ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    Cloud Router๋กœ ์ด๋™

  2. ์—…๋ฐ์ดํŠธํ•  BGP ์„ธ์…˜์ด ์žˆ๋Š” Cloud Router๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. ๋ผ์šฐํ„ฐ ์„ธ๋ถ€์ •๋ณด ํŽ˜์ด์ง€์—์„œ ์—…๋ฐ์ดํŠธํ•  BGP ์„ธ์…˜์„ ์„ ํƒํ•˜์„ธ์š”.

  4. BGP ์„ธ์…˜ ์„ธ๋ถ€์ •๋ณด ํŽ˜์ด์ง€์—์„œ ์ˆ˜์ •์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  5. ๊ฒฝ๋กœ์˜ ๊ฒฝ์šฐ ์ปค์Šคํ…€ ๊ฒฝ๋กœ ๋งŒ๋“ค๊ธฐ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  6. Cloud Router์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ธŒ๋„ท์„ ๊ณ„์† ๊ณต์ง€ํ•˜๋ ค๋ฉด Cloud Router์— ํ‘œ์‹œ๋˜๋Š” ๋ชจ๋“  ์„œ๋ธŒ๋„ท ๊ณต์ง€ ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ฉด Cloud Router์˜ ๊ธฐ๋ณธ ๋™์ž‘์„ ๋ชจ๋ฐฉํ•ฉ๋‹ˆ๋‹ค.

  7. ๊ณต์ง€ ๊ฒฝ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ์ปค์Šคํ…€ ๊ฒฝ๋กœ ์ถ”๊ฐ€๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  8. ๊ฒฝ๋กœ ๊ณต์ง€๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    • ์†Œ์Šค: ์ปค์Šคํ…€ IP ๋ฒ”์œ„๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    • IP ์ฃผ์†Œ ๋ฒ”์œ„: CIDR ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปค์Šคํ…€ IP ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. IPv4 ๋ฐ IPv6 ์ปค์Šคํ…€ IP ๋ฒ”์œ„๋ฅผ ๋ชจ๋‘ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ IPv6 ์ปค์Šคํ…€ ๋ฒ”์œ„๋Š” IPv6๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ BGP ์„ธ์…˜์—์„œ๋งŒ ๊ณต์ง€๋ฉ๋‹ˆ๋‹ค.

      ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ ์—†์ด IP ์ฃผ์†Œ ์ ‘๋‘์‚ฌ๋ฅผ ์ œ๊ณตํ•˜๋ฉด IPv4์šฉ /32 ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ ๋ฐ IPv6์šฉ /128๋กœ ํ•ด์„๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปค์Šคํ…€ ํ•™์Šต๋œ ๊ฒฝ๋กœ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ•œ๋„๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    • ์„ค๋ช…: ์ด ๊ฒฝ๋กœ ๊ณต์ง€์˜ ๋ชฉ์ ์„ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์„ค๋ช…์„ ์ถ”๊ฐ€ํ•œ ํ›„ ์™„๋ฃŒ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  9. ์ปค์Šคํ…€ ๊ฒฝ๋กœ ์ถ”๊ฐ€๋ฅผ ๋งˆ์นœ ํ›„ ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

update-bgp-peer ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ปค์Šคํ…€ IP ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜๋ ค๋ฉด --set-advertisement-ranges ํ”Œ๋ž˜๊ทธ ๋˜๋Š” --add-advertisement-ranges ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  1. --set-advertisement-ranges ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ ๋ชจ๋“  ์ปค์Šคํ…€ ๊ณต์ง€๊ฐ€ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค.

    gcloud compute routers update-bgp-peer ROUTER_NAME \
        --peer-name=PEER_NAME \
        --advertisement-mode custom \
        --set-advertisement-groups=ADVERTISED_GROUPS \
        --set-advertisement-ranges=ADVERTISED_IP_RANGES
    

    ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • ROUTER_NAME: Cloud Router์˜ ์ด๋ฆ„
    • PEER_NAME: BGP ํ”ผ์–ด์˜ ์ด๋ฆ„
    • ์„ ํƒ์ ์œผ๋กœ ์ปค์Šคํ…€ IPv6 ๋ฒ”์œ„๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ --enable-ipv6 ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
    • ADVERTISED_GROUPS: Cloud Router๊ฐ€ ๋™์ ์œผ๋กœ ๊ณต์ง€ํ•˜๋Š” Google ์ •์˜ ๊ทธ๋ฃน

      ์œ ์ผํ•˜๊ฒŒ ์œ ํšจํ•œ ๊ฐ’์€ all_subnets๋กœ, VPC ๋„คํŠธ์›Œํฌ์˜ ๋™์  ๋ผ์šฐํŒ… ๋ชจ๋“œ์— ๋”ฐ๋ผ ์„œ๋ธŒ๋„ท์„ ๊ณต์ง€ํ•ฉ๋‹ˆ๋‹ค(๊ธฐ๋ณธ ๊ณต์ง€์™€ ๋น„์Šทํ•จ).

    • ADVERTISED_IP_RANGES: IP ์ฃผ์†Œ ๋ฒ”์œ„์˜ ์ƒˆ ๋ฐฐ์—ด์˜ ์ฝ˜ํ…์ธ 

      IPv4 ๋ฐ IPv6 ์ปค์Šคํ…€ IP ๋ฒ”์œ„๋ฅผ ๋ชจ๋‘ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ IPv6 ์ปค์Šคํ…€ ๋ฒ”์œ„๋Š” IPv6๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ BGP ์„ธ์…˜์—์„œ๋งŒ ๊ณต์ง€๋ฉ๋‹ˆ๋‹ค.

      ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ ์—†์ด IP ์ฃผ์†Œ ์ ‘๋‘์‚ฌ๋ฅผ ์ œ๊ณตํ•˜๋ฉด IPv4์šฉ /32 ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ ๋ฐ IPv6์šฉ /128๋กœ ํ•ด์„๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปค์Šคํ…€ ํ•™์Šต๋œ ๊ฒฝ๋กœ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ•œ๋„๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    ๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” ๋ชจ๋“  ์„œ๋ธŒ๋„ท ๋ฐ ์ปค์Šคํ…€ IP ๋ฒ”์œ„ 192.0.2.1, 198.51.100.0/24, 2001:db8:abcd:12::/64๋ฅผ ๊ณต์ง€ํ•˜๋„๋ก my-router Cloud Router์—์„œ my-bgp-session BGP ์„ธ์…˜์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute routers update-bgp-peer my-router \
        --peer-name my-bgp-session \
        --enable-ipv6 \
        --advertisement-mode custom \
        --set-advertisement-groups=all_subnets \
        --set-advertisement-ranges='192.0.2.1,198.51.100.0/24,2001:db8:abcd:12::/64'
    

    --set-advertisement-groups ํ”Œ๋ž˜๊ทธ๋Š” BGP ์„ธ์…˜์ด ๋™์ ์œผ๋กœ ๊ณต์ง€ํ•˜๋Š” Google ์ •์˜ ๊ทธ๋ฃน์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. --add-advertisement-groups ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ญ์ œํ•˜์—ฌ ์„œ๋ธŒ๋„ท ๊ณต์ง€๋ฅผ ์ œ์™ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒด ๊ณต์ง€ ๊ทธ๋ฃน ๋ชฉ๋ก์€ Google SDK ๋ฌธ์„œ์˜ set-advertisement-groups ํ”Œ๋ž˜๊ทธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  2. --add-advertisement-ranges ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Cloud Router์˜ ๊ณต์ง€ ๋ชจ๋“œ๊ฐ€ ์ด๋ฏธ custom์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute routers update-bgp-peer ROUTER_NAME \
        --peer-name=PEER_NAME \
        --add-advertisement-ranges=ADVERTISED_IP_RANGES
    

    ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • ROUTER_NAME: Cloud Router์˜ ์ด๋ฆ„
    • PEER_NAME: BGP ํ”ผ์–ด์˜ ์ด๋ฆ„
    • ADVERTISED_IP_RANGES: IP ์ฃผ์†Œ ๋ฒ”์œ„์˜ ์ƒˆ ๋ฐฐ์—ด์˜ ์ฝ˜ํ…์ธ 

      IPv4 ๋ฐ IPv6 ์ปค์Šคํ…€ IP ๋ฒ”์œ„๋ฅผ ๋ชจ๋‘ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ IPv6 ์ปค์Šคํ…€ ๋ฒ”์œ„๋Š” IPv6๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ BGP ์„ธ์…˜์—์„œ๋งŒ ๊ณต์ง€๋ฉ๋‹ˆ๋‹ค.

      ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ ์—†์ด IP ์ฃผ์†Œ ์ ‘๋‘์‚ฌ๋ฅผ ์ œ๊ณตํ•˜๋ฉด IPv4์šฉ /32 ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ ๋ฐ IPv6์šฉ /128๋กœ ํ•ด์„๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปค์Šคํ…€ ํ•™์Šต๋œ ๊ฒฝ๋กœ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ•œ๋„๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    ๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” 198.51.100.1 ์ปค์Šคํ…€ IP ์ฃผ์†Œ๋ฅผ Cloud Router์˜ ๊ณต์ง€์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute routers update-bgp-peer my-router \
        --peer-name my-bgp-session \
        --add-advertisement-ranges='198.51.100.1'
    

    ๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” 2001:db8:abcd:12::/64 ์ปค์Šคํ…€ IPv6 ์ฃผ์†Œ๋ฅผ Cloud Router์˜ ๊ณต์ง€์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute routers update-bgp-peer my-router \
        --peer-name my-bgp-session \
        --enable-ipv6 \
        --add-advertisement-ranges='2001:db8:abcd:12::/64'
    

API

routers.patch ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ bgpPeers[] ํ•„๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

bgpPeers[] ํ•„๋“œ๋Š” BGP ํ”ผ์–ด์˜ ๋ฐฐ์—ด์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ํ•„๋“œ๋ฅผ PATCHํ•˜๋ฉด ๊ธฐ์กด BGP ํ”ผ์–ด ๋ฐฐ์—ด์„ ์š”์ฒญ์— ํฌํ•จ๋œ ์ƒˆ ๋ฐฐ์—ด๋กœ ๋ฎ์–ด์”๋‹ˆ๋‹ค.

  1. GET ์š”์ฒญ์„ ๋ณด๋‚ด ๋ผ์šฐํ„ฐ์˜ ํ˜„์žฌ BGP ํ”ผ์–ด ๋ฐฐ์—ด์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ BGP ์„ธ์…˜ ๊ตฌ์„ฑ ๋ณด๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  2. ์ƒˆ BGP ํ”ผ์–ด ๋ฐฐ์—ด์ด ํฌํ•จ๋œ PATCH ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๊ณต์ง€๋ฅผ ์ถ”๊ฐ€ํ•  ๊ฐ BGP ํ”ผ์–ด์— ๋Œ€ํ•ด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    • bgpPeers[].advertisedIpRanges[] ํ•„๋“œ์— ์›ํ•˜๋Š” IP ์ฃผ์†Œ ๋ฒ”์œ„ ๊ณต์ง€๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
    • bgpPeers[].advertisedGroups[] ํ•„๋“œ์— ์›ํ•˜๋Š” ๊ทธ๋ฃน ๊ณต์ง€๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

      ์œ ์ผํ•˜๊ฒŒ ์œ ํšจํ•œ ๊ฐ’์€ ALL_SUBNETS๋กœ, VPC ๋„คํŠธ์›Œํฌ์˜ ๋™์  ๋ผ์šฐํŒ… ๋ชจ๋“œ์— ๋”ฐ๋ผ ์„œ๋ธŒ๋„ท์„ ๊ณต์ง€ํ•ฉ๋‹ˆ๋‹ค(๊ธฐ๋ณธ ๊ณต์ง€ ๋ชจ๋“œ์™€ ๋น„์Šทํ•จ).

      ์ด๋Ÿฌํ•œ ๊ฐ’์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ API ์ฐธ๊ณ  ๋ฆฌ์†Œ์Šค์˜ routers.patch๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
    {
      "bgpPeers": [
        BGP_PEERS
      ]
    }
    

    ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • PROJECT_ID: Cloud Router๋ฅผ ํฌํ•จํ•˜๋Š” ํ”„๋กœ์ ํŠธ
    • REGION: Cloud Router๊ฐ€ ์žˆ๋Š” ๋ฆฌ์ „
    • ROUTER_NAME: Cloud Router์˜ ์ด๋ฆ„
    • BGP_PEERS: BGP ํ”ผ์–ด์˜ ์ƒˆ ๋ฐฐ์—ด ์ฝ˜ํ…์ธ 

    ๋‹ค์Œ ์˜ˆ์‹œ์—๋Š” ์ปค์Šคํ…€ ๊ณต์ง€๊ฐ€ ์žˆ๋Š” 2๊ฐœ์˜ BGP ํ”ผ์–ด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

        {
          "name": "peer-1",
          "interfaceName": "if-peer-1",
          "ipAddress": "169.254.10.1",
          "peerIpAddress": "169.254.10.2",
          "peerAsn": 64512,
          "enableIpv6": true,
          "advertisedRoutePriority": 100,
          "advertiseMode": "CUSTOM",
          "advertisedGroups": ["ALL_SUBNETS"],
          "advertisedIpRanges": [
            {
              "range": "1.2.3.4",
              "description": "First example range"
            },
            {
              "range": "6.7.0.0/16",
              "description": "Second example range"
            },
            {
              "range": "2001:db8:abcd:12::/64",
              "description: "Third example range"
            }
          ]
        },
        {
          "name": "peer-2",
          "interfaceName": "if-peer-2",
          "ipAddress": "169.254.20.1",
          "peerIpAddress": "169.254.20.2",
          "peerAsn": 64513,
          "advertisedRoutePriority": 100,
          "advertiseMode": "CUSTOM",
          "advertisedIpRanges": [
            {
              "range": "192.168.10.0/24",
              "description": "Fourth example range"
            }
          ]
        }
    

๋‹ค์Œ ๋‹จ๊ณ„