꽃삽질 : Cubietruck Openwrt: USB Wifi 를 Wwan 으로 설정.

** 완료되지 못한 글인데, 그냥 올린다.


본 내용에 들어가기에 앞서..

이 글은, Cubietruck 을 유선공유기(Router)로 사용하려는 길목에서 쓰인 글이다. 아직 그 목적을 달성하진 못했고, 가는 길에 얻어걸린 이 상황을 잊기 전에 정리하려한다.

이 내용을 마치고 나면면, 큐비트럭은, USB Wifi 네트웍으로 인터넷을 잡고, Lan 포트로 내부 네트웍을 사용할 수 있는 기기로 변신하게 된다. 다시 말해서, 큐비트럭의 랜포트를 스위치로 연결하고, 그 스위치에서 다른 기기들을 연결하면 그 기기들은 각각 IP(사설) 를 부여받게 되고, 외부로도 접속이 가능한 상태가 된다.

이런 기기를 iptime 에서는 ‘무선 클라이언트’라고 부르고는 있는데, 정확한 용어인지는 모르겠다.

좀 더 openwrt 에 지식이 있다면, SD 카드에 이미지를 설치한 뒤, 바로 설정파일을 수정하여 완벽하고, 바로 실행가능한 상태로 만들 수도 있겠지만.. 거기까진 아직 내 경험이 미치지 못했다.


준비물

  • Cubietruck
  • USB 무선랜 카드
  • 유무선공유기

설치

이 ‘설치’ 때문에 또 엄청난 꽃삽질을 했었다. 제대로 알아보고 했었어야 하는데..
openwrt 는 큐비트럭을 지원하는데, 대문에서 연결된 이미지를 선택했다가 다소 애매한 상황에 빠져버렸다.

저 이미지는 squashfs 를 사용했는데, 그 때문에 이러지도 저러지도 못하는 상황이 되어 버려, 결국 다른 이미지(ext4-sdcard)를 사용하여 제대로 설치를 마칠 수 있었다.

따라서 이 글은, ext4-sdcard 이미지로 설치함을 전제로 한다. 링크 주소는 18.06.5 이므로, 추후에는 openwrt 내려받기로 이동한 뒤, 해당 판본/targets/sunxi/cortexa7 로 가서 sun7i-a20-cubietruck-ext4-sdcard.img.gz 를 택하여 받고 설치해야 한다.

이미지를 받은 뒤 압축을 풀고, etcher 나 dd 명령을 통해 SD 카드에 설치한다.

sudo dd if=openwrt-18.06.5-sunxi-cortexa7-sun7i-a20-cubietruck-ext4-sdcard.img of=/dev/sdX bs=128 && sync

/dev/sdX 는 SD 카드의 경로다. 엉뚱한 곳을 지정하면, 돌이킬 수 없는 결과를 맡게 될 수도 있으니 lsblk 등으로 정확하게 확인한 후 명령을 내려야 한다.

기본 설정 – ssh 또는 웹 설정페이지 연결

openwrt 는, 기본값으로 주소가 192.168.1.1 이 지정되어 있다. 따라서 이 주소로 ssh 접속을 하든, 아니면 GUI(웹 브라우저) 를 사용하든, 연결을 해야만 한다.

그런데.. 그러려면 내 PC 도 역시 같은 대역에 놓여있어야 한다.
(따라서 잠시 네트웍 설정을 바꿔야 한다.)

큐비트럭에 모니터/키보드 연결:???

초기 상황에선 USB 키보드 관련 모듈이 빠져 있기 때문에, 모니터로 연결해서 상황을 볼 수는 있지만, 키보드 입력은 불가능하다. ‘진행하려면 키보드를 누르라’는 문구만 보이고, 키보드를 아무리 두들겨패도 꿈쩍도 하지 않는다.
따라서, 이 방법은 선택지에서 뺄 수 밖에 없다.

설정

먼저 위에서 만든 SD 카드로 일단 큐비트럭을 시동시킨다. 유선 공유기에서 나온 랜선을 큐비트럭에 연결하는 작업도 필요하다.

헌데, 이 상태에선 유선공유기의 DHCP 기능이 작동하질 않는다. 왜냐하면, 기본값으로 Openwrt 는 192.168.1.1 을 사용하게끔 설정되어 있기 때문이다.

따라서, 일단 내 PC(같은 유선 공유기에 연결된)의 IP 를 192.168.1.x 로 바꿔준다.

그리고 나면, 이제 192.168.1.1 로 접속할 수 있게 된다.

$ ssh root@192.168.1.1

BusyBox v1.30.1 () built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt 19.07.3, r11063-85e04e9f46
 -----------------------------------------------------
=== WARNING! =====================================
There is no root password defined on this device!
Use the "passwd" command to set up a new password
in order to prevent unauthorized SSH logins.
--------------------------------------------------

