LoginSignup
4

More than 3 years have passed since last update.

ラズパイをルーター化する(NAT超えWake on LAN[4])

Last updated at Posted at 2020-05-27

はじめに

前回の続きです.
とりあえずやりたいことはこんなんです.

network_detail.png

今回は「ラズパイをルーター化する」です.

有線LANアダプタを買う

ラズパイには,LANポートは1つしかないので,有線LANアダプタを書います.こんなやつ

新しいEthernetに固定IPアドレスを割り当てる

ip aコマンド(sudo ifconfig)で確認すると新たなEthernet Ineterfaceが追加されているはずです.今回はeth1という名前でした.

$ sudo ifconfig # ip a の方がいいっぽいです
eth1: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 04:ab:18:3b:af:e2  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

固定IPを割り当てます.今回は,下図のようにラズパイをルーター※として,新たなネットワーク(192.168.1.0/24)を作りたいので,

network

sudo vi /etc/dhcpcd.conf

以下を追記します.

/etc/dhcpcd.conf
# External ethernet
interface eth1
static ip_address=192.168.1.1/24 # you can assign arbitrary ip address and subnet mask. Note that client must designate this address as gateway
static routers=**.**.**.** # you can assign arbitrary ip too. if this server's network is from another router, set routers address may be better.(you will not need to set dns masquerade)
static domain_name_servers=8.8.8.8 # see above line's comment

※ルーター化と言っていましたが,実はIPマスカレードするだけでした.
↑の**.**.**.**にルーターのアドレス,dnsアドレスにGoogleのPublicアドレスを入れています.(もはやルーターではないかもしれませんね...詳しくないのでわかりません笑)
※ラズパイに完全にルーター機能を付与する場合は**.**.**.**にも任意のアドレスを割り当て,dnsアドレスはコメントアウトすべき?.そして,参考にあるようにDNSマスカレードとDHCPサーバーの設定を行うといいのですかね...

確認

ラズパイに繋いだデスクトップPCの電源を入れて,ipを確認すると,eth1にIPが割り当てられます.
※デスクトップPCはまだインターネットに繋がりません.

sudo ifconfig # or ip a
# eth1: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
#         inet 192.168.1.1  netmask 255.255.255.0  broadcast 192.168.1.255
#         ether **:**:**:**:**:**  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
ping 192.168.1.**

IPマスカレードの設定

IPマスカレードの設定をします.
1行目:プライベートIPアドレス空間から-oへの転送許可.
2行目:SNAT.
3行目:DNAT.

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT # SNAT
sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT # DNAT

このままだと一時的で,再起動すると情報が消えてしまうので,

mkdir ~/iptable && cd ~/iptable
sudo iptables-save > iptables.dat
sudo vi /etc/rc.local 
/etc/rc.local
# iptables
iptables-restore < /home/{user name}/iptable/iptables.dat

これで,デスクトップPCがインターネットに繋がるはずです.

参考

Ubuntu 16.04 でルータつくる
Ubuntu 18.04LTS で NAT ルータを構築
Linuxマシンをルータにする方法
手元のUbuntuにUSB-LANアダプタを追加してルータ化する
Ubuntu PCをルータ代わりにして、新しくLANを構築してみる
How to Setup a Raspberry Pi DNS Server
Raspberry PiにDnsmasqをインストールする

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4