2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Raspberry Pi OS(Buster/2020 Aug)でnftablesを使ってIPv4 NAPT

Posted at

やりたいこと

Raspberry Pi ZeroをIPv4のNATBOXというかイーサネットコンバータというか、そういう感じのアレにしてQoLを上げたい。ただし、やるのはmasqueradeだけでよくて、DHCPとかDNSとかそういうのは別の人がやっているとする。せっかくだから(?)iptablesではなくてnftablesで動かしてみたい。

はまりポイント

  • ipv4のip forwardingが初期設定では無効になってるので、nftのmasquarade設定書いてもしれっと無視される
  • 無視されるだけでエラーがログにでないので念力でなんとかする必要があった
    • nftablesにログとる方法があるっぽいのでそれをやれば見つけられたのかもしれないが、何某かのmodprobeがいるっぽくてぐんにょりしててgoogle先生に頼った

手順

Raspberry Pi Zeroにeth0とwlan0があり、wlan0側がinternetで、eth0からの接続を全部NAPTしてwlan0側に流すと仮定する。

まずnftablesをインストールし、masquerade設定を記述する。

% sudo apt-get install nftables
% sudo vi /etc/nftables.conf
/etc/nftables.conf
(ファイル終端に以下を追記)

table ip nat {
        chain PREROUTING {
                type nat hook prerouting priority 0;
        }
        chain POSTROUTING {
                type nat hook postrouting priority 0;
                oifname "wlan0" masquerade
        }
}

次にipv4のforwardを有効にする設定を記述する。

% sudo vi /etc/sysctl.conf
/etc/sysctl.conf
...
(以下の行をアンコメント)
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
...

最後に、sysctl.confを読み込ませ、nftables.serviceを起動する。

% sudo sysctl -p
% sudo systemctl start nftables.service

素のRaspberry Pi OS 2020 Augで動作確認しましたが、apt-get full-upgradeした後でも動きました(2020/11/24)。

うちの環境

  • Raspberry Pi Zero
    • Raspberry Pi OS Lite(Buster/2020 Aug)
      • Linux raspberrypi 5.4.51+ #1333 Mon Aug 10 16:38:02 BST 2020 armv6l GNU/Linux
    • USBハブ+EthernetアダプタWifiドングルが刺さっている
    • Wifiドングルの接続先にブロードバンドルータがあって、ブロードバンドルーターのNAPT越しにインターネットに接続されている
  • Ethernetアダプタの口につながってるLANのそれぞれの機器からインターネットに接続したい

参考にしたサイト

Raspbianをbuster化したら、iptablesでちょっとだけハマる - Soukaku's HENA-CHOKO Blog

Raspberry pi を NAT ルーター兼 DHCP + DNS サーバーにしたい - 子育てしながらエンジニアしたい

nftables - ArchWiki

nftablesクイックHowto - りおてく

おまけメモ

Wifi設定(平文で書いてるので真似しちゃだめよ)

/etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

network={
        SSID="(SSIDを記載)"
        psk="(keyを記載)"
}

network={
...
}

固定IP割り振り設定

/etc/dhcpcd.conf
...
interface eth0
static ip_address=xxx.xxx.xxx.xxx
...
2
2
0

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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?