Skip to content

nCloud 서버, VPC 만들고 설정

Summer Min edited this page Nov 13, 2024 · 1 revision

1. 서버 설치

  • dev-server (개발용)
    • [공인 ip] 223.130.151.78

image

  • pub-server (배포용)
    • [공인 ip] 211.188.48.107

image

  • pri-server (DB용)
    • [사설(비공인) ip] 10.15.11.6

image

2. ACG 설정 확인

  • public, dev 서버

    • Inbound: 22 (SSH), 3389 (원격 데스크톱) → 어느 ip address에서도 해당 포트로 접근 가능
    • Outbound: 어느 ip address, port로도 가능하게 뚫어놓음(ICMP는 ping으로 연결 확인용)

    image

    image

  • private 서버

    • Inbound: 22(SSH), 5432(postgresql) → public 서버에서만 접근 가능 (dev 서버도 같은 acg라 가능은 함)
    • Outbound:
      • ICMP(ping으로 인터넷 연결 확인)
      • 일단은 ping, http, https용 포트 개방 ⇒ postgresql 서비스 처음 설치할 때 필요

    image

    image

3. Route Table 설정 확인

  • public, dev 서버 서브넷 (+ 임시 NAT)

    • 인터넷 게이트웨이와 로컬 Route 존재

    image

    image

  • private 서버 서브넷

    • NAT 게이트웨이와 로컬 Route 존재
    • NAT 게이트웨이는 후에 삭제해야함

    image

    image

4. 서버 모두 접근 후 인터넷 접속 확인, 설정 변경

4-1. 접속 가이드

  1. 접속 키 ssh 관리자에 추가해주기 : ssh-add [접속 키]
(base) ➜  pem ls
web-dev-key.pem  web15-pri-key.pem  web15-pub-key.pem
(base) ➜  pem ssh-add web-dev-key.pem
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0664 for 'web-dev-key.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
# 읽기 전용으로 권한 바꿔줌
(base) ➜  pem chmod 600 web-dev-key.pem
(base) ➜  pem ssh-add web-dev-key.pem
Identity added: web-dev-key.pem (web-dev-key.pem)

b. 이제 ssh -A [ip 주소]로 접근 가능 (-A 옵션이 key 관리)

4-2. 접속 명령어, ip 단축어 등록

로컬에서 접속 덜 귀찮게 하기위해 ssh config 파일 업데이트하겠음

  1. (Ubuntu 기준) 해당 파일 존재 확인
(base) ➜  ~ ls -ld .ssh/config
-rw------- 1 summerminj summerminj 188 Sep 26 19:04 .ssh/config
(base) ➜  ~ vim .ssh/config

b. config 파일 업데이트

Host oct-dev
    HostName 223.130.151.78
    Port 22
    User root
    ForwardAgent yes
Host oct-pub
    HostName 211.188.48.107
    Port 22
    User root
    ForwardAgent yes

c. 이제

ssh oct-dev

ssh oct-pub으로 접속 가능

