FreeBSD初心者運用日記 このページをアンテナに追加

2009-08-18

[]pingでポート番号という概念はないらしい 00:46 pingでポート番号という概念はないらしい - FreeBSD初心者運用日記 を含むブックマーク はてなブックマーク - pingでポート番号という概念はないらしい - FreeBSD初心者運用日記 pingでポート番号という概念はないらしい - FreeBSD初心者運用日記 のブックマークコメント

他のPCpingしたら通らないことがあって、ファイアウォールの仕業だろうと考えた。

ファイアウォールで設定を行うために、pingのプロトコルと使用するポート番号を調べてみた。

結論は、プロトコルはicmpというのを使っているけど、ポート番号は使ってないらしい。

2008-11-10

[][]ホスト名について 02:27 ホスト名について - FreeBSD初心者運用日記 を含むブックマーク はてなブックマーク - ホスト名について - FreeBSD初心者運用日記 ホスト名について - FreeBSD初心者運用日記 のブックマークコメント

ホスト名は/etc/rc.confに設定するものかと思っていたけど、設定されない場合もあるらしい。そういうときはどうするかというと、dhclientがDHCPからホスト名うけとると、sethostname(3)でカーネルに設定するらしい

2008-10-30

[][]snmpwalkのトラブルシューティング 02:02 snmpwalkのトラブルシューティング - FreeBSD初心者運用日記 を含むブックマーク はてなブックマーク - snmpwalkのトラブルシューティング - FreeBSD初心者運用日記 snmpwalkのトラブルシューティング - FreeBSD初心者運用日記 のブックマークコメント

■パケットが正常に動くかどうか確認する方法

エージェント(サーバ側)で以下を実行

# sudo /usr/sbin/tcpdump port snmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on aue0, link-type EN10MB (Ethernet), capture size 96 bytes

マネージャ(クライアント側)で以下を実行

# snmpwalk -v 1 -c public black.localhost 

パケットが正常に届けばエージェント側で以下のように表示される

00:32:59.403620 IP white.localhost.63474 > black.localhost.snmp:  GetNextRequest(25)  
00:33:00.420383 IP white.localhost.63474 > black.localhost.snmp:  GetNextRequest(25)  
00:33:01.436369 IP white.localhost.63474 > black.localhost.snmp:  GetNextRequest(25)  
00:33:02.453117 IP white.localhost.63474 > black.localhost.snmp:  GetNextRequest(25)  
00:33:03.469867 IP white.localhost.63474 > black.localhost.snmp:  GetNextRequest(25)  
00:33:04.486618 IP white.localhost.63474 > black.localhost.snmp:  GetNextRequest(25)  

何も表示されなければファイアウォールでパケットがdropされてる可能性がある。

linuxの場合はここでiptablesで何かいろいろやるけど、freebsdの場合はpfctlで何かやるらしい。

ToDo:pfctlって何やねん。

■ログのチェック

エージェント側でtail -f /var/log/snmpd.logをチェックしよう。

"Connection from UDP: [192.168.0.11]:63439 REFUSED"と出る場合は、libwrapでブロックされている。

この場合は、/etc/hosts.allowとか/etc/hosts.denyを見直す。

大抵は、/etc/hosts.allowに以下のように設定を追加すればOK

snmpd: 192.168.0.11/255.255.0.0

snmpd.confの設定漏れの場合は特にエラーはでない。

"Connection from UDP: [192.168.0.11]:58879"と出るだけ。このメッセージは正常な場合もでるので、ややこしい。。

マネージャ(クライアント側)のコマンドラインでsnmpwalk実行したときに、

Timeout: No Response from 192.168.0.12とでる。

ログが出力されてない場合もある。その場合はsnmpdを停止させた後、以下のようにして起動すればOK。

$ sudo /usr/local/sbin/snmpd -Lf /tmp/hoge.log


■エージェント側の/etc/hostsをチェック

エージェントサーバにおいて、マネージャサーバ名の名前解決ができなかった場合、getResponse(Response?)を返すことができないので、snmpwalkに失敗する。

