Python/Do something

python - Appium 으로 스마트폰 무선 연동하고 컨트롤하기 - 5

pymin 2022. 5. 16. 04:25
반응형

이전 장에서는 PC~스마트폰 간의 연동을 위해 USB 또는 동일 Wifi 환경에서의 연동 방법에 대해 알아 보았고,

이번 장에서는 동일 wifi 환경이 아니라 스마트폰의 LTE를 사용하거나 정말 멀리 떨어진 곳에서의 연결 방법에 대해 알아보고자 한다.

 

*이전글 참조

2022.05.16 - [Python/Do something] - python - Appium 으로 스마트폰 무선 연동하고 컨트롤하기 - 4

 

python - Appium 으로 스마트폰 무선 연동하고 컨트롤하기 - 4

지난 장에서는 USB를 통해 PC~스마트폰과의 연결을 진행하였다. *이전편 2022.05.16 - [Python/Do something] - python - Appium 으로 스마트폰 무선 연동하고 컨트롤하기 - 3 python - Appium 으로 스마트폰 무선..

pymin.tistory.com

 

우선 멀리 떨어진 곳에서 단말을 컨트롤하려면 정상적인 방법으로는 힘들고 VPN을 통한 연결이 필요하다.

(PC ~ VPN 서버 ~ 스마트폰)

 

그럼 VPN 연결은 어떻게 할까?

VPN 서버를 직접 구축하는 것이 생각보다 어렵지는 않으니 한번 해보도록 한다.

우선 공인 IP를 할당받을 수 서버가 필요한데.. 직접 구축하기는 어려우니 AWS, Vultr 등을 통해 가상 머신을 할당받고 그 위에 VPN을 구축하고자 한다.

AWS를 사용할까 하다가 AWS는 워낙 내용이 많으니 vultr를 사용해서 가상 머신을 할당받고 VPN을 구축해보도록 한다.

 

우선 vultr에 접속해서 회원 가입을 한다.

https://www.vultr.com/

 

SSD VPS Servers, Cloud Servers and Cloud Hosting by Vultr

Vultr Global Cloud Hosting - Brilliantly Fast SSD VPS Cloud Servers. 100% KVM Virtualization

www.vultr.com

 

 

회원 가입을 하고 Deploy New Instance에 들어가면 한달에 5$라는 저렴한 가격으로 VPN 서버를 구축하고 사용할 수 있다.

 

옵션은 가장 싼걸로 선택한다.

cloud compute > intel regular Performance > Location(Seoul) > OS는 centos 로 선택하고 Add Auto Backup를 해제하면 딱 5$라는 금액이 나오게 된다.

이후 맨 아래쪽에 Additional Features에 Enable IPv6만 풀어준다. (IPv6보단 IPv4를 할당받는 것이 쉽다.)

이렇게 설정하고 나면 나만의 가상 서버가 생성되고, 해다 서버를 이용해 VPN을 구축하면 된다.

(신규 서버에 설치된 os 정보 확인.. 혹시 필요한 linux 명령어는 yum을 통해서 받으면 된다.)

[root@pymin ~]# pwd
/root
[root@pymin ~]# ls
[root@pymin ~]# uname -a
Linux pymin 3.10.0-1160.62.1.el7.x86_64 #1 SMP Tue Apr 5 16:57:59 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
[root@pymin ~]#

 

VPN은 보안 정도 및 방법에 따라 PPTP, L2TP, openVPN 등이 있는데 간단하게 테스트 정도만 하려면 PPTP로 구축해도 되고 조금 더 보안에 신경쓰고 싶다면 L2TP 로 구축하는 것이 좋다.

(또한 완전 최신 스마트폰인 S22에서는 VPN연결에서 PPTP는 지원하지 않는다, 21까지는 됩니다.)

 

VPN 구축 방법은 인터넷에 많이 나와 있으니 참고하면 되고, 여기서는 최소한의 테스트를 위해 PPTP방식으로 간단히 진행하고자 한다.

 

