저번에 받았던 평생무료 클라우드( https://bitlog.tistory.com/90 )에서 뭘 하나 띄워서 개인적으로 써보려고 했는데, 외부에서 접속이 되지 않는 것을 알았습니다. 네트워크 보안설정때문인데요. 별다른 설정을 하지 않았다면, 외부로 나가는 통신은 모두 열려있지만, 외부에서 들어오는 통신은 22 ssh 포트를 제외하곤 차단되어 있습니다. 그래서 외부에서 접근하도록 하려면 두군데 설정을 조정해야 합니다. 하나는 VM의 방화벽과 다른 하나는 공용서브넷에서 포트 접속을 허가해야 합니다.
공용서브넷의 보안 규칙 설정.
메뉴 -> 네트워킹 -> 가상클라우드네트워크에 접근합니다.
그러면 (별도로 생성하지 않았다면) 하나의 가상클라우드 네트워크(VCN)이 보이게 되는데요. vcn 이름을 클릭하고, 공용서브넷을 클릭합니다. 그러면 보안 목록이 보이는데 클릭하여, 서비스에 사용할 포트에 접속할 수 있도록 설정을 추가해주세요.
저는 8000번 포트를 사용할 것이고, 어디서든 접속가능하도록 소스를 0.0.0.0/0이라고 설정했습니다. 프로토콜은 TCP로 설정해 줍니다. 그리고 수신 규칙을 추가해 줍니다. 추가가 완료되었다면 이제, VM에서 방화벽을 열어주기만 하면 접속할 수 있습니다.
IPTABLE에 포트 추가.
IPTABLE을 꺼버릴 수도 있지만, 그러면 시스템 전체를 외부 네트워크에 열어둔 꼴이 되므로, 추천하고 싶지 않습니다. 오라클 VM (ubuntu20.04) 의 초기 IPTABLE 설정은 다음과 같습니다.
ssh와 ntp그리고 icmp프로토콜 이외에는 모두 REJECT로 설정되어 있는 것을 알 수 있습니다. 여기에 tcp 8000 포트의 접속을 허용하도록 규칙을 추가해줍니다.
$ sudo iptables -I INPUT 5 -i ens3 -p tcp --dport 8000 -m state --state NEW,ESTABLISHED -j ACCEPT
규칙의 5번째에 tcp 8000번 포트로 NEW, ESTABLISHED 상태의 연결 접속을 허가한다는 규칙을 추가합니다. 추가하고 다시 IPTABLE을 조사해보면,
5번째에 8000번 포트의 접속이 허용되는 설정이 추가된 것을 확인할 수 있습니다. 이제 서비스를 기동하고 8000번 포트로 접속해보면, 연결이 잘되는 것을 볼 수 있습니다.