マネージャとエージェントの双方のサーバで、tracerouteでお互いに通信できるか確認してみるとよい。(#nslookupだとDNSみてしますので、tracerouteのほうがよい)

/etc/hostsを修正した場合は、snmpdを再起動しないと反映されないことがあるので注意する。

ちなみに、ホスト名の名前解決はCライブラリ関数であるgethostbyname()を使っているものと思われる。この関数は、名前で指定されたインターネット上のサーバをあらわすstruct hostent という構造体ポインタを返す。この構造体には/etc/hostsやDNSサーバから取得した情報が格納されてくるらしい。

2008-08-17

[][][]SIGPIPE 00:19 SIGPIPE - FreeBSD初心者運用日記 を含むブックマーク はてなブックマーク - SIGPIPE - FreeBSD初心者運用日記 SIGPIPE - FreeBSD初心者運用日記 のブックマークコメント

パイプに対して書き込み時、相手側がコマンド終了してたような場合に、このシグナルが発生するらしい。

このシグナルが発生した場合、デフォルト動作としてプロセスが強制終了される。

SIGPIPEはソケットに対して書き込む(send、write)しようとしたら、相手側がすでに切断(close)していた場合に発生するシグナルです。

http://www.paw.hi-ho.ne.jp/takadayouhei/technic/58.html

2chから引用

475 :名無しさん@お腹いっぱい。:2008/07/08(火) 23:57:58 
例えば 
cat ばかでかいファイル | head -1 
だとcatもheadも同時に起動してheadはcat の出力が1行分でたらそれを出力します 
そのときcatの処理が途中だったらどうなるんですか? 

478 :名無しさん@お腹いっぱい。:2008/07/09(水) 01:22:00 
>>475 
catがwrite(2)を呼び出したときにheadが終了している(パイプが閉じている)とSIGPIPEくらって終了。 

493 :名無しさん@お腹いっぱい。:2008/07/10(木) 00:14:58 
パイプって難しいなぁ 
a | b 
だとbコマンドが終わったらsigpipeを送って、aが途中でも終わるって話だったけど 
sleep 10 | date 
だとdateが終わってから10秒後に終了する・・ 

495 :名無しさん@お腹いっぱい。:2008/07/10(木) 00:23:14 
>>493 
sleepがなにかをstdoutに書こうとしてるかい? 

[][]「UNIXシステムプログラミング」読書メモ - ソケットについて 00:19 「UNIXシステムプログラミング」読書メモ - ソケットについて - FreeBSD初心者運用日記 を含むブックマーク はてなブックマーク - 「UNIXシステムプログラミング」読書メモ - ソケットについて - FreeBSD初心者運用日記 「UNIXシステムプログラミング」読書メモ - ソケットについて - FreeBSD初心者運用日記 のブックマークコメント

  • ソケット
    • プロセス間通信を行うための通信の出入り口
    • socketシステムコールで作成
    • ソケットには、ストリームソケットとデータグラムソケットがある。
  • バインド
    • ソケット作成後、プログラム中ではソケットをファイル記述子でアクセス可能。しかしファイル記述子は、1つのプロセス又は直径の子孫プロセスとの間でなければ共有できない。このため、相手のソケットを識別して、無関係の2つのソケットをつなぐ手段が必要になる。これをバインドという。
  • ドメイン
    • ソケットの名前が通用する範囲をドメインという。UNIXドメインとINETドメインがある。INETはインターネットの略。

2008-08-06

[]IPアドレスから取得できる情報 03:46 IPアドレスから取得できる情報 - FreeBSD初心者運用日記 を含むブックマーク はてなブックマーク - IPアドレスから取得できる情報 - FreeBSD初心者運用日記 IPアドレスから取得できる情報 - FreeBSD初心者運用日記 のブックマークコメント

・診断くん

http://taruo.net/e/?

・確認くん

http://www.ugtop.com/spill.shtml

IPドメインサーチ

http://www.mse.co.jp/ip_domain/

これらのページで表示されるREMOTE_ADDRのIPアドレスで、自分のPCにアクセスできたりするのかな。。?

ToDo:ルータのポート番号あけたりとかが必要なのかも。。調べてみよ。

[][]hostコマンドでいろいろ 04:01 hostコマンドでいろいろ - FreeBSD初心者運用日記 を含むブックマーク はてなブックマーク - hostコマンドでいろいろ - FreeBSD初心者運用日記 hostコマンドでいろいろ - FreeBSD初心者運用日記 のブックマークコメント

www.yahoo.co.jpをhostでたたくと、たくさんIPが出た。

$ host www.yahoo.co.jp
www.yahoo.co.jp has address 124.83.167.212
www.yahoo.co.jp has address 203.216.227.176
www.yahoo.co.jp has address 203.216.235.154
www.yahoo.co.jp has address 203.216.235.201
www.yahoo.co.jp has address 203.216.243.218
www.yahoo.co.jp has address 203.216.247.225
www.yahoo.co.jp has address 203.216.247.249
www.yahoo.co.jp has address 124.83.139.191
www.yahoo.co.jp has address 124.83.139.192
www.yahoo.co.jp has address 124.83.147.202
www.yahoo.co.jp has address 124.83.147.203
www.yahoo.co.jp has address 124.83.147.204
www.yahoo.co.jp has address 124.83.147.205

なんかよくわからないけど負荷分散なのかも。

googleでやってみた。

$ host www.google.co.jp
www.google.co.jp is an alias for www.google.com.
www.google.com is an alias for www.l.google.com.
www.l.google.com has address 66.249.89.147
www.l.google.com has address 66.249.89.99
www.l.google.com has address 66.249.89.104
www.google.co.jp is an alias for www.google.com.
www.google.com is an alias for www.l.google.com.
www.google.co.jp is an alias for www.google.com.
www.google.com is an alias for www.l.google.com.

ToDo:aliasってなんだろ。。

DNSから勉強しなおすか。。

CressCress2008/08/08 16:54hostがたくさん出てくるのは、DNSラウンドロビンを利用している場合ですね。ロードバランサと比べて安上がりに負荷分散を実装できます。
aliasはCNAMEレコードに設定している場合です。ドメインを自分で設定してみて、それを引いてみるとわかりやすいと思います。

py4s-tnkpy4s-tnk2008/08/09 01:16なるほど。勉強になります。ありがとうございます。m(_ _)m