본문 바로가기
ОКБ (실험 설계국)/Trouble Shooting

4. Android에 설치한 Linux에서 ping 사용하기

by Rosmary 2019. 8. 12.
728x90
반응형

필자는 여전히, Android 스마트폰에 리눅스를 설치하고, 향후 개인용 서버를 구축할 수 있는 환경을 확인하는 작업을 계속 진행중이다. 아무래도, 컴퓨터에서 사용하는 일반 리눅스와는 차이가 많이 있는지, 지난 포스팅에서 언급했던 systemctl과 service 명령어 외에도 몇몇 명령어가 들지 않는 현상이 간간히 나타나고 있다. 

 

systemctl과 service 명령어 이후, 필자를 괴롭힌 명령어는 ping이다. 클라이언트와 서버 사이 통신 연결이 확립되었는지 확인하는 명령어인 만큼, 서버 구축 과정에서 필수로 사용하게 되는 명령어다. 보통 리눅스 설치 시, 기본적으로 제공되는 명령어임에도, 필자의 스마트폰에 설치된 리눅스는 이 명령어에 대한 스크립트를 가지고 있지 않았다. 

 

ping 사용이 불가능하다는 것은 다음의 과정에서 "우연히" 알게 되었다.

 

필자는, 서버 구축 과정에서 불필요한 트래픽의 유입을 차단하기 위해, Android Linux에 기본 설정된 방화벽을 모조리 지우고, 필요한 포트만 개방하는 작업을 진행했다.

 

 

개방한 포트는 위의 사진과 같다. 원격 접속을 위한 SSH 포트, 웹 브라우저 접속을 위한 http, https, dns 포트, 그리고 통신 연결 확인을 위한 icmp 프로토콜 허용.(나중에 서버 구축하면, 추가해야 할 정책이 훨씬 많아지겠지만, 우선은 확인용으로 일부만 개방했다)

 

해당 작업 진행 후, Android 스마트폰의 웹 브라우저에서, www.daum.net의 접속이 원활하게 진행된 것을 확인했다. 그 이후, Android 스마트폰의 기본 DNS 동작을 확인하기 위해, dig 명령어로 daum.net의 soa를 조회하고, (사실상 dns 작동이 확인되면, 진행할 필요가 없는) ping을 날리는 작업까지 진행했다. 그런데...

 

리눅스에서 기본적으로 제공되는 ping 명령어가, 이곳에는 깔려있지 않다는 메세지가 출력된다....

which 명령어로 ping을 찾아보니, 설치된 linux 내에서는 찾을 수가 없다는 출력 문구만 뜬다. 

 

지난 systemctl / service 명령어 트러블 슈팅 당시에, 리눅스의 명령어를 지원하는 busybox에서 ping이 포함되어 있음을 확인했기에, 단순히 ping 스크립트 부재로 발생한 일이라고 판단했다. 

 

그런데, 필자는 아직 스크립트 파일 작성이 능숙하지 않다. 더군다나 이 핑 명령어는 로컬컴퓨터 외부와의 상호작용도 관련되어 있기 때문에, ping 스크립트 작성은 아직까지 필자의 능력 밖이다. 어디에서라도 ping 스크립트를 다운받을 수 있으면 좋겠지만, 자료를 제공하는 사이트도 발견하지 못했다. 

 

혹시, Android 내 기본 명령어에는 이 스크립트가 존재하지 않을까? 이 질문에 다다러서야, unchroot 명령어를 사용해 Android 로 벗어난다.

 

unchroot 명령어를 쓸 일이 생각보다 많아서 alias를 사용했다.

chroot 외부 폴더에서 ping 명령어를 실행해보니, 잘 된다. 따라서 이 문제는 Android의 ping스크립트를 리눅스 폴더 내 명령어 폴더로 이동시키면 해결될 문제라고 판단했다. Android 내의 리눅스가 설치된 경로는 systemctl 문제를 해결하는 과정에서 이미 발견했기 때문에, 큰 어려움 없이 스크립트 파일을 복사할 수 있었다.

 

우선 리눅스의 /root 폴더로 스크립트 파일 복사 후, 명령어를 실행해 보았다.

 

busybox가 ping 명령어를 지원하는 덕에, Android의 ping 스크립트 파일을 복사해 오는 작업만으로도 리눅스에서 ping 사용이 가능했다. 복사한 ping 스크립트를 기본 PATH 경로 밑으로 위치시키면서, 경로 언급 없이 실행해보았다.

 

 

ping이 느리긴 하지만, 다행히 잘 작동한다. 

 

*  혹시나 하는 마음에 지난 번에 문제 해결에 실패했던 systemctl과 service 명령어도 같은 방법으로 진행해보았다. Android의 명령어가 service는 지원하지만, 리눅스에서 명령어 사용을 가능하게 해 주는 busybox 내에는 service 명령어가 존재하지 않아, 지난 번과 동일하게 chroot 폴더 아래에서 사용할 수 없다는 문구만 뜬다.

 

 

FIN.

반응형

댓글