• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

iptables

date: 2021-08-19 excerpt: iptablesコマンド

tag: iptables


iptablesコマンド

概要

  • パケットの流れを制御するソフトウェア
  • NATを構築する
  • Firewallを設定する
  • ip6のiptablesはip6tables

引数

基本は以下の構成になる

$ iptables -t <table> -A <CHAIN> -i|-o|-j <TARGET>
  • -t <table>
    • tableを操作
  • -A <CHAIN> ...
    • CHAINにルールを追加
  • -D <CHAIN> ...
    • CHAINからルールを削除
    • -Aと同じ引数
  • -P|--policy <CHAIN> <TARGET>
    • CHAINにTARGETを適応
    • この引数のときは短い表現になる
  • -N <CUSTOMCHAIN>
    • CUSTOMCHAINという名前のCHAINを作成
  • -F <CUSTOMCHAIN>
    • CUSTOMCHAINからルールを削除
  • -X <CUSTOMCHAIN>
    • CUSTOMCHAINを削除
    • CUSTOMCHAINが空であることを期待する
  • ルール関連
    • -i
      • inputインターフェース
    • -o
      • outputインターフェース
    • -j <TARGET>
      • ターゲット
    • -p <proto>
      • プロトコルの選択
    • --dport <port-num>
      • 宛先ポート
    • -d <ipaddress>
      • 宛先IPアドレス
    • -s <ipaddress>
      • 元のIPアドレス
  • <table>の種類
    • nat
      • <CHAIN>
        • POSTROUTING
          • ルーティングの最初に適応
        • PREROUTING
          • ルーティングの最後に適応
        • OUTPUT
    • filter
      • <CHAIN>
        • INPUT
        • OUTPUT
        • FORWARD
  • <TARGET>の種類
    • ACCEPT
      • 許可する
    • DROP
      • 通信を破棄し、拒否情報は返さない
    • REJECT
      • 拒否通知を返す
    • LOG
      • 通信を記録する
    • nat
      • MASQUERADE
        • 送信元IPアドレスと送信先ポート番号を変換
      • SNAT --to-destination <ipaddress>
        • 送信元IPを指定したIPに変換(IPを転送)
        • 具体的なIPを指定できる

interfaceでNATを構築する

# iptables -A FORWARD -i wg0 -j ACCEPT
# iptables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE
# ip6tables -A FORWARD -i wg0 -j ACCEPT
# ip6tables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE
  • inputをwg0として、enp1s0をアウトプットにする
  • ip_forwardを設定するとルータを構築できる

forwardした内容の確認

# iptables -L -v -n

firewallを無効化する

  • debian限定(ubuntuは別途fwソフトが入っている)
# iptables -I INPUT -j ACCEPT
# ip6tables -I INPUT -j ACCEPT

(OCIなどのクラウドサービスの)iptables設定を初期化してデフォルトにする

# iptables -F # すべてのチェーンを削除
# iptables -X # ノンデフォルトのチェーンを削除
# iptables -P INPUT ACCEPT
# iptables -P FORWARD ACCEPT
# iptables -P OUTPUT ACCEPT
  • ここまでやって接続が失われないことを確認する
  • 参考
    • How To List and Delete Iptables Firewall Rules

iptablesで設定した内容を恒久化する(iptables-persistentを利用)

iptables-persistentをインストールするだけでよい
iptablesの変更内容が保存され、再起動時に復元される

$ sudo apt install iptables-persistent

手動で保存する場合

$ dpkg-reconfigure iptables-persistent

で、対話式の保存画面が現れる

iptablesで設定した内容を恒久化する(/etc/init.d/netfilter-persistentを利用)

$ sudo /etc/init.d/netfilter-persistent save
$ sudo /etc/init.d/netfilter-persistent reload

iptablesの設定内容をバックアップと復元

バックアップ

# iptables-save > <backup-file>

復元

# iptables-restore < <backup-file>


iptables Share Tweet