shellスクリプト転送80ポートパケット
2250 ワード
Node.jsベースのWEBアプリケーションを開発するのは便利ですが、サービスポートの問題は卵が痛く、Linuxカーネルは一般ユーザーが1024より大きいポート番号しか使用できないことを規定しているため、一般ユーザーを使ってNode.jsサービスを実行すると80ポートを傍受できません
注意:ROOTユーザーを使用してNode.jsサービスを実行する手間を省くことはできません.これにより、予想できないセキュリティの問題が発生します.
しかし、HTTPのデフォルトポートとして80ポートを使用する習慣はMS時代から続いていますが、どうすればいいのでしょうか.ネット上ではNginXでリバースエージェントをするなどと滔々としていますが、実はそんなに大げさに言う必要はないと思います.ROOTユーザーを使って普通のポートと80ポートのデータ転送をすればいいだけです.iptables文を使うと次のようになります.
以上の文を使用するには、次の点に注意してください.
1.この文は一時的なもので、サーバが再起動すると無効になります.
2.このような文を実行した後、80ポートバインドを他のポートに転送したい場合は、まず使用します.
3.ArchLinuxを使用する子供靴たちは、カーネルがモジュール(iptablesかnatか?)に欠けているため、上記の文でバインド転送ポートを設定できない可能性があるため、カーネルまたはモジュールを再コンパイルする必要があることに注意してください.
以上の卵痛の問題で、自動削除記録と自動バインドを実現するためのスクリプトを書きました.
上記のコードをbind 80などのファイルとして保存し、実行権限を追加するだけで、次のコマンドを使用して、前のレコードを消去し、新しいポートをバインド転送します.
注意:ROOTユーザーを使用してNode.jsサービスを実行する手間を省くことはできません.これにより、予想できないセキュリティの問題が発生します.
しかし、HTTPのデフォルトポートとして80ポートを使用する習慣はMS時代から続いていますが、どうすればいいのでしょうか.ネット上ではNginXでリバースエージェントをするなどと滔々としていますが、実はそんなに大げさに言う必要はないと思います.ROOTユーザーを使って普通のポートと80ポートのデータ転送をすればいいだけです.iptables文を使うと次のようになります.
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port
以上の文を使用するには、次の点に注意してください.
1.この文は一時的なもので、サーバが再起動すると無効になります.
2.このような文を実行した後、80ポートバインドを他のポートに転送したい場合は、まず使用します.
#
iptables --line-numbers --list PREROUTING -t nat
# , , , “ ”。
iptables -t nat -D PREROUTING
3.ArchLinuxを使用する子供靴たちは、カーネルがモジュール(iptablesかnatか?)に欠けているため、上記の文でバインド転送ポートを設定できない可能性があるため、カーネルまたはモジュールを再コンパイルする必要があることに注意してください.
以上の卵痛の問題で、自動削除記録と自動バインドを実現するためのスクリプトを書きました.
#!/bin/bash
# www.jbxue.com
if [ $# = 1 ]; then
if [ $1 -ge 0 ]; then
if [ $1 -le 65535 ]; then
#Delete all old bindings
for line_num in $(iptables --line-numbers --list PREROUTING -t nat|grep dpt:http|awk '{print $1}')
do
LINES="$line_num $LINES"
done
for line in $LINES
do
iptables -t nat -D PREROUTING $line
done
unset LINES
#Make a new binding
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port $1
echo "Port 80 is bound with $1 !"
exit 1
fi
fi
fi
echo "Please input ONE PORT NUMBER!"
上記のコードをbind 80などのファイルとして保存し、実行権限を追加するだけで、次のコマンドを使用して、前のレコードを消去し、新しいポートをバインド転送します.
sudo bind80