[Trouble shooting]

Could not open lock file

UtakerS 2024. 5. 21. 14:20
반응형

 

패키지 관리 툴인 apt를 이용해서 Ubuntu OS 업그레이드를 하려고 했지만 

Could not open lock file

13: Permission denied

와 같은 에러가 뜨면서 진행되지 않았다.

 

구글링을 통해 찾아본 결과

 

가능한 원인 1

root 계정 사용하지 않아서

root 계정의 비밀벌호를 설정하지 않아서

>>  root로 로그인 해도 에러

 

가능한 원인 2

http 포트를 열지 않아서

>> 보안 그룹 확인해 보니 열려있음

 

한참을 해매다가 답답한 마음에 

ping 8.8.8.8 을 시도해 보았는데 핑 조차 가지 않는다

어이없게도 인터넷 연결이 되어있지 않았다

 

현재 트래픽 구조가

Public Subnet에 있는 Bastion Host (ec2#1)에서 Private Subnet에 있는 server (ec2#2)로 SSH 접속해 OS 업데이트를 하는 중 이었다.

 

Public Subnet에 NAT 게이트웨이를 생성하고 Private Subnet의 라우팅 테이블을 설정해 Private Subnet에 있는 자원들이 외부에 통신이 가능하도록 설정되어 있는데 

 

이 구간 어딘가에 문제가 있다는 말이다.

 

NAT GW의 서브넷, 퍼블릭 설정

라우팅 테이블 설정을 모두 확인해 보았지만 역시 문제는 보이지 않았다.

하지만 

Private Subnet에 생성되어 있어야 할 ec2#2가 Public Subnet에 생성되어 있었다.

ec2#2를 종료하고 Private Subnet에 다시 생성하고 접속해서 OS 업데이트를 시도하니 에러가 뜨지 않고 해결하였다.

 

그치만 왜 ec2#2가 Public Subnet에 있다고 해서 인터넷 연결이 되지 않았던 걸까?

가장 처음부터의 트래픽 플로우를 생각하면서 보안 그룹, 라우팅 테이블, ACL, NAT GW, Internet GW 등등, 천천히 따라가 보았지만 문제가 없어야 정상이었다.

 

그러던 중 에러 화면을 다시 보다가 root 계정으로 전환하기 전후 에러가 다른게 눈에 보였다

일반 계정으로 시도했을때는 바로 에러가 뜨는 반면

root 계정으로 시도했을때는 뭔가 시도가 되다가 결국 에러가 떴다.

 

혹시 내 요청이 도착하긴 했지만 응답을 받지 못했을 수 있겠다는 생각이 들었다.

 

그렇게 다시 생각해보니

ec2#2를 생성할때 퍼블릭 IP 자동 할당을 비활성화 해놓았기 때문이라고 생각한다.

ec2#2에 퍼블릭 IP가 없기 때문에 apt-get 레포지토리까지 나의 요청이 들어갔지만 응답을 받아오지 못한것으로 보인다.

 

결국 ec2#2가 Public Subnet에 있다고 해서 인터넷 연결이 되지 않았던 것이 아니라 퍼블릭 IP가 없었기 때문에 응답을 받지 못한것이다.

 

아무래도 Bastion host를 통해 접근하기 때문에, 그리고 private subnet에 있는 서버 특성상 퍼블릭 IP를 생성하지 않는 구글링으로는 찾기 어려웠던 케이스 였다고 생각한다.

 

돌이켜 생각하면 당연한 상황이었지만 정말 오래 고민하고 찾아보고 생각해서 결국 해답을 찾아내서 정말 뿌듯하다.

 

반응형