ポートが開かない
とあるソフトを使おうとしているのだけど、どうもポートが開かない。
こちらのOSはWindowsXP SP2である。
なんでだろうなぁ。
問題を絞り込んでみた。
今の環境は、
となっている。
Linux は80と443をあけており、ルータはインターネット側の80と443へのアクセスは Linux 側に飛ばしている。IPマスカレードというやつである。
仮に、35000というポートをWindowsを開けて、ルータで設定してもうまくインターネット側からWindowsまで通らないのだ。
この35000が悪いのか、と考えてみる。
Linux 側ではうまく80と443はうまくIPマスカレードできているので、Linuxで35000まで通るか試してみる。
#!/usr/bin/perl use strict; use warnings; use Socket; my $port = 35000; socket(CLIENT_WAITING, PF_INET, SOCK_STREAM, 0) or die $!; bind(CLIENT_WAITING, pack_sockaddr_in($port, INADDR_ANY)) or die $!; listen(CLIENT_WAITING, SOMAXCONN) or die $!; print "i am listening port $port ...\n"; while (1){ my $paddr = accept(my $CLIENT, CLIENT_WAITING); my ($client_port, $client_iaddr) = unpack_sockaddr_in($paddr); my $client_hostname = gethostbyaddr($client_iaddr, AF_INET); my $client_ip = inet_ntoa($client_iaddr); print "CONN: $client_hostname ($client_ip) , port $client_port\n"; } exit;
というツールをつくって試してみた。簡易サーバである。
するとちゃんと開いているではないか。
Windows 側でもCygwinで同様に上記コードを動かしてみたら、つながらない。LinuxからWindowsへのアクセスもできない。
つまり問題はWindowsにある。
なんでだろうなぁ。Firewall無効にしているし、切り分けのためにウィルスソフトはアンインストールしているのにな。