Back to tech

ラズパイを有線LANの接続先にする

3 min read
Table of Contents
[メモ] Raspberry Pi 3で、Wi-Fi アクセスポイントルータ - Qiita
qiita.com
image

ラズパイを有線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"; #ホストネーム
}

参考文献

  1. http://qiita.com/mt08/items/f2e4f9d3b1ed00849e23