はてなキーワード: IPv4とは
こいつまだIPv4使ってるぜ...w
ネットに公開されている情報は、初心者には難しいと感じました。
Yamahaのサイトにconfigは公開されていますが、exciteMEC光だと、クリアする注釈が多すぎて。
"NVR500 では、tunnel endpoint address コマンドを使用して、AFTR の IPv6アドレスを指定してください。"
って書いてますが、exciteMEC光はAFTR公開してないぞ!ってなるので。
正解は[gw.transix.jp]のIPv6アドレスを指定する、で
"tunnel endpoint address 2404:8e01::feed:101"です。
以下、全文。
#
# transixのIPv4接続(DS-Lite)でインターネット接続
#
#
#
#
# ゲートウェイの設定
#
ip route default gateway tunnel 1
#
#
ip lan1 address 192.168.100.1/24
#
#
ipv6 prefix 1 ra-prefix@lan2::/64
ipv6 lan1 address ra-prefix@lan2::1/64
ipv6 lan1 rtadv send 1 o_flag=on
ipv6 lan2 dhcp service client ir=on
ipv6 lan2 secure filter in 1010 1011 1012
ipv6 lan2 secure filter out 3000 dynamic 100 101 102 103 104 105 118 119
#
# トンネルの設定
#
tunnel select 1
tunnel endpoint address 2404:8e01::feed:101
tunnel enable 1
#
# フィルターの設定
#
ipv6 filter 1010 pass * * icmp6 * *
ipv6 filter 1011 pass * * tcp * ident
ipv6 filter 1012 pass * * udp * 546
ipv6 filter 3000 pass * * * * *
ipv6 filter dynamic 100 * * ftp
ipv6 filter dynamic 101 * * domain
ipv6 filter dynamic 102 * * www
ipv6 filter dynamic 103 * * smtp
ipv6 filter dynamic 104 * * pop3
# ipv6 filter dynamic 105 * * submission
ipv6 filter dynamic 118 * * tcp
ipv6 filter dynamic 119 * * udp
#
# DHCPの設定
#
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.100.2-192.168.100.191/24
#
# DNSの設定
#
^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$
(出典:https://www.javadrive.jp/regex-basic/sample/index4.html)
0~255を判定している部分は置いといて、0~255を判定する記述が二つに分かれているのが気になる。
間に"."が挟まるからだ。
IPアドレスでは先頭に"."があってもおかしいし、末尾に"."があってもおかしい。
そのため、まずipアドレスの先頭三組("0~255".)だけドット付きで判定し、最後の一つだけドットなしで判定させている。
しかしそれなら、間に"."が挟まっても挟まらなくてもどっちでもマッチするように書いたあと、
その後、マッチした文字列の全体のフォーマットが正しいかを判定すればいいのではないか?
例えば以下のように。
^(?=^(\d+\.){3}\d+$)((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.?){4}$
0~255を判定する部分が一つになっている。にもかかわらず末尾に"."がついてしまうパターンがマッチしないのは
(または、途中の組で"."がつかないパターンがマッチしないのは)、
先読みで正しいフォーマットだけにマッチするようにして、それ以外の文字列をはじいているからだ。
正規表現が単純に短くなったし、「全体のフォーマットを判定する先読み部」と「各8bit+"\.?"の複雑な判定部分」に分けて描くことができた為、
先読みを使うことで、判定対象となる文字列の、「各部分判定の複雑さ」と「全体のフォーマットの判定の複雑さ」を分けることができる。
次に、0~255判定も複雑になっている。
正規表現では"0以上255以下"のような、複数桁にまたがる数の大小判定は出来ない。
例えば"2"と"10"では、数としては当然"10"が大きいが、辞書順で考えれば"2"の方が後に来る。
つまり、辞書順に並んだ文字列の中から、0~255の範囲だけにマッチするような正規表現を書かないといけない。そのため複雑になる。
しかし、0~255のような複数桁にまたがる数の大小判定ができないとしても、
全ての0~255に当てはまる厳密なパターンを書く((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9]))より、
ある程度絞れる範囲だけ書いた後、除外したいパターンを書いて弾いた方が、読みやすく、意図が理解しやすくなるのではないか?
例えは以下のように。
^(?![3-9]\d\d)(?!2[6-9]\d)(?!25[6789])(?!0\d)\d{1,3}$
まず、上記正規表現末尾の\d{1,3}で、1~3桁のあらゆる数字列にマッチする。
するように記述されている。
「元々の0~255判定部分より複雑じゃん」と言われればそうなのだが、読み方が異なっている。
元々の正規表現は、
「250以上255以下、または、240以上249以下、または、100以上199以下、または、0~99」という読み方になる。
「3桁の数字列にマッチする、かつ、300以上999以下を除外、かつ、260以上299以下を除外、かつ、256以上259以下を除外、かつ、先頭が"0"の2ケタ以上の数字列を除外」という読み方になる。
個人的な意見になるが、「~、または、~」の連言では、「対象となる範囲の全体感と、除外されるべきパターン」が見えないため、どういった範囲の話をしているのかがピンとこない(場合もある)。
一方、「~、かつ、~~を除外」では、「対象となる範囲の全体感と、除外されるべきパターン」がそのまま書かれているため、対象文字列のどの部分のことを言及しているのか(比較的)理解しやすい(、と言いたい)。
ちょっと無理がある言い方か。
二つの変更を組み合わせたIPアドレス(IPv4)を判定する正規表現は以下になる。
^(?=^(\d+\.){3}\d+$)((?![3-9]\d\d)(?!2[6-9]\d)(?!25[6789])(?!0\d)(\d{1,3})\.?){4}$
"(?=..."や、"(?!..."で始まる部分は、「除外または許可されるべきパターンを指定している部分」であり、文字マッチを行っていない。
先読み部分を無視して、文字とマッチする部分だけに注目すると、この正規表現がマッチしようとしている文字列の全体感が把握できる。
((\d{1,3})\.?){4}
https://b.hatena.ne.jp/entry/s/blog.tomoya.dev/posts/the-easiest-web3-textbook-is-really-bad/
や、それ以外もそうなんだけど、著者は非常に抽象度の高いマクロな視点からざっくり語っているので、ミクロな面では実態と異なるのは当然なんだよ。
著者が「地球は丸い」とざっくり言ってるだけなのに、
やれ富士山があるから丸くない、日本海溝があるから海の水全部抜けば丸くない。みたいな頓珍漢な批判が横行している・・・。
地球が丸かったら、下側の人は落ちちゃうじゃんwプークスクスしてる人すら居る。
そりゃすべての規格はオープンなんだし、自宅に2台のPC同士でLAN組んで通信させることもできるし、
なんなら自宅のサーバをインタネット上に公開することだってできるんだから、ミクロな面では独占されてないでしょうよ。
だけど、何か実用的なサービスをやろうと思ったら、結局、グーグル・アマゾン・マイクロソフトのクラウド借りる羽目になるじゃん?
3社に独占されてるじゃん!
そこに、さくらのクラウドやGMOクラウドや、その他の泡沫クラウドを加えたところで、世界規模でみてもせいぜい数百社くらいにかならないでしょ。
Web3 になると、ネット接続されたすべての端末が事実上のサーバサービスの提供者となるので、
究極的な未来では誰も大手クラウドサービスを借りる必要が無くなる。
自分の端末がオフラインの時でも、その時オンラインになっている端末が肩代わりしてサービスを提供し続けるし、
逆に自分の端末がオンラインになれば、他のオフラインの端末の肩代わりをちょっとだけ負担する。
今はまだ過渡期だから、大手クラウドと縁を切れる状況では全くないけれど、IPv4が使われなくなるころには、
そういう世界に代わってるはず。
別増田さんも書いてくれている ( anond:20220722005048 )けど、
究極的な未来では、ネット接続されたすべての端末が協働して一つの仮想的なハードウェア基盤を作り上げるので、
今はまだスマートコントラクトという、それこそ原始的なアセンブラレベルのコードしか動かないけど、
IPv4が使われなくなるころには誰も意識することなく、ブロックチェーン上に構築されたOSを使うことになります。
携帯電話が無かった時代に、電話を持ち歩く話をしたら、電話線どうすんだよwwwみたいにみんな思ったじゃないですか。
自動車電話が出来た時、あーはいはい。無線使うのね。移動中は通話が切れるから止まって話すの?だったら公衆電話使えよwwwとか言ってたじゃないですか。
それが今では、誰もが電話を持ち歩き、その電話の上でOSが動き、いろんなアプリ使いこなしてますよね。
すごいザックリした話だけど、基本的にIPv4アドレスが枯渇してるから、元々日本の割当じゃなかったIPアドレスを日本のプロバイダが買い取って使っているケースがある。
有名なのがNURO光が持ってる92.202から始まるIPアドレスで、2018年まではドイツのアドレスだった。当然今はNUROが持ってるので、データベースに問い合わせれば日本のアドレスであることがわかる。
ただ毎回毎回問い合わせるのは大変なので、IPアドレスと国の対応をリストにしてくれているサービスを使うのが一般的。で、はてなとか一部のサービスはこれを利用して国ごと遮断みたいな雑なアクセス制限をしてるんだけど、はてなは雑なうえに怠惰で不誠実なので、リストの更新すら怠り、間違いなく日本からのアクセスを海外からのアクセスと判定して不快ななぞなぞを強いている。というわけ。
IPアドレスはたいていの場合動的に割り当てられる(インターネットに接続するたびに変わる)ので、そのときに割り当てられていたアドレスが、元々海外のものだったんじゃないかな。最初に言ったとおりIPアドレスは枯渇しているので、NUROでなくても元海外のIPを使う可能性は十分にある。
なんか、最近IPv6の話題を前より見かけるようになった。それはいいんだけど、ものすごく偏ったことを言う人が増えたなぁ
IPv6では、セキュリティは端末で護るものだとか、IPv4と同じようにFWで護れないと困るとか、物凄いことを平気で言い出す人がちらほらいるなぁ...
IPv4だろうがv6だろうが、中継段、終端の両方で守るべきなのは自明だとしか思えない。
DoS系なら中継段で守ったほうが効率よく守れるし、個別攻撃なら終端で守らないと複雑度が増して守りきれない、程度のことは常識だと思うんだよなぁ。違うのかなぁ...
まぁ、鯖を管理する人たちでもiptables/ufw/firewalld/ipfw/pf/npfの設定は呪文にしか見えないだろうし、TCPの状態遷移なんて追い切れないだろうし、S/Aと言われてわかる人も少ないだろうけど、それはただの勉強不足でしかないと思うんだよなぁ。
まぁ、nginxすら分からなくてapacheから移行できないという鯖缶もいるから仕方がないんだろうけど。
(なお、apacheが悪いと言うわけではない。必要に応じて使い分ければいいのに、「知らないから」nginx(別にlighttpdでもh2oでもなんならunicornでもpumaでもいい)を使わないと言うのは、違うだろうと思うのだよな。
下記の記事に10Gsで提供されたルータの情報が載ってなかったので利用中の自分が調べてみた。
https://qiita.com/notoken3331/items/ca228e2ac28ac7ea4879
メーカー | Huawei |
製品型番 | HN8255Ws |
まず情報として、ONUに割り当てられたIPv6のプレフィックスは/56だった。
ルータ機能でのWAN側インターフェースではおそらくそれより細かく切ったプレフィックスでIPv6アドレスが割り当てられてるはずだが
HN8255Wsの管理画面では確認する方法がないように見受けられる。
セキュリティ関連の設定については、詳細設定 → セキュリティ設定 → DoS設定に下記のチェックボックスがありデフォルト全有効
SYNフラッド攻撃の防止:
LAND攻撃の防止:
Smurf攻撃の防止:
WinNuke攻撃の防止:
グローバル ー HN8255Ws(ONU兼ルータ) ー NetGear GS110MX ー PC(Windows10)
iphone X (au) Wifi無効設定で iNetToolsアプリにて疎通確認及びポートスキャン
ちなみにauのLTE契約のみでテザリングでPCをぶら下げる場合、PCにはIPv4プライベートアドレスと
IPv6リンクローカルアドレスしか振られないので、テザリングPC端末からIPv6疎通確認は実行不可。
LET NET for DATAを契約すればテザリングPC端末側にもIPv6グローバルIP振られるらしいんだが、
わざわざこのためだけに契約変更する気にはならんのでテザリングでの検証は却下。
そのため、iphoneのアプリで疎通確認可能なiNetToolsを疎通確認用プログラムとして選定。
iNetToolsというアプリだとポートスキャンの時にプロトコル指定が出来そうにないのでポート番号のみを指定した。
TCP、UDP両方チェックしているのか、どちらか片方しかチェックしていないのかは情報が見当たらなかった。
両方チェックして両方疎通した場合のみOpen判定なのか、どちらか片方でも開いていればOpen判定なのかも不明。
疎通確認端末のiphoneXがWifi経由でなく単独でIPv6のグローバルアドレスに疎通確認できる事の証明として
「www.google.co.jp」のIPv6アドレスに対してpingで疎通確認し、その後ポートスキャンで各ポートが開いているかどうかを見た。
確認項目とその結果は下記の通り。
iphoneXからwww.google.co.jpのIPv6アドレスへのicmpv6疎通確認 | アプリで疎通OK |
WinPC割当IPv6グローバルアドレスへのicmpv6疎通確認 | アプリで疎通NG |
WinPC割当IPv6グローバルアドレスへのポートスキャン(53) | アプリでClose判定(Open欄に出てこない) |
WinPC割当IPv6グローバルアドレスへのポートスキャン(80) | アプリでOpen判定 |
WinPC割当IPv6グローバルアドレスへのポートスキャン(135) | アプリでClose判定(Open欄に出てこない) |
WinPC割当IPv6グローバルアドレスへのポートスキャン(139) | アプリでClose判定(Open欄に出てこない) |
WinPC割当IPv6グローバルアドレスへのポートスキャン(443) | アプリでOpen判定 |
WinPC割当IPv6グローバルアドレスへのポートスキャン(445) | アプリでClose判定(Open欄に出てこない) |
ちなみにルータのWAN側インターフェースが握ってるIPv4アドレス宛にも同じポートのスキャンをしたが、同じように80と443がOpen判定だった。
昔フレッツ光回線使ってた時にポートスキャンテストとかしてなかったので他の光回線のポートスキャンの結果がどうなるかは知らない。
10Gsはそれなりにマシっぽいが、HTTP/HTTPSのポートが空いてるとすると、HTTP/HTTPSの改竄パケット受け取っただけで問題が発生する脆弱性が端末搭載OSに発覚した場合は危険かもしれない。
ただ、アプリ側のOpen判定が微妙なので誰かちゃんとIPv6環境から真っ当なポートスキャン試してみて。俺はこれ以上検証しない。
掲題の通りなのだが、まず自分はネットワークエンジニアではない。この業界に関わって10年程のひよっこだ。
企画から開発、運用まで軽くではあるが1通りやったことがある。IPv6が使われているシステムの開発や構築、運用の経験はない。
知識はネットワークを勉強をして読んだ本にかかれてあることを勉強した程度(O'ReillyのIPv6アプリケーション適応ガイドとか読んだ記憶がある)。
ただ、毎回IPv6が書かれている章を読むたびに何故こんな設計にした?とモヤモヤする。
動かなくなるとか論理的な矛盾があるわけではないのだろうが、これは開発や運用を現場でやったことのないネットワークエンジニアが理想だけでつくりあげたものなのではと思ってしまう(ちなみに経緯を調べても既存のIPv6の仕組みが変わるわけではないので調べてません)。設定作業や障害対応を考えても人間が扱うには複雑すぎるような気がするというのが違和感のほとんどを占めるものだろう。
実際に運用するとなるとIPv6用の管理ツールをつくる必要がある気がするし、それを用意するためのお金や工数がもらえるところは(肌感覚でしかないが)少数派だと感じている。IPv6 を使っているところも足りなくなったIPv4のグローバルIPがわりに使われてシステム内部のプライベートのアドレスにあたるところはIPv4変換でこれまで通りというのがほとんどなのでは?と思ってしまう。
v6にかわるものが新しく出てほしい(出てこないだろうが)。そして実際にIPv6のみで設計、開発、運用されているシステムに携わっている人の意見が聞いてみたい。