그러나, 이 상황으로는 내부 네트웍만 가능할 뿐, 외부로 연결이 되지는 않는다.
그러려면 192.168.1.1 이 아닌, DHCP 가 가능하게끔 바꿔줘야 한다. 또는,원하는 IP 를 할당해주거나.

이를 위해 /etc/config/network 파일을 수정한다.

아래는, 초기 부팅 시 자동 생성된 network 파일의 내용이다.

config interface 'loopback'
	option ifname 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'
	option ula_prefix 'fd85:e3c3:4f37::/48'

config interface 'lan'
	option type 'bridge'
	option ifname 'eth0'
	option proto 'static'
	option ipaddr '192.168.1.1'
	option netmask '255.255.255.0'
	option ip6assign '60'

기본값은, 위에서 보는대로, lan 설정 즉, Ethernet 포트는 기본값으로 192.168.1.1 을 받게끔 설정되어 있다.

지금 필요한 내용은 저런게 아니고, DHCP 설정이 되어 IP 를 받아오게끔 해야한다.
따라서 ‘lan’ 부분만 다음과 같이 넣어준다.

config interface 'lan'
	option proto 'dhcp'
	option ifname 'eth0'

lan, 즉 eth0 을 고정 IP 가 아닌 dhcp 로부터 주소를 받게끔 바꾸고, eth0 에 할당해준다.

이 상태에서 SD 카드를 큐비트럭에 꽂고, 유선공유기에서 나온 랜케이블을 랜포트에 연결한 뒤 전원을 넣으면!
공유기에서 큐비트럭에 IP 를 할당하게 되고, 그 주소로 ssh/web 접속을 할 수 있게 된다.

IP 를 찾으려면 공유기 주소로 접속해서 찾는게 제일 빠르고, 아니면 nmap 을 사용해도 되긴 하지만..

$ sudo nmap -sn 192.168.60.0/24
Nmap scan report for cubietruck (192.168.60.5)

192.168.60 은 공유기의 IP 대역이니 적절히 넣어준다. 위처럼 큐비트럭을 찾아냈고, 이제 저 주소로 접속하면, 꿈에도 그리던(?) openwrt 를 만날 수 있다.

$ ssh root@192.168.60.5
BusyBox v1.28.4 () built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt 18.06.5, r7897-9d401013fc
 -----------------------------------------------------
=== WARNING! =====================================
There is no root password defined on this device!
Use the "passwd" command to set up a new password
in order to prevent unauthorized SSH logins.
--------------------------------------------------

또는 웹브라우저에서 저 주소로 접근한다.
보안(passwd)은 일단 무시. 그 부분은 나중에 제대로 처리하기로 한다.

그런데, Cubietruck 엔 Wifi 가 있는데?

써본 적은 없지만, 큐비트럭엔 wifi/bt 가 있다고 나온다. 헌데, 안테나를 붙이는 자리도 없다. 오렌지 파이엔 안테나가 딸려 있기도 하고 붙이는 데도 있는데, 여기엔 그런게 없다.

게다가, 설치를 하고 살펴봐도 무선네트웍 카드가 보이질 않는다. ip a 를 하면 lo 와 eth0 만 잡힐 뿐, wlan 등은 없다.

큐비트럭 관련 무선랜 드라이버는 다음 파일인데, 설치를 해봐도 마찬가지다.

opkg install brcmfmac-firmware-4329-sdio

좀 이상한 것은, ip a 로는 아무 내용도 보이지 않는데, 웹 인터페이스에선 뭐가 있는 듯이 나온다.

그러나, Scan 을 눌러도 계속 돌아가기만 할 뿐, 어떤 결과가 나오진 않는다.

따라서, 이것을 사용하지 않고(사용할 수가 없으니), USB 무선랜카드를 사용하여 다음 작업을 진행하기로 한다.

무선랜 드라이버 설치

무선랜카드를 꼽으니 바로 인식이 됐으면 좋으련만, 그렇지 못했기에 내 무선랜카드의 제원을 찾아봤고, 다음 두 드라이버를 설치해야 했다.

그런데.. 내 USB 랜카드가 어떤 것인질 알아보기 위해 lsusb 명령을 내렸는데, 돌아오는 답은 ‘그게 뭔데?’ 였다. lsusb 가 없기 때문이다.

먼저 lsusb 를 설치했다. 꾸러미는 Package Table 에서 찾아볼 수 있다.

opkg install usbutils

그 결과,

# lsusb
...
Ralink Technology, Corp. MT7601U Wireless Adapter
...

이제 MT7601U 드라이버를 찾으면 된다.
그 결과가 다음 2개.

opkg update
opkg install kmod-mt7601u mt7601u-firmware

