質問: ネットワークの勉強をしています。 Rubyでネットワークプログラミングってやつをしてみようと思ったのですが、まずはつながっているか確認しようと思い下のようなことをしてみました。 ホストOSはMacです。 Vagrant(CentOS7)をサーバにしてTCP通信をしてみようと思って、おたがいにPingで疎通確認?をしてみたところ、パケットロス0%で通じていました。 しかし、Vagrant側で ``` nc -l -p 2000 ``` を実行した後に、Mac側で、 ``` nc (pingで通じていることを確認できたIPアドレス) 2000 ``` と打って、Enterを入力すると、何事もなかったかのように、すぐにつぎの行の$が表示されてしまいます。 なにが足りないんでしょう? Macで2つTerminalを立ち上げて、同様のコマンドを実行したところ、チャットできました。 (追記) Vagrant側でtcpdumpでtcpをフィルタリングして見てみたら、なにかが送られてきているのはわかるんですが、なんなのかがよくわかりません。。。
回答: 他の方の回答にある通り、このような場合はfirewalld、iptablesなどフィルタリングを疑ってみるのがよいです。 そのうえで補足ですが、pingはICMP、netcatは(今回の場合)TCPとプロトコルが異なるので、pingがOKだからと言ってnetcatの応答があるとは限りません。 逆にnetcat(というか特定のtcp,udpポート)で応答が得られても、経路上でicmpがフィルタされていればping応答がないこともあります。