イーサネットコンバーター

その他

PCにLinuxをインストールしたり、FPGA をネットワークに接続したりするとき、 イーサネットの接続ポートが近くにない場合があります。このような時は、イーサネットコンバーターでPCやFPGAをWi-Fi環境に接続する方法があります。

イーサネットコンバーター

イーサネットコンバーターは、Raspberry Pi3で実現します。

設定は、こちらの記事を参考にしています。https://www.raspberrypi.org/forums/viewtopic.php?t=132674

1.raspbianのSDカード作成

公式サイトからraspbianをダウンロードして、raspbianのイメージを書き込んだSDカードを用意します。SDカードへの書き込みは、 Etcherが便利です。 今回利用した raspbian はBusterです。

2. SDカード内容の編集

raspbianをインストールしたSDカードの内容を、必要に応じて修正します。例えば、 SSH接続を有効にするには、SDカードの/boot/にsshという空のファイルが必要になります。

-rwxrwxrwx        0 May 29 16:10 ssh
-rwxrwxrwx    18974 Apr  8 10:25 LICENSE.oracle
-rwxrwxrwx    190 Apr  8 10:25 cmdline.txt
-rwxrwxrwx    145 Apr  8 10:25 issue.txt
:

UARTを利用する場合は、/boot/config.txtに以下の追加が必要になります。

dtoverlay=pi3-miniuart-bt

2. Raspberry Pi3の起動

Raspberry Pi3にSDカードを挿入し、キーボード、マウス、HDMIディスプレイを接続するか、またはUARTを接続して、Raspberry Piを起動します。起動後、Raspberry Pi3にログインします。

Raspbian GNU/Linux 9 raspberrypi ttyAMA0
raspberrypi login: pi
Password:
Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l

3. イーサネットコンバーターの設定

wifiの設定

aptを実行するために、まずは通常のWi-Fiの設定を行います。

$sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
// 以下を追加
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
    ssid="your ssid"
    psk="your password"
}

必要であれば、ifconfigで表示されるwlan0のMACアドレスを、Wi-FiルーターのMACアドレスフィルタリングで許可にしておきます。

wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether b8:xx:xx:xx:xx:xx  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

rebootしてWi-Fi接続を確認します。

$ifconfig
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.11  netmask 255.255.255.0  broadcast 192.168.10.255
:

アップデートの実行

apt updateの後、dnsmasqをインストールします。

$sudo apt update
$sudo apt install dnsmasq -y

イーサネット固定IP設定

eth0に DHCPサーバの 固定IPを割り当て、wlan0よりも低い優先度に設定します。

$sudo vi /etc/dhcpcd.conf
// 以下を追加
interface wlan0
metric 200

interface eth0
metric 300
static ip_address=172.24.1.1/24

dnsmasqの設定

/etc/dnsmasq.confの内容を以下の様に置き換えます(最初から記載されている内容はすべて削除して置き換える)。

$sudo vi /etc/dnsmasq.conf
// 以下の内容に変更する
interface=eth0      # Use interface eth0  
listen-address=172.24.1.1 # Explicitly specify the address to listen on  
bind-interfaces      # Bind to the interface to make sure we aren't sending things elsewhere  
server=8.8.8.8       # Forward DNS requests to Google DNS  
domain-needed        # Don't forward short names  
bogus-priv           # Never forward addresses in the non-routed address spaces.  
dhcp-range=172.24.1.50,172.24.1.150,12h # Assign IP addresses between 172.24.1.50 and 172.24.1.150 with a 12 hour lease time

上記の例では、Raspberry Piのイーサネット側の固定IPアドレスを172.24.1.1に割り当て、DHCPのアドレスは172.24.1.50から172.24.1.150としています。

別の例として、Raspberry Piのイーサネット側の固定IPアドレスを192.168.3.1に割り当て、 DHCPのアドレスを192.168.3.50から 192.168.3. 150とする場合は、 /etc/dhcpcd.confと/etc/dnsmasq.confを次のように変更します。

$sudo vi /etc/dhcpcd.conf
// 以下を追加
interface wlan0
metric 200

interface eth0
metric 300
static ip_address=192.168.3.1/24
$sudo vi /etc/dnsmasq.conf
// 以下の内容に変更する
interface=eth0      # Use interface eth0  
listen-address=192.168.3.1 # Explicitly specify the address to listen on  
bind-interfaces      # Bind to the interface to make sure we aren't sending things elsewhere  
server=8.8.8.8       # Forward DNS requests to Google DNS  
domain-needed        # Don't forward short names  
bogus-priv           # Never forward addresses in the non-routed address spaces.  
dhcp-range=192.168.3.50,192.168.3.150,12h

IPv4 フォワーディングを有効にする

$sudo vi  /etc/sysctl.conf
// 以下の行を有効にする
net.ipv4.ip_forward=1

リブートして設定を反映します。

iptablesの設定

$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

ブート時の設定用ファイルを作成し、ブート時に上記のIP マスカレードの設定が反映されるようにします。まず、次のコマンドを実行します。

$sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

次のようなファイルが生成されます。

 #/etc/iptables.ipv4.nat
# Generated by iptables-save v1.6.0 on xx
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o wlan0 -j MASQUERADE
COMMIT
# Completed on xx

70-ipv4-nat というファイルを作成し、ブート時に IP マスカレードの設定が反映されるようにします。

$ sudo vi /lib/dhcpcd/dhcpcd-hooks/70-ipv4-nat 
//以下を追記
iptables-restore < /etc/iptables.ipv4.nat

4.機器を接続して動作を確認する

ネットワークに接続したい機器をイーサネットケーブルでRapberry Pi3と接続して、Raspberry Pi3をリブートします。接続する機器のIPアドレスの割り当ては、DHCPに設定しておきます。

Raspberry Pi3のIP貸出ログは、 /var/lib/misc/dnsmasq.leasesに出力されます。

$less /var/lib/misc/dnsmasq.leases
1575392679 00:xx:xx:xx:xx:5c 192.168.3.135 machine0 *
1575392401 08:xx:xx:xx:xx:9a 192.168.3.113 * * 
1575385972 00:xx:xx:xx:xx:2e 192.168.3.82 PC0 01:xx:xx:xx:xx:xx:2e
1575379858 f4:xx:xx:xx:xx:4b 192.168.3.143 PC1 01:xx:xx:xx:xx:xx:4b
タイトルとURLをコピーしました