데비안 계열의 apt 와 달라서, opkg 는 재부팅하고 난 뒤 바로 install 을 하면 오류(Cannot install package)가 발생한다. 반드시 그 전에 update 를 먼저 해줘야 한다. (전원이 들어와 있는 동안엔 계속 이 상태가 유지된다.)

설치가 끝나고, 다시 ip a 를 해보면, wlan0 이 당당히 잡혀있음을 볼 수 있다.

그리고 무선 보안 연결을 위해 관련 프로그램도 설치.

opkg install wpa-supplicant

설치 끝. 이제 설정으로 돌입한다.

무선랜 설정

무선랜 설정도 터미널에서 해도 되지만, (잘 모르기도 하고) 좀 더 쉽게 하기 위해 웹인터페이스(Luci)를 사용했다.

일단 System – System 메뉴로 가서 Timezone 부터 설정한다.
한반도에는 서울과 평양이 있는데, 뭐 택하고 싶은 쪽으로. ㅎㅎ

언어는 auto 라고만 되어 있고, 다른 언어로 바꾸지는 못하는 듯 한데.. 이 부분은 잘 모르겠다. 시스템의 로캘을 따라가는 건지.

이제 Network – Wireless 로 이동하여 보면, 다음처럼 무선랜카드가 잡혀 있다.

Scan 을 누르고, ssid 선택 후 비밀번호를 입력한다.

무선랜을 (무선)공유기에 연결할 예정인데, 이게 어쨌든 외부 네트웍으로 연결되기 때문에, lan 이 아닌 wan 으로 볼 수 있다. (이름이 lan 이냐, wan 이냐가 중요하지는 않은 듯 하긴 한데, 아직 확신은 없다.) 게다가 Wireless 이므로, Name of the new network 은 wwan 이라고 기본값이 설정돼 있다.
다른 값을 할당해도 된다.

다음은 firewall 에 관한 설정을 해야 하는데..
일단 ‘ap_client‘ 라고 설정했다. (역시 이름은 맘대로 정해도 되지만, 알파벳과 밑줄만 되는 듯 하다. 줄표 – 는 안된다.

그리고 Submit 을 누르면 끝인데..

혹, ‘openwrt wireless is not associated‘ 이라는 오류가 발생할 때가 있다. 이 상황을 어찌 대처해야할 지는 모르겠으나.. 내 경우, Network – Wireless – Wireless Overview 의 두번째 항목에서 Edit 를 누른 뒤, Advanced Setting 에서 기본값 World 에서 South Korea (KR) 로 바꿔주니 해결됐다.

위 작업을 마치고 나면, /etc/config/wireless 파일이 생성되고, 위에서 지정한 내용이 저장이 된다.

랜포트 재할당.

위 상황이 끝나면, 한 공유기에서, 이 기기로 IP 가 2개가 할당된 상황이 된다. 하나는 유선 Ethernet 포트로, 또 하나는 무선으로.
ip a 명령이나, 아니면 Luci(웹)로 IP 할당이 잘 됐음을 확인한 뒤, 일단 전원을 끄고(ssh 로 접속한 뒤 poweroff 명령), 랜케이블 뽑은 뒤, 다시 전원을 켜고 이번엔 무선에 할당된 ip 로 접속한다.

무선랜카드 추가등등 작업을 위해서 랜포트를 dhcp 로 설정하는 작업이 필요했었는데, 이제는 랜포트의 원래 목적, 즉 스위치와 연결하도록 재설정 해줘야 한다.

아까 /etc/config/network 에서 새로 입력했던 부분은 삭제하고, 주석 처리한 부분을 되살린다.

다만, IP 대역을 다른 곳으로 바꾸길 원한다면 지금 바꿔도 된다. (기본값은 192.168.1.1 이다.)
수정했다면 재부팅.

이제, 큐비트럭을 스위치에 연결하고, 그 스위치에 또 다른 피씨를 연결하면, 그 피씨에 192.168.1.x 로 IP 가 할당이 된다.

그리고 당연히, 그 PC 에서 ping 192.168.1.1 도 되고, ssh root@192.168.1.1(큐비트럭)으로 접속도 된다.

그런데…
이건 안된다.

ping 168.126.63.1
PING 168.126.63.1 (168.126.63.1) 56(84) bytes of data.
From 192.168.1.51 icmp_seq=1 Destination Host Unreachable
.....

즉, 지금은 내부통신은 되지만, 라우터(큐비트럭, 192.168.1.1)를 넘어가는 통신은 안되는 상황이다.

마지막 한단계가 남았다.

Luci 로 가서, Network – Firewall 을 확인한다.

아까 만들어준 ap_client 가 보이는데, Forwarding 이 설정돼 있지 않고, Masquerading, MSS clamping 도 꺼져있다.
Edit 를 누르고 수정 작업에 돌입한다.

** 뒤에 내용이 더 필요하지만, 완성할 가능성은 0.

안녕하세요. 글 남겨주셔서 고맙습니다.