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>INPUTOUTPUTFORWARD
<TARGET>の種類ACCEPT- 許可する
DROP- 通信を破棄し、拒否情報は返さない
REJECT- 拒否通知を返す
LOG- 通信を記録する
natMASQUERADE- 送信元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
- ここまでやって接続が失われないことを確認する
- 参考
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>