4-3. 연결 확인, 비밀번호 변경

  1. dev-server
  • ping [ietf.org](http://ietf.org) 으로 인터넷 게이트웨이 연결 여부 확인

    ------------------------------------------------------------------------------------------------------------
                            //                            //
       //////      //////  //    ////    //    //    //////
      //    //  //        //  //    //  //    //  //    //
     //    //  //        //  //    //  //    //  //    //
    //    //    //////  //    ////      //////    //////
    
    Welcome to Naver Cloud Platform Server!
    Authorized access only!
    If you are not authorized to access this system, disconnect now!
    ------------------------------------------------------------------------------------------------------------
    root@dev-server:~# ping ietf.org
    PING ietf.org (104.16.45.99) 56(84) bytes of data.
    64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=1 ttl=58 time=5.56 ms
    64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=2 ttl=58 time=2.39 ms
    64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=3 ttl=58 time=2.46 ms
    ^C
    --- ietf.org ping statistics ---
    
  • passwd 로 비밀번호 좀 쉽게 변경

b. pub-server

  • ping [ietf.org](http://ietf.org) 으로 인터넷 게이트웨이 연결 여부 확인

    ----------------------------------------
                            //                            //
       //////      //////  //    ////    //    //    //////
      //    //  //        //  //    //  //    //  //    //
     //    //  //        //  //    //  //    //  //    //
    //    //    //////  //    ////      //////    //////
    
    Welcome to Naver Cloud Platform Server!
    Authorized access only!
    If you are not authorized to access this system, disconnect now!
    ------------------------------------------------------------------------------------------------------------
    root@pub-server:~# ping ietf.org
    PING ietf.org (104.16.44.99) 56(84) bytes of data.
    64 bytes from 104.16.44.99 (104.16.44.99): icmp_seq=1 ttl=58 time=7.23 ms
    64 bytes from 104.16.44.99 (104.16.44.99): icmp_seq=2 ttl=58 time=2.27 ms
    64 bytes from 104.16.44.99 (104.16.44.99): icmp_seq=3 ttl=58 time=2.33 ms
    64 bytes from 104.16.44.99 (104.16.44.99): icmp_seq=4 ttl=58 time=2.21 ms
    ^C
    --- ietf.org ping statistics ---
    
  • passwd 로 비밀번호 좀 쉽게 변경

  • private 서버 접속 명령어 단축 등록

    • local → pub, dev 접속할때와 마찬가지로 설정 문서 편집
root@pub-server:~# ls -ld .ssh/config
ls: cannot access '.ssh/config': No such file or directory
root@pub-server:~# mkdir -p ~/.ssh
root@pub-server:~# touch ~/.ssh/config
root@pub-server:~# chmod 600 ~/.ssh/config
root@pub-server:~# vim ~/.ssh/config
Host oct-pri
        HostName 10.15.11.6
        Port 22
        User root
        ForwardAgent yes

이제

ssh oct-pri으로 접속 가능

c. pri-server

  • ping [ietf.org](http://ietf.org) 으로 인터넷 게이트웨이 연결 여부 확인 (현재는 NAT 게이트웨이 연결되어 있어 가능해야 함)

    ----------------------------------------
                            //                            //
       //////      //////  //    ////    //    //    //////
      //    //  //        //  //    //  //    //  //    //
     //    //  //        //  //    //  //    //  //    //
    //    //    //////  //    ////      //////    //////
    
    Welcome to Naver Cloud Platform Server!
    Authorized access only!
    If you are not authorized to access this system, disconnect now!
    ------------------------------------------------------------------------------------------------------------
    \root@pri-server:~# ping ietf.org
    PING ietf.org (104.16.45.99) 56(84) bytes of data.
    64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=1 ttl=58 time=7.42 ms
    64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=2 ttl=58 time=2.49 ms
    64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=3 ttl=58 time=2.48 ms
    ^C
    --- ietf.org ping statistics ---
    
  • passwd 로 비밀번호 좀 쉽게 변경

4-4. DB(private) server - postgresql 설치

  1. PostgreSQL의 GPG 키 바이너리 형식으로(중요!!!) 저장
wget --quiet -O- https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
  1. apt update로 필요한 패키지 업데이트
sudo apt update
  1. apt upgrade로 필요한 패키지 업그레이드 (서버 안정성…)
sudo apt update
  1. 최신 버전 apt show postgresql로 확인 후 postgresql 설치
# 설치
root@pri-server:/# sudo apt-get -y install postgresql-14
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
...
# 메모리 관리
root@pri-server:/# sudo apt autoremove
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be REMOVED:
  1. PostgreSQL 실행되는지 확인하기
root@pri-server:/# sudo service postgresql start
root@pri-server:/# sudo service postgresql status
● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; ve>
     Active: active (exited) since Tue 2024-11-12 17:55:08 KST; 4min 0s >
   Main PID: 43920 (code=exited, status=0/SUCCESS)
        CPU: 1ms

Nov 12 17:55:08 pri-server systemd[1]: Starting PostgreSQL RDBMS...
Nov 12 17:55:08 pri-server systemd[1]: Finished PostgreSQL RDBMS.
lines 1-8/8 (END)
root@pri-server:/# sudo -i -u postgres
postgres@pri-server:~$ psql
psql (14.13 (Ubuntu 14.13-1.pgdg22.04+1))
Type "help" for help.

postgres=# 
postgres=# 
  1. 일단은 비활성화시켜놓기
root@pri-server:/# sudo service postgresql stop
root@pri-server:/# sudo systemctl disable postgresql
Synchronizing state of postgresql.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable postgresql
Removed /etc/systemd/system/multi-user.target.wants/postgresql.service

나중에

  • user, database 설정 해놓고
  • public 서버에서만 특정 포트로 접속 가능하게 보안설정해두고
  • 확인해야함.. 하지만 나중에 하겠습니다 일단은 안쓰니까요

참고할 사이트: https://backendcode.tistory.com/265

5. DB server - NAT Gateway 없애고 인터넷 접속 막기

5-1. 현재 인터넷 접속 확인하기

root@pri-server:/# ping ietf.org
PING ietf.org (104.16.44.99) 56(84) bytes of data.
64 bytes from 104.16.44.99 (104.16.44.99): icmp_seq=1 ttl=58 time=4.72 ms
64 bytes from 104.16.44.99 (104.16.44.99): icmp_seq=2 ttl=58 time=2.48 ms
64 bytes from 104.16.44.99 (104.16.44.99): icmp_seq=3 ttl=58 time=2.54 ms
64 bytes from 104.16.44.99 (104.16.44.99): icmp_seq=4 ttl=58 time=2.52 ms
64 bytes from 104.16.44.99 (104.16.44.99): icmp_seq=5 ttl=58 time=2.60 ms

→ 멀쩡히 잘되는 상태… 왜냐하면

5-2. NAT Gateway 생성 상태 확인하기

  1. NatGateway용도로 만들어 놓은 별도의 서브넷이 있고

image

b. 해당 서브넷과 연결하여 NAT Gateway를 만들었으며

image

c. public subnet처럼 인터넷 Gateway를 쓸 수 있는 라우트 테이블에 등록되어 있기 때문

image

image

5-3. NAT Gateway 없애기

이걸 없에서 DB용 프라이빗 서버에서는 인터넷에 접속할 수 없게 하겠음

  1. PostgreSQL을 설치했으니 이제 넷에 접속할 필요가 없고

  2. NAT Gateway는 비쌈..

  3. private route table에서 Routes 설정 → 0.0.0.0/NATGW 삭제

    image

  4. NAT Gateway를 아예 삭제

    image

  5. NATGateway용 Subnet 삭제

    image

  6. 그러면 Route Table에서도 연관 Subnet에서 빠짐

5-4. 인터넷 연결 끊겼는지 확인

image

아직 Outbound 규칙은 고치지 않은 상황

image

하지만 NAT Gateway를 없애놔서 인터넷 연결은 안된다!!

Outbound rule도 업데이트해둘까 하다가 나중에 다시 인터넷에 연결해둘 일이 있을 것 같아서 보류

개발 문서

⚓️ 사용자 피드백과 버그 기록
👷🏻 기술적 도전
📖 위키와 학습정리
🚧 트러블슈팅

팀 문화

🧸 팀원 소개
⛺️ 그라운드 룰
🍞 커밋 컨벤션
🧈 이슈, PR 컨벤션
🥞 브랜치 전략

그룹 기록

📢 발표 자료
🌤️ 데일리 스크럼
📑 회의록
🏖️ 그룹 회고
🚸 멘토링 일지
Clone this wiki locally