スキップしてメイン コンテンツに移動

投稿

3月, 2023の投稿を表示しています

x64 Linux ルータのIPoE(map-e by iptables)環境でGame ConsoleをNAT越えさせる -- その1fullconenat module追加有りの場合

随分前のことなのですが、フレッツ光クロスとNuro光の2回線を引いていた頃があり、クロス(ぷらら、OCNバーチャルコネクト)の方が1Gを安定して超えていたので、Nuroの方を解約することにした時のことです。回線切り替えテストのためNuroの回線を一旦停止し、ブリッジモードのwifiをフレッツ光クロス経由に切り替えところ、ゲームコンソール(具体的にはNintendo Switch)の NAT判定がNATタイプ Dになり、家人から「オンラインモードでお友達を招待できない」とのクレームがでました。 調べたところ、NAT Type Dは対照型NAT(Symmetric NAT)の状態だそうで、単にスクリプトを見直すだけでは当時はNAT越えできませんでした。 そこで、いろいろと試した結果、FULLCONENATのカーネルモジュールがあるのでそれを使えるようにし、スクリプトを書き換えたところNAT判定をタイプAまで持って行けたので当時のことをまとめてみました。 まず、今回の環境(2021-12-08時点)についてですが、ルータはx64機で10G x2 nic + 1G x 1 onboardで、debian versionは11.2、uname -a はLinux gw23 5.10.0-10-amd64 #1 SMP Debian 5.10.84-1 x86_64 GNU/Linuxです。 2023/04/14追記:Debian 12対応方法を追記しました。 2023/04/16追記: モジュール追加無し の場合を新規投稿しました。 まず、FULLCONENATカーネルモジュールとiptablesをコンパイル・パッケージ化します。詳細は割愛しますが、Debianでカーネルモジュールとパッケージがビルドできる状態にしておいてください。 ビルド手順はおよそ以下の通りです。(途中で再起動させるので注意してください。) apt-get install linux-headers-amd64 apt-get install build-essential debhelper git libxtables-dev cd /usr/src ## 2023/04/14 追記:以下 Debian 11の場合(Debian 12は不可) git clone https:/

mac上のlldbで独自ビルドしたライブラリを参照させてソースレベルデバッグを行う

少し古いのですが、macOS sierra上でOpenSSL098のデバッグをしたいと思いましたが、vanillaな環境では当然ながらdSYMは入手できません。そこで、自前ビルドしたOpenSSL098を使ってlldbでソースレベルデバッグができたので、備忘録として挙げてみました。 追記1:High SierraではdSYMもライブラリと同じパスにインストールすることで対応できるようです。 まず、OpenSSL098をdSYM付でビルドさせます。opensslプロジェクトを選択し、Build Settingsでdsymを検索すると"Debug Information Format"の項目がでてくるので、"DWARF with dSYM File"とします。さらにOpenSSL098を自前ビルドするには、以下の変更が必要です。 # 1. source code内の openssl.xcodeproj/project.pbxprojからx509_vfy_appleを含む行を削除する(viを使うと簡単に削除できます) # 2. src/crypto/x509/x509_vfy.cの以下の部分をコメントにするかあるいは削除する #ifdef __APPLE__ #define X509_verify_cert X509_verify_cert_orig #endif 続いてビルドですが、$t/SourceCache/$p/$p-$v以下にソースコードを展開し、xcodebuildをつかっておよそ以下のようにビルドしました。 export SDKPATH="$(xcrun --sdk macosx10.12 --show-sdk-path)" export SDKROOT=$SDKPATH export TOOLCHAINPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain export TOOLCHAIN=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain export sdk=mac