私は、iptables を使用して Debian サーバーでポートをすばやく開いたり閉じたりするための bash スクリプトを作成しようとしています。ゲーム サーバーを実行する予定なので、スクリプトを使用して「メンテナンス モード」と「サーバー - ゲームプレイ モード」をすばやく切り替えたいと考えています。Linux の経験があまりないので、この点については初心者であることをお許しください...
基本的に、それぞれ異なるポートで実行される 3 つの個別のゲーム サーバー インスタンスを実行します。
- サーバーAには32000 TCP + UDPが必要そして32005 TCP
- サーバーBには33000 TCP + UDPが必要そして33005 TCP
- サーバーCには34000 TCP + UDPが必要そして34005 TCP
- また、デフォルトでは、Web 関連の用途でポート 80 と 443 TCP を許可しています (何らかの理由で、これらのポートが無効になり続けるため、まだ対応中です)。
スクリプトを実行した後、ポート 80 は正常に開きますが、何らかの理由で残りのポートを開くことができません...
これが私のスクリプトの最終状態です。
#!/bin/bash
RED='\033[0;31m'
YELLOW='\033[1;33m'
GREEN='\033[1;32m'
ORANGE='\033[0;33m'
GREY='\033[1;30m'
NC='\033[0m'
echo -e "${ORANGE}Starting default server iptables script${GREY}"
set -o xtrace
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
#Web ports configuration
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#A server ports configuration
iptables -A INPUT -p tcp --dport 32000 -j ACCEPT
iptables -A INPUT -p udp --dport 32000 -j ACCEPT
iptables -A INPUT -p tcp --dport 32005 -j ACCEPT
#B server ports configuration
iptables -A INPUT -p tcp --dport 33000 -j ACCEPT
iptables -A INPUT -p udp --dport 33000 -j ACCEPT
iptables -A INPUT -p tcp --dport 33005 -j ACCEPT
#C server ports configuration
iptables -A INPUT -p tcp --dport 34000 -j ACCEPT
iptables -A INPUT -p udp --dport 34000 -j ACCEPT
iptables -A INPUT -p tcp --dport 34005 -j ACCEPT
iptables -I INPUT 1 -i lo -j ACCEPT
iptables -P INPUT ACCEPT
iptables -A INPUT -j DROP
#Save the iptables
eval "iptables-save > /etc/iptables/rules.v4"
set +o xtrace
echo -e "\n\n\nScript finished executing...! :-)${NC}"
使っていますこのウェブサイトポートが開いているかどうかを確認します。
私の間違いを指摘していただけると本当にありがたいです。もう 2 日間、解決しようと努力しているからです :-(
編集:nmap をダウンロードして、すべての TCP ポートのスキャンを実行しました。何らかの理由で、ポート 32005 は開いているのに、残りは閉じています。非常に困惑しています :) スクリーンショットをご覧ください。