Gnirehtet을 사용하여 Linux에서 Android로 테더를 되돌리는 방법
과거에는 Linux 환경에서 Android 기기로 인터넷 연결을 역으로 공유하기 위해 복잡한 IP 테이블 설정, 브리지 연결 등 여러 단계를 거쳐야 했습니다. 다행히 개발자들의 노력 덕분에 이제는 훨씬 간편하게 리버스 테더링을 설정할 수 있게 되었습니다.
여기, '그니렛(Gnirehtet)'이라는 도구를 소개합니다! 이 도구는 백그라운드 서비스로 작동하며, USB를 통해 연결된 Linux 컴퓨터의 인터넷 연결을 Android 기기에서 사용할 수 있도록 해줍니다. 현재는 실험적인 단계에 있지만, 매우 유용한 프로그램입니다.
주의: 이 가이드에 따라 진행하기 전에 Android 기기가 루팅되어 있어야 합니다. 루팅이 되어 있지 않으면 Gnirehtet이 필요한 대부분의 작업을 수행할 수 없습니다. Android 기기를 루팅하는 방법은 예전에 비해 훨씬 간단해졌으며, 다양한 기기에 대한 자세한 가이드를 XDA 포럼 등에서 찾아볼 수 있습니다.
안드로이드 개발 도구 설치
Gnirehtet을 이용한 리버스 테더링은 안드로이드 개발 도구를 기반으로 작동합니다. 따라서, Linux 환경에 안드로이드 개발 도구가 설치되어 있어야 합니다. 대부분의 Linux 배포판에서는 이 도구를 쉽게 설치할 수 있습니다. 터미널을 열고 다음 지침에 따라 설치하십시오.
우분투
sudo apt install android-tools
데비안
sudo apt-get install android-tools
아치 리눅스
sudo pacman -S android-tools
페도라
sudo dnf install android-tools
오픈수세
sudo zypper in android-tools
기타 리눅스 배포판
Google은 Linux 플랫폼을 적극적으로 지원하므로 Android SDK 툴킷을 손쉽게 이용할 수 있습니다. 운영체제에 맞게 설치하려면 공식 웹사이트에서 다운로드 후 설치 안내를 따르십시오.
Gnirehtet 설치하기

Gnirehtet은 Github에서 제공됩니다. 소스 코드를 다운로드하여 직접 빌드할 수도 있지만, 릴리스 페이지에서 미리 컴파일된 버전을 다운로드하는 것이 훨씬 간편합니다. 릴리스 페이지에는 Java 버전과 Rust 버전이 제공됩니다. Java 런타임 환경을 따로 설치할 필요가 없는 Rust 버전을 다운로드하는 것을 추천합니다.
참고: Java 버전을 사용하려면 Linux용 Java 런타임 환경을 별도로 설치해야 합니다.
터미널을 열고 wget 명령어를 사용하여 최신 버전의 Gnirehtet을 다운로드합니다.
wget https://github.com/Genymobile/gnirehtet/releases/download/v2.2.1/gnirehtet-rust-linux64-v2.2.1.zip
혹은 Java 버전을 다운로드하려면 다음 명령어를 사용합니다.
wget https://github.com/Genymobile/gnirehtet/releases/download/v2.2.1/gnirehtet-java-v2.2.1.zip
다운로드가 완료되면 압축 해제 프로그램을 사용하여 압축 파일을 풉니다.
unzip gnirehtet-rust-linux64-v2.2.1.zip
또는
unzip gnirehtet-java-v2.2.1.zip
파일 탐색기를 열고 “Gnirehtet” 폴더로 이동합니다. 그 안에 있는 “gnirehtet.apk” 파일을 Android 기기에 복사한 후 설치합니다.
다시 터미널로 돌아와서 `cd` 명령어를 사용하여 압축을 푼 Gnirehtet 폴더로 이동합니다.
cd ~/gnirehtet-*
Android 기기 설정
Gnirehtet 도구는 Android 시스템의 약간의 설정을 변경해야 제대로 작동합니다. 먼저 "설정" 앱을 열고 "휴대폰 정보"로 이동하여 "개발자가 되셨습니다!"라는 메시지가 나타날 때까지 "빌드 번호"를 여러 번 탭합니다.
"개발자 옵션" 메뉴로 이동하여 "USB 디버깅"을 찾아 활성화합니다.
터미널을 열고 ADB 서버를 시작합니다.
su -
또는
sudo -s
adb start server
Android 기기의 잠금을 해제하고 "이 컴퓨터에서 항상 USB 디버깅 허용"을 선택한 후 확인을 누릅니다. 그런 다음 ADB 서버를 실행했던 터미널로 돌아가서 서버를 종료합니다.
adb kill-server
Gnirehtet 사용법
Gnirehtet은 USB 케이블을 통해 Linux PC와 Android 기기를 연결하여 작동합니다. 연결을 시작하려면 터미널을 열고 루트 쉘 권한을 획득해야 합니다.
su -
또는
sudo -s
루트 쉘 상태에서 Gnirehtet 앱은 Linux 시스템과 문제없이 통신하며, ADB를 통해 Android 기기와 통신할 수 있습니다. 이제 연결을 시작합니다.
./gnirehtet autorun
Gnirehtet과의 연결이 시작되면 Android 기기에 새로운 VPN 연결 프롬프트가 나타납니다. 잠금을 해제하고 연결을 수락합니다.

VPN 연결을 수락하면 Gnirehtet은 USB를 통해 Android 기기로 인터넷 연결을 성공적으로 전달합니다.
연결 재시도
USB 케이블 연결이 끊어지는 경우가 종종 있습니다. Gnirehtet 서비스가 실행되는 동안 이런 일이 발생하면 연결이 종료됩니다. 하지만 다행히 Gnirehtet에는 손실된 연결을 즉시 복원할 수 있는 기능이 내장되어 있습니다.
연결을 복원하려면 터미널을 열고 `su` 또는 `sudo` 명령을 사용하여 루트 쉘 권한을 얻습니다.
cd ~/gnirehtet-*
Gnirehtet 폴더로 이동한 후, 재시작 플래그와 함께 프로그램을 실행합니다. 이 명령은 리버스 테더링 시스템을 다시 시작합니다.
sudo ./gnirehtet restart
명령이 실행된 후 Android 기기의 잠금을 해제하고 VPN 연결을 다시 수락하여 재시작 프로세스를 완료합니다.
연결 중지
리버스 테더링은 언제든지 중지할 수 있습니다. 중단하려면 새로운 터미널 창을 열고 (연결이 실행 중인 기존 터미널 창은 그대로 두어야 합니다) 다음 명령어를 입력합니다.
cd ~/gnirehtet-* sudo ./gnirehtet stop
경우에 따라 `stop` 명령을 실행해도 리버스 테더링 연결이 완전히 종료되지 않을 수 있습니다. 이런 경우에는 Gnirehtet을 강제로 종료해야 합니다.
Gnirehtet을 강제로 종료하려면 `pidof` 명령으로 프로세스 ID를 찾은 다음 `kill` 명령으로 프로그램을 중지합니다.
pidof ./gnirehtet sudo kill -9 processnumber