2つのLinux間でIPv4 over IPv6トンネリング

IPv4 over IPv6トンネリングを使うと、IPv6しか使えない環境から、IPv4/IPv6どちらも使える環境(VPSなど)を経由してIPv4でインターネットに出ていくことができます。 今回は別にIPv4が使えなかったわけではないのですがこれを試してみました。 リモート側…

LinuxルーターのMAP-Eで良い感じにNATポートを使い回す方法

OpenWRTなどLinuxを使用してMAP-E(v6プラス、OCNバーチャルコネクトなど)接続を行う方法は様々なサイトで紹介されていますが、iptablesやnftables(バックで動いているのはnetfilter)のNATでは使用ポート範囲を複数(1000-2000, 3000-4000みたいな感じで…

Linux 6.5のnetfilterのNATはTCPのTIME_WAIT状態のポートを使いまわす

TCPでは、自分から接続を切断する際に、外向きのFIN(+ACK)→内向きのFIN+ACK→最後の外向きのACK、という順でパケットがやりとりされます。この外向きのACKを送ったあとしばらくはソケットを使い回さないようにTIME_WAITという状態が設定されます(理由は他…

GCPのCompute EngineのFree Tier(無料枠)の外部静的IPには本当に課金されないのか?

ドキュメント読んでもわかりづらいのでメモを残しておきます。 2024/4現在、GCPの無料枠(Free Tier)ではメモリ1GBくらいの仮想マシンを永久無料で使えることになっていますが、これに割り当てられる外部IPv4アドレス(インターネットと接続するために必要…

ファイルをディスク上で暗号化し、ログイン時に自動で復号する方法まとめ(Windows・Linux)

概要 モバイルPCなどでは、盗難のリスクがあるため、機密性の高いユーザーデータはディスク上に平文で保存せず、適切に暗号化した状態で保存することが望ましいといえます。ただ、復号のために専用のパスワードを入力するような方法は手間がかかるため、この…

特定アプリケーションのTCP・UDP通信を透過的なSocks5プロキシ経由にする方法(Windows・Linux)

概要 ネットワーク上の制約を回避するためにプロキシやVPNのような類のものを使用するにあたって、(必ずしもそれ自体ではプロキシなどに対応していない)特定のアプリケーションを対象に、またTCPだけでなくUDPにも対応したいということがあると思います。 …

マルチユーザー&root権限なしの環境で他ユーザーからTCPポートを保護する

sshサーバーなど、多くのユーザーが1つのオペレーティングシステムを共用するマルチユーザー環境では、TCP/UDPのようなポートを使用するアプリケーションを起動するとそれは他のユーザーからもアクセスできるようになります。これはセキュリティ的に望ましく…

cgroupのnet_clsを使って、特定のプロセス(ツリー)に対するiptables/nftablesルールを設定する

概要 Linuxのcgroup機能とは、プロセスをグループに分けて管理し、その単位ごとにCPU/メモリの割り当て等の設定を可能にするものです。 cgroupのサブシステムにはcpu, memoryなどの他にnet_clsというものがあり、これを使うと指定したグループからのパケット…

Linuxで一つのパケットに2回(複数回)NATをかけるための2つの方法

概要 LinuxでNATなどを担当するiptablesやnftables(中身はnetfilter)の機能では、一つのパケットに2回以上SNATあるいはDNATをかけることはできません。SNATでもDNATでも、パケットにNATをかけると一度決まったらそのパケットのNATに関する処理はそこで完了…

NAT動作をめぐる誤解まとめ

概要 この記事では、P2P通信の快適性などに大きく影響するところでありつつ、メーカー・プロバイダ側からそれほど積極的に情報が提供されているとは言えないNAT機器の動作について、よくある誤解をいくつか取り上げて解説します。 NAT動作に関する前提知識(…

Linuxのnetfilterのconnection trackingとNAT動作の仕組み

概要 LinuxではNATやファイアウォールなどのパケットの扱いを担当するカーネルの機能としてnetfilterというものが搭載されており、特にそのconnection trackingの機能を理解することがLinuxのNAT動作の理解には不可欠です。また、安価な市販ルーターの多くは…

nftables/iptables/ufwの使い分け・ベストプラクティス

概要 Linuxのファイアウォール(パケットフィルタ)は、内部的にはLinuxカーネルのnetfilterという機能が担っています。iptablesやnftablesはnetfilterを操作するフロントエンドで、ufwはiptablesやnftableを操作するさらに上位のフロントエンドです。また、…

【Map-EでもNATタイプA】LinuxでポートセービングIPマスカレード付きの制限コーン風NAT(EIM/ADF)を動かす

概要 NAT動作をめぐる誤解まとめ - turgenev’s blogでは、UDPホールパンチングのしやすさとポートの節約を両立するには「Address Dependentなマッピングを保持しつつEIM風に動作するADFなNAT」が一番いいという話を書きました。これだとv6プラスやOCNバーチ…

NATタイプ、ポートセービングIPマスカレード、UDPホールパンチング、STUN

概要 この記事では、NAT(NAPT)を行う機器の動作タイプの分類、およびそれと密接に関連する話題として、ポートの枯渇を防止するためのいわゆる「ポートセービングIPマスカレード」の手法とUDPホールパンチングについて解説します。 NAT(NAPT)(あるいはIPマ…

ssh接続の切断-各種原因と対策

概要 リモートマシンの操作に欠かせないssh接続は様々な原因により切断される可能性があります。しかし、原因によっては、適切な対策をすることで、接続を維持することも可能です。 この記事では原因と対策についてできるだけ網羅的に紹介します。 注: ssh接…

DROP vs REJECT論争、そしてWindowsとLinuxのファイアウォールの動作の違いについて

概要 この記事では、IP通信における不要なパケットへの2通りの対処法であるDROPとREJECTがWindowsやLinuxのファイアウォールにおいてどのように使われているか説明し、Linuxの動作をWindowsに近づけるための(おそらく英語圏含めほとんどあまり知られていな…

Androidで各種クラウドストレージやNASの音楽をギャップレス再生する方法

はじめに クラシック音楽やロックのライブアルバム等では、音楽や拍手が鳴り続いているところでトラックが分割されていることがよくあります。これらを快適に再生するには、無音を一切挿入することなく完全に連続的に複数トラックを連続再生する、いわゆる「…

P2P通信の仕組み、NATタイプ、Tailscaleで別のIPを割り当ててサブネットを公開する方法、などについて

最近の自宅ネットワーク環境の更新に伴って前々回、前回と記事を書いてきましたが(特に前回記事はオススメ!)、それに引き続いて自宅までVPNで接続できる設定などをしていたので、今回はそれに関する記事です。 本来はTailscaleで別のIPを割り当ててサブネ…

IPoE/PPPoE併用時(など)に一つの端末から同時に複数の接続経路を利用する

概要 先日公開した当ブログの記事フレッツ光関連の設定について(ドコモ光、ひかり電話、IPoE/IPv4 over IPv6とPPPoEの併用など) - turgenev’s blogや、その他の多くの記事にもある通り、光回線においては適切なプロバイダを選べば、あるいは複数のプロバイ…

フレッツ光関連の設定について(ドコモ光、ひかり電話、IPoE/IPv4 over IPv6とPPPoEの併用など)

概要 最近、ドコモ光のプロバイダを変更するにあたってかなり色々調べたので、知ったことをまとめておきます。一部、調べ切れていなかったり用語が不正確だったりするかもしれませんがご容赦ください。訂正や質問などはお気軽にコメントいただければありがた…

mpvとギャップレス再生について

mpvとは メディアプレイヤーの一種である。おおよそこの世にあるほとんど全てのメディア形式に対応しており、オープンソースで開発されている。UNIX系でもWindowsでも動作する。また、バックエンドのAPIがlibmpvとして公開されており、これを使用する派生メ…

Windowsのパス長さ制限に関する挙動まとめ

パス長さ制限 Windowsが扱えるパスの長さは260(定数MAX_PATH)に制限され、それ以上の長さのパスをもつファイル・フォルダの操作に支障が出ることがある。 この制限はLongPathsEnabledというレジストリの値を1に設定することで解除できる。例えばPowerShell…

【マイクラ】ヤギの角笛を全種類集める方法について(叫ぶヤギの入手、自動回収装置)

Minecraft 1.17においてヤギという新しいmobが追加された。ヤギは特定の条件で「ヤギの角笛」というアイテムをドロップし、これはプレイヤーが右クリックで使用するとはるか遠くまで届く大音量のサウンドが鳴る。 この記事ではヤギを2匹見つけてから角笛を手…

Windowsでsshfs(トラブルシューティング等)

はじめに sshfsとは、リモートのsshサーバー上のディレクトリをローカルにマウントすることができるLinux(UNIX)用のソフトウェアです。Windowsでも同等の機能を持つSSHFS-Win(https://github.com/winfsp/sshfs-win)というソフトウェアがあるのですが、使うに…

Youtube名演探訪シリーズ#4 - プロコフィエフ/ピアノソナタ第5番 改訂版(作品135)

久しぶりの更新です。初回の第8番に続き、こんどはプロコフィエフのピアノソナタ第5番を扱ってみようと思います。 第8番の記事でも述べたとおりプロコフィエフのピアノソナタで僕が一番好きなのは8番、その次が7番で、僕自身はプロコフィエフの最高傑作はこ…

CygwinでSugar制約ソルバーを動かす

Sugar制約ソルバーSugar: a SAT-based Constraint Solverは、パズルをSugar制約ソルバーで解くみたいな感じでパズルをSATのデータに変換してSATソルバーに丸投げして解かせる感じのソフトウェアです。たぶん動作環境としてはLinuxしか想定していなくてCygwin…

定理証明支援系Leanのインストールと初期設定(Linux)

※そろそろLean 4が出そうなのでここの情報ももはや正確ではないと思います(2021/09/11)。 Leanのドキュメントは原則としてLean communityからたどれます。Lean自体のホームページからインストール方法を探そうとするとここに飛ばされます。 僕が使っているLi…

【Minecraft】小型で簡単で高効率な焼き鳥製造機

※おそらくこのバグ(21w05aで直したことになっているがそのせいで逆に悪化した?)の影響で、1.17以降では鶏が外に出てしまいうまく動作しません。水の幅を1マスから3マスにすれば(それに伴って親鳥を置いておく場所を1マス奥にずらす必要があります)1.17.…

Youtube名演探訪シリーズ#3 - ショスタコーヴィチ/交響曲第4番の終楽章のコラール

このシリーズ第3回は初めての交響曲。ショスタコーヴィチでは今のところ一番好きな4番だが全曲レビューは疲れるので、特に気に入っている3楽章終盤を聴き比べる。ティンパニ2台のクレッシェンドによる導入から始まり、C-E-G-G → H-D-G-G → A-C-G-Gis(!!)…

【Minecraft】1.14以降で使える簡単で高効率なアイアンゴーレムトラップ(ゾンビ式)

あまり作り方まで入れて長い記事を書く意味を感じないので、スクショだけ何枚か貼って簡単な解説をします。質問があればコメントしてください。 効率はたぶん1時間当たりインゴット300弱くらい出るんじゃないかと思います。大体50秒おきに1体スポーンします…