Debianシステムのiptablesでポート3306を開いて、MySQLサーバーへのアクセスを許可しようとしています。私はこのコマンドを入力しました:
root@debian:/# Sudo iptables -A INPUT -p tcp --dport 3306 ACCEPT
root@debian:/# iptables-save
新しい接続を入力すると、iptables-saveコマンドで生成されたiptablesリストに新しいルールが表示されるため、iptablesに保存されました。
ただし、このdebianシステムはWindows7上でVMで実行されているため、Windowsからこのポートにtelnetで接続できません。
コマンドラインについて:
root@debian:/# Sudo iptables -A INPUT -p tcp --dport 3306 --jump ACCEPT
root@debian:/# iptables-save
あなたはすでにroot
として認証されているので、Sudo
はそこで冗長です。
ACCEPT
パラメータの直前に-j
または--jump
がありません(これはタイプミスであり、正しく挿入しているためです)。
質問について:
iptables
ルールを質問で指摘したとおりに正しく挿入している場合、問題は使用しているハイパーバイザー(仮想マシンプロバイダー)に関連している可能性があります。
ハイパーバイザー名(VirtualBox、VMWare?)を提供する場合、これについてさらにガイドできますが、最初に試すことができるいくつかの提案があります。
vmachineのネットワーク設定を確認し、次のことを行います。
nATに設定されている場合、ベースマシンからvmachineに接続できません。
hostedに設定されている場合、最初にネットワーク設定を構成する必要があります。通常、ハイパーバイザーがこれに使用するデフォルトであるため、192.168.56.0/24の範囲のIPを提供する必要があります。
hostedと同じようにBridgeに設定されている場合、IP範囲が構成に適している場合はいつでも構成できます。
お役に立てれば。
(ファイアウォールを完全に削除することでiptablesの問題であると結論付けたと仮定し(iptables -P INPUT ACCEPT; iptables -P OUTPUT ACCEPT; iptables -F)、WindowsボックスからMySQLサーバーに接続できることを確認しましたか? )
INPUTテーブルの以前のルールは、おそらくパケットの拒否またはドロップです。新しいルールを上部に挿入することで回避できますが、既存のルールを確認して、それが適切かどうかを確認することもできます。
iptables -I INPUT 1 -p tcp --dport 3306 -j ACCEPT
Iptables-saveは新しいルールを永続的に保存しないことに注意してください(つまり、再起動後)-そのためには何か他のものを見つけ出す必要があります。私の通常のルートは、iptables-saveの出力をファイル(/etc/network/iptables.rulesなど)に保存してから、/ etc/network/interfacesにpre-upステートメントをロードします。