네트워킹 사용 사례에 맞는 VM 구성

이 페이지에서는 VM을 네트워크 프록시로 구성하는 방법을 설명합니다.

VM을 네트워크 프록시로 구성

하나의 인스턴스만 외부 액세스 권한을 갖고 다른 모든 인스턴스는 이 인스턴스를 프록시 서버로 사용하여 외부에 연결하도록 VPC 네트워크를 설계할 수 있습니다. 이 구성은 VPC 네트워크 내부 또는 외부에 대한 액세스 권한을 제어하거나 여러 개의 외부 IP 주소를 사용하는 비용을 줄이고자 하는 경우에 유용합니다.

이 예제에서는 Debian 이미지를 사용하는 VM 인스턴스에 네트워크 프록시를 설정하는 방법을 설명합니다. 여기서는 게이트웨이 인스턴스를 Squid 프록시 서버로 사용하지만 이 방법은 프록시 서버를 설정하는 방법 중 하나일 뿐입니다.

Squid 프록시 서버를 설정하려면 다음 안내를 따르세요.

  1. 외부(정적 또는 임시) IP 주소가 있는 하나의 인스턴스를 설정합니다. 이 예시에서는 인스턴스의 이름을 gateway-instance로 지정합니다.
    gcloud compute instances create gateway-instance 
    --project=project_id
    --zone=zone
    --network-interface=network-tier=PREMIUM,subnet=default
    --scopes=https://www.googleapis.com/auth/cloud-platform
  2. gcloud compute instances create ... --no-address를 지정하여 외부 IP 주소가 없는 여러 개의 인스턴스를 설정합니다. 이 예시에서는 이 인스턴스의 이름을 hidden-instance로 지정합니다.
    gcloud compute instances create hidden-instance 
    --project=project_id
    --zone=zone
    --network-interface=network-tier=PREMIUM,subnet=default,no-address
    --scopes=https://www.googleapis.com/auth/cloud-platform
  3. 내부 전용 인스턴스에 직접 연결할 수 없으므로 한 인스턴스에서 다른 인스턴스로 연결하는 방법을 알아봅니다.
  4. 방화벽을 추가하여 포트 3128에서 TCP 트래픽을 허용합니다.

    gcloud compute firewall-rules create [FIREWALL_RULE] --network [NETWORK] --allow tcp:3128
    
  5. Squidgateway-instance에 설치하고 VPC 네트워크(유효한 서브넷 IP 주소)의 모든 머신에서 액세스할 수 있도록 구성합니다. 여기서는 gateway-instancehidden-instance가 동일한 VPC 네트워크에 연결되어 있어 상호 연결이 가능하다고 가정합니다.

    user@gateway-instance:~$ sudo apt-get install squid3
    

    로컬 네트워크의 모든 머신에서 Squid3 서버를 사용하도록 합니다. 다음 sed 명령어는 주석을 해제하고 로컬 네트워크와 머신의 Squid 구성 파일에 acl localnet src 항목을 사용 설정합니다.

    user@gateway-instance:~$ sudo sed -i 's:#\(http_access allow localnet\):\1:' /etc/squid/squid.conf
    
    user@gateway-instance:~$ sudo sed -i 's:#\(http_access deny to_localhost\):\1:' /etc/squid/squid.conf
    
    user@gateway-instance:~$ sudo sed -i 's:#\(acl localnet src 10.0.0.0/8.*\):\1:' /etc/squid/squid.conf
    
    user@gateway-instance:~$ sudo sed -i 's:#\(acl localnet src 172.16.0.0/12.*\):\1:' /etc/squid/squid.conf
    
    user@gateway-instance:~$ sudo sed -i 's:#\(acl localnet src 192.168.0.0/16.*\):\1:' /etc/squid/squid.conf
    
    user@gateway-instance:~$ sudo sed -i 's:#\(acl localnet src fc00\:\:/7.*\):\1:' /etc/squid/squid.conf
    
    user@gateway-instance:~$ sudo sed -i 's:#\(acl localnet src fe80\:\:/10.*\):\1:' /etc/squid/squid.conf
    
    # Prevent proxy access to metadata server
    user@gateway-instance:~$ sudo tee -a /etc/squid/squid.conf <<'EOF'
    acl to_metadata dst 169.254.169.254
    http_access deny to_metadata
    EOF
    
    # Start Squid
    user@gateway:~$ sudo service squid start
    
  6. hidden-instance를 프록시로 사용하도록 gateway-instance를 구성합니다. 다음과 같이 ssh를 사용하여 hidden-instance에 연결하고, 포트 3128의 gateway-instance를 가리키도록 프록시 URL 주소를 정의합니다(기본 Squid 구성).

    user@gateway-instance:~$ ssh hidden-instance
    
    user@hidden-instance:~$ sudo -s
    
    root@hidden-instance:~# echo "export http_proxy=\"http://gateway-instance.$(dnsdomainname):3128\"" >> /etc/profile.d/proxy.sh
    
    root@hidden-instance:~# echo "export https_proxy=\"http://gateway-instance.$(dnsdomainname):3128\"" >> /etc/profile.d/proxy.sh
    
    root@hidden-instance:~# echo "export ftp_proxy=\"http://gateway-instance.$(dnsdomainname):3128\"" >> /etc/profile.d/proxy.sh
    
    root@hidden-instance:~# echo "export no_proxy=169.254.169.254,metadata,metadata.google.internal" >> /etc/profile.d/proxy.sh
    

    sudoers를 업데이트하여 이러한 env 변수를 전달합니다.

    root@hidden-instance:~# cp /etc/sudoers /tmp/sudoers.new
    
    root@hidden-instance:~# chmod 640 /tmp/sudoers.new
    
    root@hidden-instance:~# echo "Defaults env_keep += \"ftp_proxy http_proxy https_proxy no_proxy"\" >>/tmp/sudoers.new
    
    root@hidden-instance:~# chmod 440 /tmp/sudoers.new
    
    root@hidden-instance:~# visudo -c -f /tmp/sudoers.new && cp /tmp/sudoers.new /etc/sudoers
    
  7. sudo를 종료하고 변수를 로드하고 hidden-instance에서 apt-get을 실행합니다. 이제 게이트웨이를 프록시로 사용해서 작동하게 됩니다. apt-get는 인터넷에 직접 연결되지 않으므로 게이트웨이가 프록시 역할을 하지 않는 경우 hidden-instance이 작동하지 않습니다.

    root@hidden-instance:~# exit
    
    user@hidden-instance:~$ source ~/.profile
    
    user@hidden-instance:~$ sudo apt-get update
    

VM을 VPN 게이트웨이로 구성

이 콘텐츠는 지원 중단되고 삭제되었습니다. 관리형 VPN 솔루션은 Cloud VPN 문서를 참조하세요.

VM을 NAT 게이트웨이로 구성

이 콘텐츠는 지원 중단되고 삭제되었습니다. 관리형 NAT 솔루션은 Cloud NAT 문서를 참조하세요.

고가용성 및 고대역폭 NAT 게이트웨이 빌드

이 콘텐츠는 지원 중단되고 삭제되었습니다. 관리형 NAT 솔루션은 Cloud NAT 문서를 참조하세요.

다음 단계