Webサーバー(ポート7000で実行)をポート80でアクセスできるようにするためのルールを設定する必要があります。
ptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 7000
これは今のところ完全に機能します。
しかし、サーバーを再起動すると、ルールはなくなります。このルールを永続的にするために何が行われていますか?
エリアス
どの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
Red Hat/Fedoraベースのシステムの場合:
service iptables save
そして、iptables
サービスが起動時に開始するように設定されていることを確認してください:chkconfig iptables on
基本的に、iptablesコマンドをネットワーク起動スクリプトに追加して、ネットワーク接続が開始されたときに実行されるようにします。
変更が必要なファイルは、ディストリビューションごとに異なります。
Ubuntuを使用している場合(そしておそらくこれはDebianや他の人にも当てはまります)、コマンドiptables-save
とiptables-restore
を使用して、再起動時に構成を保存できます。
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
この行を/etc/conf.d/local.startに追加できます