Help us understand the problem. What is going on with this article?

RaspberryPi Wifi APを使った無線ルーターの設定

More than 1 year has passed since last update.

復習がてらRaspberryPiで遊ぶことに。RaspberryPiにWifi USBを2つ差して、片方はWifi AP、片方はWifiのクライアントにしてみた。

Wifiに繋がったAPができる。

ちなみに今これを書いている環境は、、、、ざっくり、、、

pc <-> raspberrypi wifi ap <-> pockewifi <-> interent

意味あるのかないのかぁ、、、で繋いでみている。

とりあえず、うちはLAN線が繋げるルータとやらが無いので、自前のマックにdhcpとdns upして、LANスイッチハブ経由でmacとraspberry piを繋いで、sshでraspberrypiにログインして作業することに。

自宅は光も繋がっていない、低速pocketwifiとau 4gが外に出るための手段。
家遅い環境に慣れておくと、会社の環境がまだマシなので、会社にいく喜びが一つ増える。

見た目はこんな感じ
IMG_0453.JPG

wlan0のWifiのインターフェースをeth0に変更するとアップリンクはLAN線経由になる。

パッケージのインストール

$ sudo apt-get install hostapd dnsmasq isc-dhcp-server iw rng-tools

network interface の設定

$ sudo vi /etc/network/interfaces

以下の設定を追加
IPとかは自由に設定

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

allow-hotplug wlan1
iface wlan1 inet static
address 192.168.10.1
netmask 255.255.255.0

dhcpサーバーの設定

$ sudo vi /etc/dhcp/dhcpd.conf

以下を設定ファイルに追加
rangeとかは自由に設定

subnet 192.168.10.0 netmask 255.255.255.0 {
    range 192.168.10.10 192.168.10.20;
    option broadcast-address 192.168.10.255;
    option routers 192.168.10.1;
    default-lease-time 600;
    max-lease-time 7200;
    option domain-name "local";
    option domain-name-servers 8.8.8.8, 8.8.4.4;
    }
sudo vi /etc/default/isc-dhcp-server

INTERFACEの設定

INTERFACES="wlan1"

isc-dhcp-server起動

$ sudo service isc-dhcp-server start

起動設定

$ sudo update-rc.d isc-dhcp-server enable

WIFI APの設定

$ sudo vi /etc/hostapd/hostapd.conf

以下をファイルに設定

interface=wlan1
driver=rtl871xdrv
ssid=MyHomePi
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=raspberry
wpa_key_mgmt=WPA-PSK
#wpa_pairwise=TKIP
rsn_pairwise=CCMP

以下に、コンフィグの場所を追記

$ echo 'DAEMON_CONF="/etc/hostapd/hostapd.conf"' | sudo tee -a /etc/default/hostapd

ドライバーの対応準備
以下のような状態なら

$ lsmod |grep 8192cu
8192cu                550797  0
$ iw list
nl80211 not found.

以下での方法で rtl871xdrv の対応をする

$ wget http://www.adafruit.com/downloads/adafruit_hostapd.zip 
$ unzip adafruit_hostapd.zip 
$ sudo mv /usr/sbin/hostapd /usr/sbin/hostapd.orig 
$ sudo mv hostapd /usr/sbin
$ sudo chmod 755 /usr/sbin/hostapd

以下からDLして、make して hostapd をコピーした方が良いかも
http://github.com/jenssegers/RTL8188-hostapd/archive/v2.0.tar.gz

wlan0とwlan1のルーティング

$ sudo vi /etc/sysctl.conf

以下のコメントアウト省く

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
$ echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
$ cat /proc/sys/net/ipv4/ip_forward
1

ルーティングの設定

$ sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
$ sudo iptables -A FORWARD -i wlan0 -o wlan1 -m state --state RELATED,ESTABLISHED -j ACCEPT
$ sudo iptables -A FORWARD -i wlan1 -o wlan0 -j ACCEPT
$ sudo iptables-save | sudo tee /etc/iptables.ipv4.nat
$ echo 'pre-up iptables-restore < /etc/iptables.ipv4.nat' | sudo tee -a /etc/network/interfaces

hostapの起動

$ sudo service hostapd start

起動設定

$ sudo update-rc.d hostapd enable

ipのチェック

$ nmap -p 22 --open -sV 192.168.10.0/24

ログイン

$ ssh 192.168.10.1 -l pi
password raspberry

パフォーマンスチューニング

$ sudo vi /etc/sysctl.conf
以下を追加
net.ipv4.ip_forward = 1
net.ipv4.tcp_window_scaling = 1
net.core.rmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096        16384   16777216

設定を反映

$ sudo sysctl -p /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.tcp_window_scaling = 1
net.core.rmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096        16384   16777216
$ sudo su -
# echo '16777216' > /proc/sys/net/core/rmem_max
# echo '16777216' > /proc/sys/net/core/wmem_max

参照
http://www.slashroot.in/linux-network-tcp-performance-tuning-sysctl
https://korekontrol.eu/blog/linux-network-performance-tuning
http://raspberrypi.stackexchange.com/questions/50240/missing-build-file-when-building-for-rtl8812au-driver

デフォルトGatewayの設定

wlan0がインターネットに繋げて、wla0経由で外につながるようにする

setup.sh
#!/bin/bash

sudo ifdown --force wlan0
sudo ifup wlan0
# 5秒ぐらい?
sleep 5
# $1 はdefault gatewayのアドレス
sudo route add default gw $1
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away