たぶん動く...

多分GIS系の人。あくまで個人的見解であり、所属団体を代表するものではありません。

Raspberry PiをNAT dhcpサーバ化する

raspberry pi 3+を購入したのでNATサーバ化したのでそのメモ

前提

Raspberry Pi無線Lanをインターネットにつなげるものとします。 有線LANのほうをNATを設定する側とします。 Raspberry Piの有線Lanの設定が済んでいるものとします。

有線LANのLANの設定

/etc/netplan/50-cloud-init.yamlを編集 eth0のLANの設定をします。 10.0.0.0/24を割り当てるものとします。

network:
    ethernets:
        eth0:
            addresses: [10.0.0.1/24]
            nameservers:
                addresses: [192.168.1.1,8.8.8.8]  <-環境によって異なります。
            optional: true

    version: 2
    wifis:
        wlan0:
               無線LANの設定

参考というかこれをコピペ
[https://askubuntu.com/questions/536531/dhcp-server-wont-start-gives-not-configured-to-listen-on-any-interfaces-eve:title]

isc-dhcp-serverの設定

isc-dhcp-serverをインストールします。 dhcpサーバとして使えるようにします。
sh sudo apt install isc-dhcp-server

/etc/default/isc-dhcp-server を編集
IPv4に関するところをコメントアウトを外して設定を有効化します。

# Defaults for isc-dhcp-server (sourced by /etc/init.d/isc-dhcp-server)

# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf).
DHCPDv4_CONF=/etc/dhcp/dhcpd.conf
#DHCPDv6_CONF=/etc/dhcp/dhcpd6.conf

# Path to dhcpd's PID file (default: /var/run/dhcpd.pid).
DHCPDv4_PID=/var/run/dhcpd.pid
#DHCPDv6_PID=/var/run/dhcpd6.pid

# Additional options to start dhcpd with.
#       Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead
#OPTIONS=""

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#       Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACESv4="eth0"
INTERFACESv6=""

isc-dhcp-serverを起動します。

# systemctl enable isc-dhcp-server
# systemctl reload isc-dhcp-server
# systemctl restart isc-dhcp-server

ここでdhcpサーバとして使えるようになるりますが、ローカルLANの中だけでインターネットには接続できません。

NATを設定

iptablesでNATの設定をします。
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

永続化
Ubuntuでiptablesを再起動後にも保持する方法 - Qiita

sudo iptables-restore < /etc/iptables/rules.v4

と叩いて保存