OpenWrt usb 테더링

usb tethering은 휴대폰을 사용해서 라우터를 인터넷에 연결하는데 사용됩니다. 이런일이 자주 발생하지는 않겠지만 라우터 하단의 클라이언트가 급하게 인터넷을 사용해야 하는데 인터넷 장애나 속도가 느릴경우 또는 와이파이가 없는 여행지에서 휴대폰과 usb데이터 케이블만 있으면 라우터 하단의 클라이언트가 쉽고 빠르게 인터넷을 사용할 수 있습니다.(휴대폰의 데이터 사용량 주의)

사전준비

  • 휴대폰(안드로이드폰을 기준으로 설명)
  • usb 데이터케이블

설치

설치 및 설정은 안드로이드폰을 기준으로 하며, 아이폰의 경우는 추가로 설치할 패키지가 있으므로 아래 참고사이트 OpenWrt 문서화일을 참고하세요. 먼저 usb케이블로 휴대폰을 라우터의 usb포트에 연결하고 휴대폰 설정에 들어가서 usb 테더링을 활성화 합니다. 그리고 라우터에 ssh로 접속해 아래 패키지를 설치합니다.

opkg update
opkg install kmod-usb-net-rndis kmod-nls-base kmod-usb-core kmod-usb-net kmod-usb-net-cdc-ether kmod-usb2
opkg install iptables-mod-ipopt kmod-ipt-ipopt

설정

/etc/config/network을 아래와 같이 수정합니다. wan 인터페이스는 option metric '10' 으로 하여 우선권을 높게주고 새로 생성하는 tetheringwan 인터페이스는 option metric '90' 으로 wan보다는 낮게 주었습니다.(여러 개의 랜카드(wan)가 있을경우 우선권이 높은 인터페이스를 이용하므로 wan이 살아 있다면 wan을 이용하게 설정하였습니다.)

config interface 'wan'
...
        option metric '10'

config interface 'tetheringwan'
        option ifname 'usb0'
        option proto 'dhcp'
        option metric '90'
Code language: Lua (lua)

/etc/conig/firewall의 wan zone에 list network 'tetheringwan'를 추가합니다.

...
config zone
        option name 'wan'
        list network 'wan'
        list network 'wan6'
        list network 'tetheringwan'
        option input 'REJECT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option masq '1'
        option mtu_fix '1'
Code language: Lua (lua)

etc/firewall.user에 다음을 추가해 usb0의 ttl을 65초로 변경합니다.

iptables -t mangle -I POSTROUTING -o usb0 -j TTL --ttl-set 65
Code language: Bash (bash)

방화벽과 네트워크를 재시작하고 테스트를 위해 wan포트에 연결된 케이블을 제거한 후 공용 ip확인 및 스피드테스트 해보세요.

/etc/init.d/firewall restart
/etc/init.d/network restart

참고사이트

Leave a Comment