Heroku で新しいアカウントを開設し、dev Postgresql アドオンをインストールしました。ファイアウォールを無効にした OSX 10.8.5 を搭載した 2010 Mac Pro を使用し、RCN/Cisco ケーブル モデムに直接接続し、http://postgresapp.com/からローカル マシンに Postgresql 9.3 をインストールしました。Macbook Air からは Heroku postgresql に問題なく接続できましたが、Macbook Pro からは接続できませんでした。そのため、両方のマシンからポート 5432 への接続を telnet でテストしました。Macbook Air では問題なく接続できますが、Mac Pro では接続できません。両方のマシンから問題なく Web を閲覧でき、両方のポート 4000 で telnet サイト (私が利用できたもの) にも接続できます。
次のエラーが表示されます。
Trying 54.235.194.252...
telnet: connect to address 54.235.194.252: Connection refused
telnet: Unable to connect to remote host
Wireshark を使用して、telnet しようとしたときにポート 5432 で tcp パケットを表示しようとしました。接続が拒否されただけで、パケット ログには何も表示されませんでした。しかし、ポート 4000 で telnet を実行すると、多くのことがわかりました。
Mac Pro で試したその他のこと:
- を実行したところ、期待どおり
nslookup ec2-54-235-194-252.compute-1.amazonaws.com
に戻り54.235.194.252
ました。 - IPアドレスのtracerouteはaを提供し
No route to host
、mtrも何も示しません。 sudo ipfw list
が表示されます65535 allow ip from any to any
。これは Macbook Air と同じです。- アクティブ インターフェイス上のそのホストの tcpdump と Wireshark は、telnet 時に何も表示しませんでした。インターフェイスに到達する前にダンプされたようです。
次に、dtruss を介して telnet コマンドを実行しようとしたところ、次のようになりました。
write_nocancel(0x1, "Trying 54.235.194.252...\n\0", 0x19) = 25 0
socket(0x2, 0x1, 0x6) = 3 0
getuid(0x2, 0x1, 0x0) = 0 0
setuid(0x0, 0x1, 0x0) = 0 0
setsockopt(0x3, 0x0, 0x3) = 0 0
connect(0x3, 0x7F8F20C0DAD0, 0x10) = -1 Err#61
write_nocancel(0x2, "telnet: \0", 0x8) = 8 0
write_nocancel(0x2, "connect to address 54.235.194.252\0", 0x21) = 33 0
write_nocancel(0x2, ": \0", 0x2) = 2 0
write_nocancel(0x2, "Connection refused\n\0", 0x13) = 19 0
write_nocancel(0x2, "telnet: \0", 0x8) = 8 0
write_nocancel(0x2, "Unable to connect to remote host\0", 0x20) = 32 0
write_nocancel(0x2, "\n\0", 0x1) = 1 0
close(0x3) = 0 0
Err#61 は ECONNREFUSED の BSD エラー コードであり、これは理にかなっています。ソケットオプションがIPの「サービスの種類」を設定していると思いますが、よくわかりません。setsockopt には 5 つの引数があるように見えますが、3 つしか表示されません。関係ない気がする。ipfw とシステム環境設定のファイアウォール以外に何が邪魔をしているのかわかりません。また、新しくインストールしたpostgresqlを実行して実行していないことも試しました。
洞察はありますか?