ルーターをモバイルWiFiに接続する

中2 杉本 Raspberry Pi

モバイルWiFiをルーターと接続する必要があったのですが、ネットワーク素人の私にはNATコンバータなんて知識はなかったので、そのための備忘録として残しておきます。


物理部には部費で買った楽天ポケットWiFiを使用しており、これは部員の生命線となっています。

そして物理部にはもう一つネットワークがあり、それがTP-LinkのAX4800というルーターを頂点とする部内ネットワークです。ここのサーバーなどがこのネットワークに属しており、ファイル共有などに使用しています。

そして部員はどちらのネットワークを使用するでしょうか。もちろん前者です。インターネットがつながっていないネットワークなんて誰も使いません。

普通にモバイルWiFiから生えてるLANをルータに挿せばいいのではと思ったのですが、なんとモバイルWiFiから生えてるのはUSBです。これにはLANも刺さりません。1無線→有線の変換をどうにか中継機を使わずにやろうと必死にググった結果、iptablesというものを利用しポートフォワーディングすることでモバイルWiFiと接続できるということを知りました。これはやらないわけには行かないと思いましたので早速やることにしました。

環境

ラズパイ:Raspberry pi 4 8GB
ルーター:AX4800
ポケットWiFi:楽天

ポケットWiFiをeth1に、ルーターをeth0に接続。eth1を上流とする。

IPの固定

nanoなりなんなりで/etc/dhcpcd.confに以下の内容を追記する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# ...

interface eth1
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

denyinterfaces eth0
interface eth0
static ip_address=192.168.20.1/24
static routers=0.0.0.0
static domain_name_servers=8.8.8.8

ラズパイのeth1はDHCPに頼ることにした。これはラズパイへのSSH等での接続の際に面倒になるので悪手であるが、二度とSSHで接続する必要が無いと信じてIPの固定をサボった。

eth0のIPは適当に192.168.20.xxxにした。20の部分はすきに変えても問題はない。dnsmasqというdnsサーバーのソフトウェアのインストールがどうしても上手くいかなかったため、dnsmasqをインストールしてDNSサーバーを走らせるのではなくGoogle Public DNSに頼ることにしたが、ここにせラズパイで名前解決が必要になる状況がないはずなので一応として8.8.8.8を設定した。ここも1.1.1.1(Cloudflare)などお好みのモノを使っていただいて構わない。

以上の操作終了後、dhcpcdを再起動させ設定を適用させる。

1
sudo systemctl restart dhcpcd

DHCPサーバーの設定

/etc/dhcp/dhcpd.conf

1
2
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

の2つをコメントアウトし、

1
#authoritative;

をコメントから外すことで正当なDHCPサーバーであることを示します。

そして以下を追記します。

1
2
3
4
5
6
7
subnet 192.168.20.0 netmask 255.255.255.0 {
    range 192.168.20.100 192.168.20.254;
    option routers 192.168.20.1;
    option domain-name-servers 8.8.8.8;
    option broadcast-address 192.168.20.255;
    ignore declines;
}

こちらもDNSサーバーはGoogle Public DNSに投げます。今回はrangeで192.168.20.100~254だけを配るようにし、2~99は手動で管理するようにしました。20~はproxmox、90~はサーバーというように決めました。(独断)

その後/etc/default/isc-dhcp-serverを以下のように編集することでインターフェイスに設定を紐付けます。

1
INTERFACESv4="eth0"

ポートフォワーディングする。

/etc/rc.localを編集し、exitの前に以下を追記します。

1
2
3
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

前2つでeth0と1を相互に通信、三個目でラズパイからのパケットの送信元をeth1とすることで正常な通信ができるようにしています。


これで再起動すれば通信できるようになっているはずです。

番外編:倉庫につながらない(2/18)

AX4800は割りと電波強い方だと思うのですが(少なくとも自宅のものよりは)、流石に倉庫と教室の鉄の壁二枚を超えると電波がクソザコナメクジになってしまい、これでは電波を受信するどころではないので、OneMeshに対応している中継機を買うことで解決することにしました。

新子安から川崎のビックカメラまで愚痴をたらしながら向かい、その向かったビックカメラにはRE330という目当ての中継機が売っていない!今日中継機を手に入れられないと試験で部活が長期の休みに突入してしまうので、時間を無駄にしないためにも今度はヨドバシカメラに向かいますが、こちらもRE330が売っていない。なのでRE330と似たRE305 v3というものを買うことにし、帰路につきました。

その後順調にセットアップは成功し、倉庫に設置してあるWindows Serverともつなぐことができました。めでたしめでたし。

しかしやけに転送速度が遅く、なぜだろうと思っていたらなんと有線LANの通信速度がなんと100Mbps!

物理部、相変わらず安物買いの銭失い!次回に続く!


  1. 変換すればいいのでは、とも思ったのですが、そうすると電源供給ができなくなると思ったので変換は使いませんでした。LANと電源供給が一気にできるものがあるかもしれませんが。 ↩︎

次へKodi(LibreELEC)をセットアップする>
前へ「ただし同じ記号を二度用いてはならない」とは>