Posts

Showing posts from 2020

pingが通らない時

pingができなくなるのは、うっかりファイルシステムをコピーした際にcapabilityを落としてしまったことが原因であることもあるらしい。 rsyncやtarでファイルシステムごとコピーする際は、--xattrsを忘れずに。 pingが通らない。 $ ping str ping: socket: Address family not supported by protocol $ ping -4 str ping: socket: Operation not permitted capabilityの確認。何も付いてない。 $ sudo getcap /bin/ping capabilityの付与と確認。 $ sudo setcap cap_net_raw=ep /bin/ping $ sudo getcap /bin/ping /bin/ping = cap_net_raw+ep "cap_net_raw+ep"が付与された。 そしてping通るようになった。     $ ping str PING stretch.h.ccmp.jp (192.168.60.3) 56(84) bytes of data. 64 bytes from stretch.h.ccmp.jp (192.168.60.3): icmp_seq=1 ttl=64 time=6.89 ms 64 bytes from stretch.h.ccmp.jp (192.168.60.3): icmp_seq=2 ttl=64 time=3.100 ms 64 bytes from stretch.h.ccmp.jp (192.168.60.3): icmp_seq=3 ttl=64 time=3.53 ms 以下ちょっと実験する際などに役立つコマンド達  capability, xattrの確認コマンド、何もない時     # getcap /bin/ping # getfattr -n security.capability /bin/ping /bin/ping: security.capability: No such attribute # sudo getfattr -d /bin/ping # sudo attr -l /bin/ping capab

LinuxでのSLAAC IPv6アドレス自動設定

Linuxにおいて、SLAACによるIPv6アドレスアサインにはいくつかのモードがあり、以下のカーネルパラメータをセットすることで制御できるようです。 addr_gen_mode - INTEGER Defines how link-local and autoconf addresses are generated. 0: generate address based on EUI64 (default) 1: do no generate a link-local address, use EUI64 for addresses generated from autoconf 2: generate stable privacy addresses, using the secret from stable_secret (RFC7217) 3: generate stable privacy addresses, using a random secret if unset モード2のRFC7217形式を利用するためには以下のように 、 stable_secretをあらかじめセットしておく必要があります。 stable_secret - IPv6 address This IPv6 address will be used as a secret to generate IPv6 addresses for link-local addresses and autoconfigured ones. All addresses generated after setting this secret will be stable privacy ones by default. This can be changed via the addrgenmode ip-link. conf/default/stable_secret is used as the secret for the namespace, the interface specific ones can overwrite that. Writes to conf/all/stable_secret are refused. It is r

LinuxルーターでのDS-Lite設定

昨日に引き続き、自宅のLinuxルーター上でDS-Liteの設定を行いました。 BB.exciteコネクト(IPoE接続プラン)ではIPv6回線のトンネルを通して、インターネットにIPv4接続することが可能です。 実際のサービスはtransixのDS-Liteを使うことになるのですが、この回線を使うことで混み合っているNGNの網終端を通らずに済むことになるので、快適なネットライフが待っているらしいのです。 ところが我が家ではすでにPPPoEでのIPv4の固定IP契約があり、その固定IPをVPN、DNSサーバなどいろいろなサービスに使っていて、別のIPアドレスに変わってしまって困ります。またDS-Liteの場合にはグローバルIPアドレスを複数のユーザーで共有して使うので、なおさら外部からのアクセスなどには使うことができません。 そういった理由で、IPv4に関しては既存のPPPoEのままにするつもりでいました。 しかしながらWebページの閲覧やYutubeコンテンツの視聴に使われるHTTPやHTTPSに限れば固定IPは不要です。また、Linuxルーターの場合には、宛先のIPやプロトコル、ポート番号に応じてきめ細かく接続先の経路を選ぶことができます。そこで、せっかくなので今回、HTTPとHTTPSに限って、DS-Liteの経路を利用する設定を試してみました。 IPv4 over IPv6のトンネルセットアップ ip -6 tunnel add dslite mode ip4ip6 \ remote 2404:8e00::feed:100 local 2409:x:x:x::1 dev eth0.10 ip link set dev dslite up 宛先が 192.168.0.0/16以外(宛先がWAN向き)で、宛先 ポート 80、443のパケットにマークをつける。 iptables -A PREROUTING -i eth0 -t mangle \ ! -d 192.168.0.0/16 -p tcp --dport 443 -j MARK --set-mark 1 iptables -A PREROUTING -i eth0 -t mangle \ ! -d 192.168.0.0/16

LinuxルーターでのIPv6 IPoE設定

Image
こんにちは、コロナの影響でステイホームでリモートワークを励行しています。多くの人たちが業務のために自宅からインターネットにアクセスしたり、外に遊びに行けず自宅でネットコンテンツを長時間視聴するためか、日時を問わずNTTフレッツ回線のネットワークが非常に遅くなっているような気がします。 フレッツ回線の混雑の情報をネットで調べてみると、もともと回線設備の容量が少なめで、主にIPv4のPPPoE接続で利用しているNTTのNGNの網終端装置で回線が混み合っているのではないかということです。 ( https://eng-blog.iij.ad.jp/archives/5536   http://enog.jp/wp-content/uploads/2018/08/20180720-ENOG51-Kashiwazaki.pdf ) これを回避するには比較的空いているIPv6の接続口を利用するのが良いとのことでした。NTTのNGNネットワークとインターネットの境界の設備は、NTTの方針に依存せず増強できるとのことです。 そこでIPv6 IPoE + DS-Lite なプロバイダと契約し、もともと自宅で利用していたLinuxルーターをIPv6に対応させました。 今回契約したのはBB.exciteコネクト(IPoE接続プラン)というもので、既存のフレッツ回線に月々700円(税抜)追加でIPv6のインターネット接続を利用できるようになります。 https://bb.excite.co.jp/norikae/ipoe/ ちなみに、本題から外れますが、我が家のルーターは手のひらサイズのIntelのNUCです。NICが一個しかついていないため、eth0からTag VLANを利用してeth0.10のインターフェースを仮想的に作りWAN側に用いています。eth0とeth0.10を後述のコマンド例で使いますが、前者が内側、後者が外側ということです。 ちなみに、ルーターのOSはDebian Busterをtarで固めたものをUSBメモリに入れ、起動時にtmpfsに展開して、ディスクレスで運用しています。こうすることで、万が一NUCが壊れたとしても適当なパソコンをルーターとしてブートすることが可能です。 WANインターフェースの設定 IPv6の世界で