はじめに
前回の続きです.
とりあえずやりたいことはこんなんです.
今回は「ラズパイをルーター化する」です.
- [1]GCPとMyDNSを使って,ドメインを取得する
- [2]GCPにSoftether Serverを立てる(iPhone/ラズパイから接続)
- [3]GCP上のApacheからローカルのラズパイApacheにリバースプロキシする
- [4]ラズパイをルーター化する
- [5]Wake on LAN用のPythonスクリプトを作成する.
有線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
)を作りたいので,
sudo vi /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
# 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をインストールする