web-dev-qa-db-ja.com

永続的なiptablesポートフォワーディング?

Webサーバー(ポート7000で実行)をポート80でアクセスできるようにするためのルールを設定する必要があります。

ptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 7000

これは今のところ完全に機能します。

しかし、サーバーを再起動すると、ルールはなくなります。このルールを永続的にするために何が行われていますか?

エリアス

5
Elias

どのGNU/Linuxディストリビューションを使用していますか?

Debian/Ubuntuの場合、簡単な解決策は、次のように/etc/network/interfacesのポストアップフックにiptables呼び出しを追加することです。

# The primary network interface
auto eth0
iface eth0 inet dhcp
post-up iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 7000
6
pfo

Red Hat/Fedoraベースのシステムの場合:

service iptables save

そして、iptablesサービスが起動時に開始するように設定されていることを確認してください:chkconfig iptables on

3
Sirex

基本的に、iptablesコマンドをネットワーク起動スクリプトに追加して、ネットワーク接続が開始されたときに実行されるようにします。

変更が必要なファイルは、ディストリビューションごとに異なります。

Ubuntuを使用している場合(そしておそらくこれはDebianや他の人にも当てはまります)、コマンドiptables-saveiptables-restoreを使用して、再起動時に構成を保存できます。

2
pacey

Iptablesを繰り返し呼び出すのではなく、次の手順をお勧めします。

[1] iptablesを好みに合わせて構成します(ブロック、アンチスプーフ、リダイレクトなど)

[2] iptables構成を保存します:

    iptables-save > /etc/my-iptables.conf

(またはお好みの名前を使用してください)

[3]スクリプトを作成します(例:/etc/my-iptables-init.sh)これらの行を含む:

    #!/bin/bash
    iptrest="<location_of_iptables-restore>"
    cat="/bin/cat"
    conf="/etc/my-iptables.conf"
    #
    $cat $conf | $iptrest

(一部の人々はそれを言うiptables-restore < /etc/my-iptables.con時々動作しない)

[4]そのスクリプトを...どこからでも呼び出します。多分/ etc/network/interfacesまたは(私の好み)/etc/rc.local

0
pepoluan

Gentooの場合

この行を/etc/conf.d/local.startに追加できます

0
Sim