Vultr를 통해 생성한 서버에 아래 명령어를 통해 pptp daemon을 설치한다.

apt-get install pptpd   #필요시 앞에 sudo 입력

이후 /etc/pptpd.conf을 열면 local ip가 있고, remote ip가 있는데 local ip는 vpn서버의 ip고 remote ip는 vpn 클라이언트에게 할당하는 ip 다. private ip 이므로 적당히 미사용 대역을 할당하면 된다.

 

이후 VPN 계정 생성을 위해 /etc/ppp/chap-secrets 파일을 연후 아래와 같이 계정 정보와 패스워드 등을 설정하면 된다.

[root@pymin ~]# cat /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
pymin   pptpd   xxxx      *

 

이제 스마트폰에서 해당 VPN 서버로 접속(vultr로 할당받은 공인 IP로 접속)은 되지만 DNS 설정이 없어서 실제 인터넷 서비스는 되지 않는다 (DNS packet이 VPN 서버까지 가는데 DNS query가 불가능해서 packet drop)

 

 

/etc/sysctl.conf을 열고 net.ipv4 설정을 1로 변경해준다. 

[root@pymin ~]# cat /etc/sysctl.conf | grep net.
net.ipv4.ip_forward = 1

 

그리고 /etc/ppp/options.pptpd 파일의 ms-dns를 아래와 같이 변경한다. (주석 제거하고 구글 dns 등으로 변경)

[root@pymin ppp]# cat options.pptpd | grep dns
ms-dns 8.8.8.8
ms-dns 8.8.4.4
[root@pymin ppp]#

 

진짜 마지막으로 방화벽 설정과 pptpd daemon을 재기동하면 설정이 완료된다.

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo service pptpd restart

 

*혹시 내 PC에서 vultr의 공인 IP로 ping이 가지 않는다면 vultr 사이트에서 내가 생성한 VM에 들어가면 Instance, sanpshots 등 여러 옵션이 있는데 그중에서 Firewall을 클릭하고 내 PC의 공인 IP 대역을 source IP에 추가하면 된다.

(22번 port 도 열어주면 SSH도 접속 가능)

 

 

이제 VPN 세팅이 완료되었으면 PC와 스마트폰 모두 VPN에 연결한다. 

VPN 연결이 완료되면 이전 편에서 진행했던 USB 또는 wifi 방법으로 접속후 adb connect 명령어를 통해 PC~스마트폰을 연결할 수 있는데 자세한 방법은 아래에서 확인해 보겠다.

 

우선 USB를 통한 방법이다. PC와 스마트폰 모두 VPN 서버에 연결한 후 이전 3편에서 설명한 것처럼 USB를 통해서 PC~스마트폰을 연결해서 tcpip port를 열어준다. (adb tcpip 5555)

이후에는 기존과 동일하게 adb connect를 수행하면 되는데 연동할 IP는 VPN server가 스마트폰에 할당한 IP를 입력하여야 한다.

adb connect 192.168.0.236:5555   
#IP는 VPN 서버에서 할당한 IP, Port는 adb tcpip로 열어준 Port

 이렇게 하면 USB를 제거하고 LTE 등의 data를 사용해도 PC~스마트폰 간에 adb 연결이 유지되며, LTE data를 사용하기 때문에 스마트폰이 어디에 있던간에 PC(appium)을 통해 단말 컨트롤 및 로그 수집이 가능하다.

 

하지만 이 방법도 최초 연결을 위해서는 USB를 사용하거나 동일한 wifi 환경에 있어야 한다. 그렇다면 아예 멀리 있는 단말을 처음부터 연결할 수 있는 방법은 없을까? 

 

너무 길어져서 다음 장에서 설명하고자 한다.

 

 

※ 여기까지 진행하면서 궁금한 점이 있으면 언제든 댓글 달아주세요. 답변 드리겠습니다.

반응형