일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- postgres
- GoCD
- port forwarding
- postgresql
- ftp
- openpyxl
- STF_PortForwarding
- 실행권한
- kitura
- nGrinder
- nohup
- insert
- appium
- ubuntu
- PYTHON
- Jupyter Notebook
- SWIFT
- rethinkdb
- appium server
- centos
- mysql
- Materials
- create table
- Jupyter
- ssh
- sshpass
- 28015
- nmap
- STF
- perfect
- Today
- Total
don't stop believing
Ubuntu를 WiFi (AP)로 만들어 봅니다. (첫번째 도전) 본문
Ubuntu 서버를 AP로 만들어서 테스트 할 일이 생겼습니다.
네트워크의 bandwidth와 latency를 변경해서 다양한 무선 네트워크 환경을 만들어 보는 것입니다.
유료 솔루션(application 등)이야 있겠지만 잠깐 테스트 하는 거라 경험삼아 만들어 보려고 합니다.
우선 회사에 USB로 연결하는 무선 랜카드가 하나 있습니다.
ipTime A2000UA 입니다.
이걸 Ubuntu와 USB로 연결합니다. 그리고 ifconfig로 네트워크 정보를 확인해 보겠습니다.
$ ifconfig enp3s0: flags=4163mtu 1500 inet 10.10.1.221 netmask 255.255.248.0 broadcast 10.10.7.255 inet6 fe80::c400:e272:87c5:1d84 prefixlen 64 scopeid 0x20 ether 50:46:5d:05:55:58 txqueuelen 1000 (Ethernet) RX packets 3543998 bytes 710191740 (710.1 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 83786 bytes 6353543 (6.3 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 16 lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1000 (Local Loopback) RX packets 3894 bytes 323346 (323.3 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 3894 bytes 323346 (323.3 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ubs로 연결된 무선 랜카드는 잡히지 않습니다. 그렇습니다. 드라이버를 설치해 줘야 합니다.
ipTime A2000UA의 Ubuntu 드라이버를 설치해 줍니다.
설치 정보는 아래 링크에서도 확인할 수 있습니다.
https://github.com/diederikdehaas/rtl8812AU/tree/driver-4.3.20
$ git clone https://github.com/diederikdehaas/rtl8812AU.git $ cd rtl8812AU $ DRV_NAME=rtl8812AU $ DRV_VERSION=4.3.20 $ sudo mkdir /usr/src/${DRV_NAME}-${DRV_VERSION} $ git archive driver-${DRV_VERSION} | sudo tar -x -C /usr/src/${DRV_NAME}-${DRV_VERSION} $ sudo dkms add -m ${DRV_NAME} -v ${DRV_VERSION} $ sudo dkms build -m ${DRV_NAME} -v ${DRV_VERSION} $ sudo dkms install -m ${DRV_NAME} -v ${DRV_VERSION}
dkms status 명령으로 확인해 봅니다.
$ sudo dkms status rtl8812AU, 4.3.20, 4.15.0-39-generic, x86_64: installed
이제 드라이버 설치가 완료되었습니다. usb와 kernel의 module 정보는 lsusb와 lsmod로 확인할 수 있습니다.
다시 ipconfig로 네트워크 정보를 확인합니다.
$ ifconfig enp3s0: flags=4163mtu 1500 inet 10.10.1.221 netmask 255.255.248.0 broadcast 10.10.7.255 inet6 fe80::c400:e272:87c5:1d84 prefixlen 64 scopeid 0x20 ether 50:46:5d:05:55:58 txqueuelen 1000 (Ethernet) RX packets 3603751 bytes 721214728 (721.2 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 85406 bytes 6568370 (6.5 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 16 lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1000 (Local Loopback) RX packets 3947 bytes 327627 (327.6 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 3947 bytes 327627 (327.6 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 wlx64e599f214f1: flags=4099 mtu 1500 ether 64:e5:99:f2:14:f1 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 3 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlx64e599f214f1 이라고 무선 랜카드가 잡혔습니다.
다음으로는 연결한 무선 랜카드를 AP로 설정해야 합니다. iw를 설치하고 AP로 구성하겠습니다.
$ sudo apt-get install iw
iw list 명령으로 Supported interface modes을 확인합니다.
$ sudo iw list
iw list 명령을 실행하면 무선 랜(wireless devices)의 정보가 나오고 Supported interface modes 항목에 AP가 있는지 확인합니다.
Supported interface modes:
* IBSS
* managed
* AP
* monitor
* P2P-client
* P2P-GO
wlx64e599f214f1 정보도 확인해 봅니다.
$ sudo iw wlx64e599f214f1 info Interface wlx64e599f214f1 ifindex 3 wdev 0x1 addr 64:e5:99:f2:14:f1 type managed wiphy 0 txpower 12.00 dBm
AP로 사용하려면 접속한 Connection에게 IP를 할당해야 합니다. 그래서 DHCP를 구성해 줍니다.
isc-dhcp-server를 설치하고 dhcp로 할당할 IP 대역을 설정해 줍니다.
$ sudo apt-get install isc-dhcp-server $ sudo vim /etc/dhcp/dhcpd.conf
/etc/dhcpdhcpd.conf 파일에 아래와 같이 추가합니다.
subnet 10.10.0.0 netmask 255.255.255.0 { range 10.10.0.10 10.10.0.50; option domain-name-servers 8.8.4.4; option subnet-mask 255.255.255.0; option routers 10.10.0.1; interface wlx64e599f214f1; }
AP를 통해 전달할 네트워크 영역은 10.10.0.1 에서 10.10.0.254까지 입니다.
그중에서 10.10.0.10에서 10.10.0.50까지만 dhcp로 할당하도록 설정했습니다.
interface에는 무선랜 id를 등록해습니다.
이제 dhcp 서버를 재시작해 줍니다.
$ sudo /etc/init.d/isc-dhcp-server restart [ ok ] Restarting isc-dhcp-server (via systemctl): isc-dhcp-server.service.
다시 ifconfig 명령을 확인하면 ip가 할당된 것을 볼 수 있습니다.
$ ifconfig enp3s0: flags=4163mtu 1500 inet 10.10.1.221 netmask 255.255.248.0 broadcast 10.10.7.255 inet6 fe80::c400:e272:87c5:1d84 prefixlen 64 scopeid 0x20 ether 50:46:5d:05:55:58 txqueuelen 1000 (Ethernet) RX packets 336435 bytes 68564352 (68.5 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 11494 bytes 1285959 (1.2 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 16 lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1000 (Local Loopback) RX packets 526 bytes 42214 (42.2 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 526 bytes 42214 (42.2 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 wlx64e599f214f1: flags=4163 mtu 1500 inet 10.10.0.1 netmask 255.255.255.0 broadcast 10.10.0.255 inet6 fe80::66e5:99ff:fef2:14f1 prefixlen 64 scopeid 0x20 ether 64:e5:99:f2:14:f1 txqueuelen 1000 (Ethernet) RX packets 9399 bytes 1080379 (1.0 MB) RX errors 0 dropped 9 overruns 0 frame 0 TX packets 5672 bytes 2527341 (2.5 MB) TX errors 0 dropped 36 overruns 0 carrier 0 collisions 0
이제 무선 AP 설정을 해야 합니다.
hostapd를 설치하고 AP 설정을 해줍니다.
$ sudo apt-get install hostapd $ sudo vim /etc/hostapd/hostapd.conf
/etc/hostapd/hostapd.conf 파일을 열고 아래와 같이 작성해 줍니다.
interface=wlx64e599f214f1 driver=rtl8812AU ssid=tongchunAP ignore_broadcast_ssid=0 hw_mode=g channel=11 wpa=2 wpa_passphrase=ngle1234wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP wpa_ptk_rekey=600 macaddr_acl=0
interface에는 무선랜 id를 입력합니다.
driver에는 무선랜의 드라이버 이름이구요.
AP의 ssid는 tongchunAP로 했습니다.
/etc/default/hostapd에 앞서 작성한 config 정보를 추가해 줍니다.
$ sudo vim /etc/default/hostapd
/etc/default/hostapd 파일을 열면 DAEMON_CONF 설정 항목이 있습니다. 여기에 작성한 config 경로를 입력합니다.
DAEMON_CONF="/etc/hostapd/hostapd.conf"
저장이 되었다면 hostapd를 실행해 봅니다.
실행 명령은 sudo hostapd -d /etc/hostapd/hostapd.conf 입니다.
$ sudo hostapd -d /etc/hostapd/hostapd.conf random: Trying to read entropy from /dev/random Configuration file: /etc/hostapd/hostapd.conf Line 2: invalid/unknown driver 'rtl8812AU' 1 errors found in configuration file '/etc/hostapd/hostapd.conf' Failed to set up interface with /etc/hostapd/hostapd.conf hostapd_init: free iface 0x5605d1e8ceb0 Failed to initialize interface
그런데... 에러가 나네요.
새로 추가한 무선 랜 카드의 드라이버인 rtl8812AU를 찾을 수 없다고 합니다.
hostapd에서 드라이버 인식이 안되는 것 같습니다. 우선 /etc/hostapd/hostapd.conf에서 driver 정보를 제거하고 가겠습니다.
아래와 같이 driver 옵션 앞에 #을 붙여서 제거합니다.
interface=wlx64e599f214f1 #driver=rtl8812AU ssid=tongchunAP ignore_broadcast_ssid=0 hw_mode=g channel=11 wpa=2 wpa_passphrase=ngle1234 wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP wpa_ptk_rekey=600 macaddr_acl=0
다시 sudo hostapd -d /etc/hostapd/hostapd.conf 명령으로 실행해 봅니다.
잘 되네요. Control + C로 종료하고 백그라운드로 항상 실행될 수 있도록 systemctl에 hostapd를 추가해 줍니다.
$ sudo systemctl enable hostapd $ sudo systemctl start hostapd $ sudo systemctl status hostapd
추가된 무선 랜카드를 network interface에 추가해 줍니다.
$ sudo vim /etc/network/interfaces
/etc/network/interfaces 파일을 열고 아래 내용을 추가해 줍니다.
auto wlx64e599f214f1 iface wlx64e599f214f1 inet static hostapd /etc/hostapd/hostapd.conf address 10.10.0.1 netmask 255.255.255.0 wireless-mode Master
이제 마지막입니다.
Ubuntu 서버의 랜 선으로 들어오는 인터넷을 무선 랜으로 Forwarding 시켜야합니다. 그래야 추가한 AP가 인터넷과 연결이 됩니다.
$ sudo vim /etc/sysctl.conf
/etc/sysctl.conf 파일을 열고 아래 내용을 찾아 주석 처리를 해제합니다.
net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1
iptable 명령으로 forwarding 설정을 합니다.
$ sudo iptables -t nat -L $ sudo iptables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE $ sudo iptables -P FORWARD ACCEPT
이제 모두 되었습니다.
핸드폰에서 tongchunAP를 찾아 연결해 봅니다. 암호는 ngle1234로 했습니다.
그런데 문제가 있습니다.
엄~~~ 청 느립니다. BenchBee로 속도측정이 안될만큼 느립니다. 인터넷 연결이 되기는 합니다.
그리고 살짝 불안한 감이 있습니다.
다른 방법을 찾아봐야 할 것 같습니다.
[참고]
https://help.ubuntu.com/community/WifiDocs/WirelessAccessPoint
'Network' 카테고리의 다른 글
Traffic Control (tc) - loss, corrupt, duplicate (0) | 2019.01.11 |
---|---|
Traffic Control (tc) - delay (0) | 2019.01.10 |
Linux에서 인터넷 대역폭(속도) 측정하기 - iperf (0) | 2019.01.08 |
Ubuntu를 WiFi (AP)로 만들어 봅니다. (두번째 도전) (0) | 2019.01.04 |
어느날 갑자기 169.254.XX.XX, DHCP 서버를 못찾을 때 (0) | 2018.12.05 |