みなさんルーターは未知な技術で作られていると思っている方いると思います。なのでルーターの仕組み?を開設しつつiptablesで作ろうと思います。
環境
- Ubuntu 24.04
必要なもの
今回私はラズパイで作ろうと思っているので、以下の機材を用意してください。
- ラズパイ
- USB - LAN(要するにUSBからLANに変換するもの大体二千円弱で売っています)
- 気力
- スイッチングハブ
依存関係をインストール
sudo apt install iptables-persistent
netplanの設定
networks:
eth0: # グローバルなネットワークに接続している方のNIC
dhcp4: true # DHCPで今回は自動的に割り当ててもらうようにしたが、固定にしてもよい
eth1: # ローカル側(スイッチングハブにつなげている方)
dhcp4: false
addresses:
- 172.16.70.254/24
これの後反映しましょう
sudo netplan apply
Iptablesの設定(マスカレード)
sudo iptables -t nat -A POSTROUTING -s 172.16.70.0/24 -o eth0 -j MASQUERADE
eth0
の部分ですが、グローバルなネットワークに接続しているNICを指定してください。
iptablesの永続化
再起動が起きた際に今の編集データが消えるので保存しましょう
sudo iptables-save | sudo tee /etc/iptables/rules.v4
カーネルパラメータで転送を有効にする
デフォルトではipv4のフォワーディングが無効になっているので有効にしてあげてください。
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
このコマンドを実行するだけで反映できます。
ルーターの完成と早速利用する!
スイッチングハブに手持ちの端末のLANを接続させてください。
次に以下のように設定してください。
IPアドレス: 172.16.70.1/24
サブネットマスク(任意): 255.255.255.0
デフォルトゲートウェイ: 172.16.70.254
もしも、、、
github.comなどにアクセスができなかった場合、MTU値が最適ではない可能性があります。なのでTCP MSSクランプという技術を用いて解決させてください。
sudo iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
最後に
結構簡易的なルーターだと思います。これを発展させる形でDHCPサーバを建てたり、ファイアーウォールを有効にしたりポートフォワードを有効することで本物のルーターに近くなります。
ではまたさようならー