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

Raspberry Piで無線LANイーサネットコンバータ兼簡易ルータを作る

TL;DR

  • Raspberry Piの無線LAN(wlan0)と有線LAN(eth0)を使ってルータを構築します.
  • wlan0をWAN側として上流の無線APと接続し,eth0をLAN側として配下のPCらにIPアドレスを配布します.
    • イメージ的にはルータ機能付きの無線LAN中継機です.

構築環境

  • 無線AP:DHCPによるアドレス配布が行われる既存の無線APを想定しています.
  • Raspberry Pi:無線APとWiFi接続しDHCPサーバからアドレスを取得しています(wlan0).LAN側(eth0)で192.168.21.0/24のIPセグメントを設定し,LAN配下のPCにDHCPでアドレスを配布しています.ゲートウェイとして機能させ,LAN側(eth0)から受け取ったリクエストをWAN側(wlan0)にフォワードします.
  • PC:イーサネットでRaspberry Piと接続し,DHCPによるIPアドレスを取得しています.

2020-09-15_blockdiag (2).png

Raspberry Piは,Raspberry Pi 2を利用しています.無線LAN接続のためにUSB無線アダプタを利用していますが,後継機ならば標準搭載なので必要ありません.2はイーサネット接続が100BASE-Tなので,可能ならば最新の4をおすすめします.OSはRaspbian Liteをインストールしています.

構築

Raspberry Piの初期セットアップは省略します.具体的にはsshdとか初期ユーザとかです.
本稿ではvimを使っていますが,なんでもいいです.

既に記載されていますが,無線LAN側をwlan0,有線LAN側をeth0に設定しています(デフォルト).

無線設定(wlan0)

wpa_supplicantを使って無線接続設定を行います.SSIDはテキトーに検索するなりしてください.

sudo iw dev wlan0 scan | grep SSID

以下のコマンドでwpa_supplicant.confにネットワーク設定を追記します.

sudo sh -c 'wpa_passphrase <SSID> <Passphrase> >> /etc/wpa_supplicant/wpa_supplicant.conf'

生パスワードがコメントアウトで記載されているため,確認後に削除することをおすすめします.

/etc/wpa_supplicant/wpa_supplicant.conf
network={
        ssid="SSID"
        #psk="Passphrase" # 消す
        psk=xxxxxxxxxxx
}

wpa_supplicantで無線APに接続してください.systemd経由で起動できる気がします.特段設定せずに繋がったので,環境によるかもしれません.APからDHCPでIPアドレスが取得できていればよいです.

sudo systemctl start wpa_supplicant.service
sudo systemctl enable wpa_supplicant.service

有線設定(eth0)

eth0側でIPセグメントを設定します.
Raspberry Piには192.168.21.1を割り当てています.

/etc/dhcpcd.conf
interface eth0
static ip_address=192.168.21.1/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
static routers=0.0.0.0
static domain_name_servers=0.0.0.0

IPマスカレード設定

LAN側(eth0)からのパケットをWAN側(wlan0)に流すよう設定します.設定後は反映のために一度再起動してください.
ここでは簡易的に設定していますが,本番利用の際にはセキュリティ等を考慮した適切な設定を検討してください.

/etc/rc.local
# 追記する
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

exit 0

DHCPサーバのインストールと設定

DHCPサーバを構築します.以下のソフトウェアをインストールします.

sudo apt install -y isc-dhcp-server dnsmasq

コンフィグを設定します.不要な設定をコメントアウトし,必要な設定のコメントアウトを外します.
その後,DHCP配布するアドレスの設定をしてください.今回は192.168.21.2から192.168.21.99までの範囲でアドレスを配布します.

/etc/dhcp/dhcpd.conf
#option domain-name "example.org"; #コメントアウトする
#option domain-name-servers ns1.example.org, ns2.example.org; #コメントアウトする

authoritative; #コメントアウトを外す

# 追記する
subnet 192.168.21.0 netmask 255.255.255.0 {
        range 192.168.21.2 192.168.21.99;
        option routers 192.168.21.1;
        option domain-name-servers 192.168.21.1;
        option broadcast-address 192.168.21.255;
        ignore declines;
}

インターフェースと紐づけます.LAN側(eth0)のインターフェースを記載してください.

/etc/default/isc-dhcp-server
INTERFACESv4="eth0"
#INTERFACESv6=""

DHCPサーバを起動してください.eth0側がリンクアップしていないと起動に失敗する気がします.この時点でRaspberry PiとPCを接続しておくとよいです.

sudo systemctl start isc-dhcp-server.service
sudo systemctl enable isc-dhcp-server.service

LAN配下のPCにアドレスが割り振られて,インターネット接続可能なら成功です.お疲れ様でした.

参考

roamer7038
20代ニート
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした