blog.anqou.net
rss
author
tags

NixOS で特定の IP アドレスからの通信を全て許可する

NixOS でファイアウォールの設定を行う場合、通常 networking.firewall を使います。例えば networking.firewall.allowedTCPPorts = [80]; とすれば、80 番ポートを開けることができます。

しかし networking.firewall に予め用意されている設定項目は限定的です。今回の主題のような、特定の IP アドレスからの通信を全て許可したいなど特殊な設定を行いたい場合は networking.firewall.extraCommands に自前で iptables のコマンドを書く必要があります。

今回の場合は以下のように設定します:

networking.firewall = {
  extraCommands = ''
    iptables -A nixos-fw -s 198.51.100.1 -j nixos-fw-accept
  '';
  extraStopCommands = ''
    iptables -D nixos-fw -s 198.51.100.1 -j nixos-fw-accept || true
  '';
};

なお上記の設定は https://github.com/Oak-Digital/nixos-ip-whitelist-firewall を参考にしました。この NixOS module は特定の IP アドレスから特定のポートへの通信を全て許可するような設定を NixOS Options として追加するものです。