ほとんどネタ被りってのもありますが・・・汗
ラズパイを有線LANの接続先にする方法です
ラズパイを家庭内の無線LANに接続し、有線LANのアクセス先にします
簡単に無線LAN接続する方法を記載しましたが(ここ)、試作用にOSを再インストールするときは有線LANに接続したほうが断然楽です
また、無線LANがオンボードでないRaspberrypi(初期)やRaspberrypi2でルーターが遠くにあるなんかはこの方法は便利だと思います
ほとんどQiitaに記載されている方法のため、ネタ被り感が半端ないです
基本はwlan0をlo0を入れ替えるだけです
参考:http://qiita.com/mt08/items/f2e4f9d3b1ed00849e23
こんな感じの接続方法
インターネット –> ルーター -無線LAN-> Raspberrypi3 -有線LAN-> 色々な機器
必要なもの
- Raspberrypi3
- 適当なスイッチングハブ
手順
ほんとQiitaと一緒なので簡単にかきます ※詳細はQiita参照(ここ)
いつものやつ
$sudo apt-get update $sudo apt-get upgrade -y
dhcpサーバーのパッケージインストール
$sudo apt-get install -y hostapd isc-dhcp-server
dhcd.confの編集
$sudo nano /etc/dhcp/dhcpd.conf #コメントアウト # option definitions common to all supported networks... #option domain-name "example.org"; #option domain-name-servers ns1.example.org, ns2.example.org; #一番最後に記述 subnet 192.168.42.0 netmask 255.255.255.0 { range 192.168.42.10 192.168.42.30; #割り振れるアドレスが10~30まで option broadcast-address 192.168.42.255; option routers 192.168.42.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; }
isc-dhcp-serverの編集
$sudo nano /etc/default/isc-dhcp-server # On what interfaces should the DHCP server (dhcpd) serve DHCP requests? # Separate multiple interfaces with spaces, e.g. "eth0 eth1". INTERFACES="eth0" #有線LANをdhcpにするためeth0にする
dhcpcd.confの編集
$sudo nano /etc/dhcpcd.conf #最後に記述 #アドレスの固定 interface eth0 static ip_address=192.168.42.1/24
hostapd.confの編集
$sudo nano /etc/hostapd/hostapd.conf interface=eth0 driver=nl80211 #driver=rtl871xdrv ssid=******* #SSID 各自で編集 hw_mode=g channel=6 ieee80211n=1 wmm_enabled=1 ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40] macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_key_mgmt=WPA-PSK wpa_passphrase=******* #パスワード 各自で編集 rsn_pairwise=CCMP
hostapdの編集
$sudo nano /etc/default/hostapd # file can be found at /usr/share/doc/hostapd/examples/hostapd.conf.gz # #下記の行のコメントアウトをはずす DAEMON_CONF="/etc/hostapd/hostapd.conf"
sysctl.confの編集
$sudo nano /etc/sysctl.conf # Uncomment the next line to enable TCP/IP SYN cookies # See http://lwn.net/Articles/277146/ # Note: This may impact IPv6 TCP sessions too #net.ipv4.tcp_syncookies=1 # Uncomment the next line to enable packet forwarding for IPv4 #下記の行のコメントアウトをはずす net.ipv4.ip_forward=1
iptablesの設定
$sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward" $sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE $sudo iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT $sudo iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT $sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
70-ipv4-natの編集
$sudo nano /lib/dhcpcd/dhcpcd-hooks/70-ipv4-nat #追記 iptables-restore < /etc/iptables.ipv4.nat
再起動
$sudo reboot
サービスの開始と登録
$sudo service hostapd start $sudo service isc-dhcp-server start $sudo update-rc.d hostapd enable $sudo update-rc.d isc-dhcp-server enable
isc-dhcp-serverの編集
case "$1" in start) test_config log_daemon_msg "Starting $DESC" "$NAME" #waitを入れる sleep 7 start-stop-daemon --start --quiet --pidfile "$DHCPD_PID" \ --exec /usr/sbin/dhcpd -- \ -q $OPTIONS -cf "$DHCPD_CONF" -pf "$DHCPD_PID" $INTERFA$
これで終了です
有線LANで接続し、割り振られたIPをみると192.168.42.*で割り振られていると思います
MACアドレスを申請しなければならないネット環境でも、このようにネットワークを構築することで、MACアドレスを申請していないパソコンでもラズパイを返してネットワーク接続をすることができるようになりました
便利だと思うコマンド
- ラズパイ上で割り振ったIPを確認するコマンド
$cat /var/lib/dhcp/dhcpd.leases #こんなかんじででてくる lease 192.168.42.10 { starts 1 2017/04/17 02:18:22; ends 1 2017/04/17 02:28:22; cltt 1 2017/04/17 02:18:22; binding state active; next binding state free; rewind binding state free; hardware ethernet 00:00:00:00:00:00; #macアドレス uid "*********************"; client-hostname "android-a5273765c0f82141"; #ホストネーム }
コメント
hostapd.confの中で
interface=eth0
driver=nl80211
とするとエラーになりませんか?
eth0のドライバーがnl80211ではないので…
2020年頃では記事の設定で可能でした。
ラズパイのアップデートで nl80211 だと設定できなくなったと考えられます。
指摘ありがとうございました。