ssh-agent転送のセキュリティ問題と適切な鍵管理の方法について考える

ssh-agentは鍵ファイルのパスフレーズを記憶してsshログイン時に毎回入力しなくても済むようにしてくれたりリモートマシンからローカルの鍵を使えるようにしてくれたり(ssh-agent転送)といった機能をもつ便利なツールですが、このssh-agent転送にはセキュ…

root権限のないssh上にUDPを通す方法について(ポートフォワード、SOCKS5プロキシなど)

sshはリモートマシンとの通信に汎用的に使われるセキュアなプロトコルで、ポートフォワードを使用してリモート上のプログラムがローカルで使える(あるいはその逆)ようにしたり-Dオプションを使用してSOCKSプロキシとして動作させることでローカルのアプリ…

ファイルブラウザ(エクスプローラ)の右クリックメニューで、rclone・sshfs経由で閲覧しているssh先のファイル・フォルダをssh先のシェルやVS Codeで開く

sshを使ってリモートのサーバー上で開発を行っているとします。このとき、基本的にはほとんど全てのこと(コンパイルや機械学習など計算を伴うものや、ファイル操作など)はsshで入った先のリモート上(ターミナル、あるいはVS CodeならRemote SSH拡張機能)…

Rustのslotmapやslabを使って双方向連結リスト(っぽい何か)を作る

Rustで双方向連結リストが欲しいと思ったときは、意外と簡単に実装できる代替品が使えるかも?という記事です。 Rustでの連結リスト実装に関しては、何よりもまずIntroduction - Learning Rust With Entirely Too Many Linked Listsという有名な文献がありま…

日本国内の組織に割り当てられている1048576(/12)以上の大きさのIPアドレス範囲の一覧

何となく知りたくなったので、JPNIC管理下で、APNICが逆引きの管理を行っているIPv4アドレス一覧 - JPNIC この中で1048576(0x100000)以上の大きさのものをどこの会社が持っているのか調べてみました。全部で14個あります。大きい順(大きさが同じなら若い…

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・Androidなど)

概要 ネットワーク上の制約を回避するためにプロキシや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の使い分け・ベストプラクティス

(2024/05/22) Docker関連とiptablesのリセットの話を追加し、順番を入れ替えるなど大幅な変更を行いました。また、iptablesでもチェインを使えばnftablesと似たような設定ができそうと書きましたが誤っていたので修正しました。 概要 Linuxのファイアウォー…

【v6プラス/OCNバーチャルコネクトでも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接続は様々な原因により切断される可能性があります。よくあるエラーメッセージは「client_loop: send disconnect: Broken pipe」などというものです。しかし、原因によっては、適切な対策をすることで、接続を維持…

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番で、僕自身はプロコフィエフの最高傑作はこ…