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アドレスを取得しています.
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'
生パスワードがコメントアウトで記載されているため,確認後に削除することをおすすめします.
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
を割り当てています.
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)に流すよう設定します.設定後は反映のために一度再起動してください.
ここでは簡易的に設定していますが,本番利用の際にはセキュリティ等を考慮した適切な設定を検討してください.
# 追記する
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
までの範囲でアドレスを配布します.
#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)のインターフェースを記載してください.
INTERFACESv4="eth0"
#INTERFACESv6=""
DHCPサーバを起動してください.eth0側がリンクアップしていないと起動に失敗する気がします.この時点でRaspberry PiとPCを接続しておくとよいです.
sudo systemctl start isc-dhcp-server.service
sudo systemctl enable isc-dhcp-server.service
LAN配下のPCにアドレスが割り振られて,インターネット接続可能なら成功です.お疲れ様でした.