【マイクラJava】ラマの厳選のやりかた

ラマはチェストを装着してインベントリを持たせることができる動物mobです。リードで引っ張られた別のラマに付いていく習性があるので、大量にアイテムを輸送したいときに便利…かもしれません。 この記事ではラマを繁殖させて強い個体を選別する方法を解説し…

Linux Mintを21.3 -> 22にアップグレードしたらBIOS loopになった問題

Linux Mint 22が先月リリースされたので21.3からのアップグレードを行った。 アップグレードは問題なく完了したが、再起動してみるとgrubが壊れているっぽく、grubの画面が出るべきところで勝手に再起動されてbios画面が出てきてしまう。linux mint 22 bios …

Deutschlandticket(49ユーロチケット)のキャンセルポリシーについてのメモ

全然細かい仕様はわかっていないのですが予想とちょっと違う挙動があったので一応体験談として記録しておきます。 Deutschlandticketというのはドイツ国鉄(Deutsche Bahn, 略称DB)の普通・快速列車(S/U/RB/REまでは可、IC/ICEは不可)およびバス・路面電…

GCCとかmakeのヘッダ・ライブラリ探索関連のオプション・変数まとめ

GCCとかmakeを使ってC/C++のプロジェクトをビルドするときの各種オプションや変数をいつも忘れてしまうのでまとめました。 基本 GCCによる実行ファイルの作成は大きく分けるとコンパイル→リンクの2段階があります。 まず、コンパイル時に必要になるのがヘッ…

Linux Mintでxrdp経由で一部のGUIアプリケーション(mintsources)などを実行しようとするとError executing command as another user: Not authorizedと言われる

自宅サーバーとしてヘッドレスで動かしているLinux Mintで、ソフトウェアのアップデートなどはxrdp経由でやっているのですが、ミラーサーバーの選択などに使う「ソフトウェアソース」(mintsources)が起動しません。 CUIで直接pkexec mintsources(スタート…

FreeBSD/OpenBSD/NetBSDで透過プロキシのredsocksを動かしてみる

概要 特定アプリケーションのTCP・UDP通信を透過的なSocks5プロキシ経由にする方法(Windows・Linux・Androidなど) - turgenev’s blogの外伝という感じで、BSD系のOSに触ってみるついでにredsocksを動かしてみました。(※NetBSDでは動かず)わからないとこ…

【マイクラJava1.21】エリトラとリード(+ボート)を使用してmobを空輸する方法

概要 マイクラの終盤、つまりエリトラを入手して以降のゲームプレイでもそれほど便利な方法が確立されていなかったタスクとしてmobの移動があります。 短距離ならエサ誘導やリード+徒歩(あるいはウマ)などもありますが、長距離だと手間がかかります。ネザ…

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

※内容が大幅に間違っていることが判明したため、一旦記事内容は削除しました。 詳しくはこちらのリプライツリーをご参照ください。 信頼出来ないホストに対してエージェント転送するのは危険なのは確かなんだけれど、SSHプロトコルやOpenSSHに対する理解不足…

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(iptables TPROXY)・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の使い分け・ベストプラクティス(+Docker連携)

(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を割り当ててサブネ…