タグ

ブックマーク / www.geekpage.jp (27)

  • トルコのISPが偽Google Public DNSを運用:Geekなぺーじ

    今月中旬に、トルコ政府によるTwitter利用禁止措置をかいくぐるためにGoogle Public DNSが利用されているという記事がありました(参考)。 政府に対抗するために、Google Public DNSのIPv4アドレスである「8.8.8.8」が町中に落書きされていたようです。 しかし、そのGoogle Public DNSの成り済ましサーバがトルコ国内のほとんどのISPで運用されているとGoogleが発表しました。 Google’s Public DNS intercepted in Turkey そこでは、次のように書かれています。 But imagine if someone had changed out your phone book with another one, which looks pretty much the same as before, except

  • Geekなぺーじ : selectを使う

    普通の状態では、readやrecvfromはデータが受信できるまでブロッキングします。 ソケットを一つしか利用していない場合にはブロッキングは非常に便利なのですが、ソケットが複数になると困ってしまいます。 複数のソケットを扱うとき、片方のソケットでブロッキングしたままになってしまうと他のソケットにデータが到着しても受信が出来なくなってしまいます。 そのため、複数のソケットを扱っていると、どのソケットからデータが受信可能か知りたくなります。 ブロッキングとは、関数が返ってこない事を表します。 例えば、readはデータを受信して関数が戻ってきます。 言い方を変えると、データを受信するまでブロックしています。 readやrecvfromをブロッキングしないノンブロッキング方式で使う事も可能ですが、ここではブロッキング方式のまま使う方法を説明します。 そのような機能を提供するのがselectです。

  • 7-11 UNIXソケットSOCK_DGRAM送信側:Geekなぺーじ

    #include <stdio.h> #include <unistd.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/un.h> int main() { int sock; struct sockaddr_un addr; int n; sock = socket(AF_UNIX, SOCK_DGRAM, 0); addr.sun_family = AF_UNIX; strcpy(addr.sun_path, "/tmp/afu_dgram"); n = sendto(sock, "HOGE\n", 5, 0, (struct sockaddr *)&addr, sizeof(addr)); printf("send data\n"); close(sock); re

  • IPv4アドレスが枯渇して10年経った:Geekなぺーじ

    時間2011年2月3日深夜に、IPv4アドレスの中央在庫(IANA在庫)が枯渇しました。 もう、あれから10年です。 JPNIC : IANAにおけるIPv4アドレス在庫枯渇、およびJPNICの今後のアドレス分配について(2011年2月) 昔は、「IPv4アドレスは枯渇しない」と主張している人も多く、実際に枯渇するまでは、IPv4アドレス在庫が減り続けていることを信じない人も多かった記憶があります。 都市伝説だ、とか、石油と一緒で枯渇しない、といった主張がありました。 IPv4アドレス在庫の枯渇がどのように定義されているのかが複雑であるためわかりにくかったり、インターネットが使えれば良くてTCP/IPそのものには興味がない人が大半であるなどの要因もあり、いまだにIPv4アドレス在庫が枯渇したことを知らない人も多くいますが、気がつけばIPv4アドレスが枯渇してから10年経過しているわけで

    iww
    iww 2021/02/04
    あと20年くらい戦えそうな気もするし、あと数年で行き詰ってしまう気もする
  • MACアドレスの再利用は、みんなが思っているよりもはるかに一般的:Geekなぺーじ

    MACアドレスは、原則として、一意に割り当てられるものです。 ネットワークインターフェースごとに、ひとつずつユニークな値をベンダーが付けるものとされています。 ただ、これは、あくまで「原則として」であって、実際は、MACアドレスが重複することもあります。 IPv6に関連するいくつかのRFCで、MACアドレスの重複への言及があります。 この記事では、MACアドレスの重複とIPv6アドレスの自動生成という、わりと限定された視点ではありますが、MACアドレスが一意とは限らない、という話を紹介します。 なお、この記事のタイトルである「MACアドレスの再利用は、みんなが思っているよりもはるかに一般的」は、RFC 7217に書かれている一文の日語訳です。 MACアドレスの重複とIPv6アドレス生成の仕様 MACアドレスがIPv6アドレスの自動生成で使われる場合があります。 IPv6アドレス体系のRF

    iww
    iww 2020/06/16
    一応建前上は一意になってるもんだと思ってた。もう建前ですら無いのか
  • Geekなぺーじ : UDPでブロードキャストを使う

    UDPブロードキャスト送信サンプル 何もしない状態のUDPソケットでは、ブロードキャストパケットを送信できません。 setsockopt()を利用してソケットに対してSO_BROADCASTを設定すると、ブロードキャストパケットを送信できるようになります。 この設定を行わずにブロードキャストパケットを送ろうとすると、sendto()が失敗してしまいます。 以下に、setsockopt()をしてからブロードキャストパケットを送信するサンプルを示します。 #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> int main() { int sock; struct sockaddr_in addr; int yes = 1; sock = socket(AF_INET, SOCK_DGRAM, 0); a

  • IPv6でセキュリティがスカスカになってませんか?:Geekなぺーじ

    さくらインターネットが、VPSの標準OSイメージでIPv6設定デフォルト無効化を発表しました。 さくらのVPS、標準OSイメージの仕様変更のご連絡 (IPv6設定デフォルト無効化) 発表では、以下のようにあります。 初期状態のおけるセキュリティ向上のため、以下のOSについてIPv6のデフォルト無効化を実施いたします。 有効化手順につきましては、ヘルプページをご用意しておりますのでそちらをご確認ください。 個人的には、IPv6が普及しつつある現状に対する一歩先を行く対応だと思いました。 流石だなぁと。 気づかずに放置されるIPv6セキュリティ 現段階では、IPv6環境でのセキュリティが放置されがちです。 IPv4環境とIPv6環境のセキュリティの差に関して述べられている発表が昨年ありました。 ITU/APNIC/MICT IPv6 Security Workshop : Securing t

    iww
    iww 2017/04/21
    ipv6は無効にしてるので問題ない
  • RFCの正規文書がXMLに:Geekなぺーじ

    インターネットに関連するプロトコルなどを規定するRFC(Request For Comments)の正規文書のフォーマットが、これまでのplain-text ASCIIからXMLへと変わります。そのためのRFCが、RFC 7990 - RFC 7998として策定されました。 RFC 7990 RFC Format Framework RFC 7991 The "xml2rfc" Version 3 Vocabulary RFC 7992 HTML Format for RFCs RFC 7993 Cascading Style Sheets (CSS) Requirements for RFCs RFC 7994 Requirements for Plain-Text RFCs RFC 7995 PDF Format for RFCs RFC 7996 SVG Drawings for R

    iww
    iww 2016/12/21
    『今後はSVGで描かれるようになるので、よりリアルで分かりやすい鳥の絵が描ける』
  • 12-5 AF_PACKETを利用したICMP ECHO:Geekなぺーじ

    #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netpacket/packet.h> #include <net/ethernet.h> #include <net/if.h> #include <net/if_arp.h> #include <netinet/ip.h> #include <netinet/ip_icmp.h> /* * チェックサムを計算する関数です。 * ICMPヘッダのチェックサムフィールドを埋めるために利用します。 * IPヘッダなどでも全く同じ計算を利用するので、 * IPヘッダのチェックサム

  • インターフェースのMACアドレスを取得する:Geekなぺーじ

    ネットワークプログラミングを行っていると、自分のネットワークインターフェース(NIC)に設定されているMACアドレスを知りたくなる事があると思います。 ここでは、Linuxでインターフェースに設定されているマックアドレスを取得する方法を説明したいと思います。 単純なMACアドレス取得プログラム Linuxでの簡単なMACアドレス取得プログラムのサンプルを以下に示します。 #include <stdio.h> #include <string.h> /* for strncpy */ #include <sys/types.h> #include <sys/socket.h> #include <sys/ioctl.h> #include <netinet/in.h> #include <net/if.h> int main() { int fd; struct ifreq ifr; fd

  • スノーデン事件の裏で起きていたSSL秘密鍵を巡る戦い:Geekなぺーじ

    今月7日から9日にアリゾナ州で開催されたNANOG 59で、Ladar Levison氏がFBIにサービス全体のSSL秘密鍵を要求された話が公開されていました。 Ladar Levison氏が運営していた、Lavabitという電子メールサービスはスノーデン事件に関連して突如8月8日に閉鎖されています。 閉鎖時には詳細が書かれておらず、様々な憶測が語られていましたが、世界中から多数のネットワークエンジニアが集まるNANOGで、その一部始終が語られました。 この発表は、NANOG 59が開始される前の週に、裁判所が調査対象の氏名以外を機密解除したことによって実現しています。 インターネット上で提供されているサービス事業者にSSL秘密鍵を提出させ、かつ、その事実の公表が違法行為となるようにされてしまっている一方で、こういった内容を公的に語れるように裁判所で戦って、実際にそれを勝ち取るというのは凄

    iww
    iww 2013/10/18
  • Geekなぺーじ : TCP vs RTP:何故RTPが必要なのか?

    インターネットを流れるトラフィックのほとんどがTCP(Trasmission Control Protocol)によるものです。 TCPは、全てのデータが正しく相手に伝わることを保証するため品質の高いデータ通信が実現できます。 また、どのパケットが受け取れなくて、どれが受け取れたかなどをわざわざ考えなくても良いので、プログラムを書くのも簡単です。 では、何故、わざわざRTPというものが必要だったのでしょうか? ここでは、まず最初に何故RTPはTCPではなく、UDPの上に存在しているのかを説明したいと思います。 (もちろん、TCPの上に作ることはRTPの規約上は可能ですが、現実的にはUDPの上でしか実装がないと思います。) その後、何故、UDPの上に共通のRTPというものを構築したのかを説明したいと思います。 RTPは、名前にもある通り、「リアルタイム」なデータを転送するためのプロトコルです

  • 「汚いコードでいいよ」は夢の環境であると同時に悪魔の囁き:Geekなぺーじ

    「コードがもうメチャメチャでも、動いて金が回れば正解なんですよ」という発言を含むインタビューが話題です。 エンジニアよ、ゼネラリストなんて目指すな!- VASILY 金山裕樹のキャリア論[2] 一部界隈で大きな話題になっているのは、主に以下の部分です。 極端な話、コードがもうメチャメチャでも、動いて金が回れば正解なんですよ。「アイツの書くコードは汚いけど、アイツが入ったプロジェクトは絶対勝つよね」ってエンジニアは、絶対に呼ばれます。もう間違いない。少なくとも、僕は欲しいですし。 私のまわりでは、「汚いコードをその後運用させられるエンジニアもいるんだからね」という意見が非常に多い印象です。 個人的には、こういうことを表明している会社でエンジニアとして働きたいとは思わなかったです。 「汚くてもいいよ」はエンジニアとしては楽な面もあるよね 今は文章を書くことが私の主な仕事ですが、前職はプログラマ

    iww
    iww 2012/11/30
    十分にカプセル化っつーか「疎」に出来てれば、個々の末端の関数内のコードの汚さには目を瞑る事は十分可能。
  • 不動産電話勧誘うざい:Geekなぺーじ

    ある日、突然不動産勧誘の電話がかかって来ました。 「いりません」「興味ありません」を繰り返しても、いっこうに電話を切らずに「あと3分」とか「何で興味がないんですか?」とか言いながら無理矢理話を続けます。 さらに驚いたのが、電話を切った数日後に同じ人物がかけてきたことです。 最初に電話をうけたときにガチャ切りしないで中途半端に話をさせたので、カモだと思われたんだろうと予想しています。 もう最悪です。 今回の事例以外にも不動産勧誘の電話がちらほらかかってきますが、基的に不動産勧誘電話はどれも最悪です。 あまりにしつこくて嫌になったので、Twitterで「不動産電話勧誘うざい」と書いたら、色々と反応がありました。 中でも、そもそも断った後に再度電話をかけることそのものが「特定商取引に関する法律」に違反する違法行為であることを知れたのは良かったです。 断っても何度も電話をかけるのは違法 今回初め

    iww
    iww 2012/11/27
    最近増えてきたから参考にする
  • Geekなぺーじ : 画像上に文字列を表示

    ImageCreateFrom○○で読み込んだイメージリソースの上にTrueTypeフォントによる文字列を書く方法です。 サンプルコード 以下のサンプルでは、フリーの日フォントであるIPAフォント(Pゴシック)を利用しています。 「/path-to-fontfile/」の部分を必要に応じて変更して下さい。 <?php $img = ImageCreateFromJPEG('sample0.jpg'); # 必要に応じてUTF8へ変換(環境依存) $text = mb_convert_encoding('オランダシシガシラ', 'UTF-8', 'auto'); # 白い文字を書き込む $white = ImageColorAllocate($img, 0xff, 0xff, 0xff); ImageTTFText($img, 16, 0, 5, 200, $white, '/path-

  • ノマドワーキング(笑)してて怖い目にあった話:Geekなぺーじ

    タイトルは釣りです。 私はノートPCを持ち歩いて時間があれば、外でキーボードをカチャカチャさせながら原稿を書いたりするのですが、この前、地方に行った時に少し怖いおもいをしました。 一度怖いおもいをしたことだけをもって一般化するのは多少乱暴ではあるのですが、「ノマドワーキング的な話って東京近郊だからできる話なんじゃね?」とそのときは思いました。 何が起きたかというと、予定よりも早く到着してしまったので駅の目の前にあるベンチに座りながらノートPCで原稿を書いていたら、いきなり怖いお兄さんに絡まれました。 「糞ガキぃー。パソコンやってんじゃねーぞー、コラぁー」という感じです。 駅前のベンチでパソコンを使っているだけでいきなり絡まれたのは初めてでした。 まわりにある程度人は居たのですが、相手が何をどのように腹を立てたのか皆目見当がつきませんでした。 ベンチでパソコンをする前は、喫茶店を発見して珈琲

    iww
    iww 2012/05/04
    PCじゃなくても本でも宿題でもなんでも同じ
  • kill -9 ラップ:Geekなぺーじ

    演奏開始 サビがカッコイイ kill -9 !!! kill -9 , no more CPU time, cause it's kill -9, and your process is mine, kill -9, it's my time to shine, don't step out the line, or I'll just kill -9 途中の内容 聞き取れなかったり、意味が理解できなかった部分は省略しています。 (終わってみると、4分の曲を聴くのに2時間近くかけている自分が阿呆に思えてきました。。。) 気合がある方は全部把握してみると楽しいかも知れません。 お前のクソプロセスにSIGQUITを試したけどダメだった。 今度は kill -9 をやってやる。 自分のスレッドが止まるべき時を把握しておけ。 お前のプロセスなんか同意を得ずにrun queueから外してやる。 お前

  • getaddrinfo(getaddrinfoを使ってsockaddrを作成する):Geekなぺーじ

    最初の例は、gethostbynameを使い慣れている人を意識したものにしてみましたが、次は、それとはちょっと違った使い方の紹介です。 socketはAF_INETやAF_INET6などのプロトコルファミリとソケットの種類を指定する必要があります。 また、connectシステムコールには、sockaddr構造体を引数として渡す必要があります。 この例では、getaddrinfoによって得られる結果をこれらのシステムコールに渡すための情報としてそのまま使ってしまいます。 サンプルコード #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> int main() { char *hostname = "localhost"; char *service = "80"; struc

  • なぜ「DNSの浸透」は問題視されるのか:Geekなぺーじ

    DNSの浸透」という表現が結構よく使われています。 DNSに設定された情報を更新したけれど、その結果がなかなか反映されずに誰かに相談すると「DNSの浸透には時間がかかります」と説明されて納得してしまうという事例が多いようです。 しかし、うまく準備を行えば、実際の切り替え処理は、いつ完了するのかが不明な「DNSの浸透」を待つのではなく、事前に計画した時間通りに完了させることが可能です。 さらに、来であればDNS情報の設定者(ゾーン情報の設定者)は、いつまでに世界中のキャッシュが更新されるかを知ることができる環境にあり、それ以降も更新がされていなければ「何かがおかしい」とわかるはずです。 DNSにおける設定内容(DNSのリソースレコード)には、その情報をキャッシュとして保持し続けても良い期間であるTTL(Time To Live)という要素がありますが、TTLはDNS情報設定者が自分で設定

    iww
    iww 2011/10/28
  • L2スイッチに水をかけるデモ、他、アラクサラ Interop事前取材:Geekなぺーじ

    10GbE x 44ポートの1U スイッチ Interop Tokyo 2011のアラクサラブースで最も注目度が高そうなのが、5月25日に発表された10GbEが44ポートある1Uスイッチの「AX3830S-44XW」だろうと思います。 2011年9月に出荷開始予定だそうです。 データセンタに最適なボックス型10ギガビット多ポートスイッチAX3830Sを製品化 ~仮想化サーバの収容に最適なアドレスエントリ数を実現~:アラクサラネットワークス株式会社 データセンタに最適なボックス型10G多ポートスイッチAX3830S クラウド化にともなう「ネットワークの不安」を解消:アラクサラネットワークス株式会社 この1Uスイッチの思想としては、「1Uで10GbEを44ポート用意し、1ラック内の1Uサーバ40台に対して1UのL2スイッチ1台でフル10G化しつつ、10Gアップリンクが4」ということで、44ポ