EdgeRouterでIPv6 PPPoEが正しく接続できない問題を解決する
TL;DR
- EdgeRouterのpppd(というかそもそもの本家のが)はIPCP受信時にしか
/etc/ppp/ip-pre-up
が走らず、IPv6CPしか送ってこない場合はインターフェイス名がリネームされない - よってインターフェイス名のリネームが走らずDHCPv6PD等の処理が走らない
- 強引にインターフェイス名をリネームして
/etc/ppp/ip-pre-up
を走らせるとpppdがバグってsyslogが汚染される(EdgeRouterでIPv6 PPPoEの設定) - ので、pppdにパッチを当ててクロスコンパイルしたもので
/sbin/pppd
を置き換えて解決させる
とりあえず直す
公式のファームウェアのtar.gzから引っこ抜いてくれば一瞬で戻せますが、万が一の事を考えて/sbin/pppd
のバックアップを適当な場所に作っておくことをおすすめします。
上のリンク先に導入手順を英語で書きましたが、やることは書いてあるコマンドを打ち込むだけなので難しくないと思います。
また、今まで通りのipv4のみのPPPoEもちゃんと動きますが、/var/run/pppoe-client-sessions/
以下にPIDファイルを作らないのでshow pppoe-client
が使えないことだけは注意してください。
ファームウェアアップデートの際には書き換えたものは全て消えてしまうので、ファームウェア更新の際には気をつけてください。
パッチの内容の解説(分かる人向け)
IPv6 only PPPoE = FAIL - Ubiquiti Networks Community
上のリンクにて問題が起こる理由とその対処方法が書かれていますが、pppdに当てているパッチが不十分でちゃんと動いていないようです。
まず、lcp-echo-adaptive
オプションはDebian独自のパッチなのでDebianのpppdのソースとパッチを取ってくる必要があります。
ちなみにipv6cpでのpre-upの実装は以下のパッチを参考にしました。
ただ、このパッチはdebianのpppdにそのまま適用できなかったのでソースを少し読んでちゃんと合うようにしました。(具体的に言うとスクリプトの実行完了を待たないとインターフェイスがリネームされたかどうかの確認処理の意味がなくなってしまうのでそこだけ直しました)
クロスコンパイルについて
EdgeRouter ER-Xは一般的なx86やx86_64アーキテクチャではなくMIPS(リトルエンディアンモード。mipsel
とも言う)で動いているので、クロスコンパイルしなければなりません。
また、EdgeRouter ER-Xの内蔵フラッシュメモリは200MBちょっとしか無い上に空き容量がおおよそ70MBほどしか無い為、gccなどのツールのEdgeRouterへの導入は絶望的です。
今回は、DebianのMIPS移植版をローカルのマシン上でQEMUを使って動かしました。と言ってもカーネルから全てエミュレートすると激遅になるので、ユーザランドだけエミュレートしています。
今回はこれを使いました。準備としてbinfmt
とqemu-mipsel-static
とdebootstrap
が必要になるので、入れておきましょう。
mkdir debian_stretch
./mkdebianrfs.sh mipsel stretch ./debian_stretch
で、勝手にrootfsが出来上がるのであとはaptからgccとmakeを入れてあげればビルド環境の出来上がりです。(スクリプトがやってることは中身を見てみれば分かりますが、単純にchrootしてるだけです)
Ubuntu18.04+WSLでfcitx-mozcを使って日本語入力出来るようにする
※本稿では日本語入力環境(fcitx-mozc)の構築についてのみ触れます。WSLの導入についてはMSの公式文書を参照してください。
インストール環境
- Windows10 1803以降がインストールされた環境
- Ubuntu18.04(ストアからインストール可能)
- VcXsrv
インストールする
sudo apt install fcitx-mozc
fcitxとmozcとX11関連のあれこれが全部一気に入るので気長に待つ。
sudo apt install fonts-noto-cjk fonts-noto-color-emoji
日本語フォントが無いと話にならないので導入する。
sudo apt install dbus-x11 sudo sh -c "dbus-uuidgen > /var/lib/dbus/machine-id"
どうやらこれでも不足しているパッケージがあるのでインストールして、machine-id
に生成したUUIDを書き込む。(これをしないとエラーになる)
fcitxの使用には環境変数の設定が必要になるので.profile
に以下の設定を書き込む。
export DISPLAY=localhost:0.0 export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx export DefaultIMModule=fcitx export DISPLAY=localhost:0.0
一旦ログアウトしてWSLを立ち上げ直して(source .profile
でも良いかも)、VcXsrvを立ち上げておく。
fcitx-autostart
を実行して、エラーが出ないことを確かめる。(warningは出ますが気にしなくても大丈夫です)
※毎回起動時にfcitx-autostart
するのが面倒なので一度.profile
に書いてみましたが、Xサーバを立ち上げてない状態だと永遠にシェルが立ち上がってこなくなったのでやめました。
(fcitx-autostart > /dev/null 2&>1 &)
と書いておくと永遠に立ち上がってこないみたいな事は起こらないと思いますが、Xサーバが立ち上がってるかどうか確認してからfcitx-autostart
した方が良いかもしれないですね。
設定する
fcitx-config-gtk3
を実行して、Input Method
の画面で使っているキーボードの配列に合ったキーボードとmozc
を追加する。
Global Config
はCtrl+Space
で切り替えになっていればとりあえずは大丈夫です。
ちなみにfcitxが立ち上がってない状態(fcitx-autostart
してない状態)で設定画面を開くとInput Method
の欄が空っぽになるので注意が必要です。
試してみる
今回はテストにleafpad
を使用しました。あらかじめsudo apt install leafpad
しておいてください。
Ctrl+Space
を押して何か打ってみてfcitxのウィンドウが出てくれば成功です。
GnuPG2にpublic key decryption failed: Inappropriate ioctl for deviceと怒られた時の対処法
gpg: encrypted with 4096-bit RSA key, ID XXXXXXXXXXXX, created 2018-03-06 "Tsumugi Shiraishi <tsumugi@example.com>" gpg: public key decryption failed: Inappropriate ioctl for device gpg: decryption failed: No secret key
なんやいね、これは!?
WSL(Ubuntu 18.04)でGnuPG2を使おうと思ったらこんなエラーが出て鍵の復号化が出来ず困った。
ちなみにCUIメインの運用になるので、pinentryにはpinentry-cursesを使ってます。
$ cat ~/.gnupg/gpg-agent.conf pinentry-program /usr/bin/pinentry-curses
解決策
.bashrc
(zshなら.zshrc
)に以下の設定を追記する。
export GPG_TTY=$(tty)
どうやらpinentry-cursesが正しい出力先のttyを認識出来ていないとこのようなエラーが出る模様。(恐らく初期設定だと/dev/ttyとかに向いていると思われる)
ので、シェルが立ち上がる時に正しいttyを設定してあげると直る模様。
あとがき
というかちゃんと設定しろって公式のマニュアルにも書いてありましたね... ちゃんと読むべきでした。
Xamarin.MacでiTunesとSwinsianで再生している曲の情報を取得する
AppleScriptを使った曲情報の取得のサンプルは探せばゴロゴロ出てきますが、アルバムアートの画像も含めてXamarin.Macから取得する方法が見つからなかったのでメモ。
転がってるSwiftを使ったサンプルを参考にどのAPIを叩けば曲情報が取れるのか調べる
NSDistributedNotificationCenterを使うとiTunesとSwinsianでの曲再生時にイベントが取れるようです。飛んできた通知の中に曲情報が入っているみたいなのでこれを利用します。
とりあえずSwinsianは公式HPにNSDistributedNotificationCenterで取ってくるべきNSNotificationのNameが書いてあるので、参考にSwiftのコードを書いてみました。
import Cocoa class ViewController: NSViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. DistributedNotificationCenter.default().addObserver(self, selector: #selector(self.onTrackChange(notification:)), name: NSNotification.Name("com.swinsian.Swinsian-Track-Playing"), object: nil) } override var representedObject: Any? { didSet { // Update the view, if already loaded. } } @objc func onTrackChange(notification: NSNotification){ print("Event recived.\n") let userinfo = notification.userInfo print(userinfo ?? "") print(userinfo?["thumbnailPath"] as? String ?? "") print("Event recived end.\n") } }
曲情報が入ったAnyHashableが取れるみたいですね。ちなみにiTunesはNSNotification.Name
の名前をcom.apple.iTunes.playerInfo
に変更すればサムネイルのパス以外は取れます。
肝心のアルバムアートの取り方が分からない
Swinsianに関しては、pngのパスがAnyHashableに入ってるのでそこから取ってきてNSImageに突っ込めば表示できますね。簡単です。
しかし、iTunesに関してはScripting Bridgeを使って取得する必要があります。
Scripting Bridgeに関してはAppleのドキュメントを読めば大体わかると思いますが、要はWindowsでいうCOMみたいなものです。
ありがたいことにiTunes.h
の生成の仕方が書いてあるので、書いてあるコマンドを打ってiTunes.h
を生成しました。
sdef /Applications/iTunes.app | sdp -fh --basename iTunes
生成されたiTunes.h
を読めば大方どのAPIを叩けばお目当てのアルバムアートが取れるかわかるはずです。
というわけでC#で書けばこんな感じになるはずです。(本当はSwift版も書こうかと思いましたが何故か上手く動かなかったのでやりませんでした)
var itunes = SBApplication.FromBundleIdentifier("com.apple.iTunes"); var ctrack = itunes.ValueForKey(new NSString("currentTrack")); var front_artwork = ctrack.ValueForKey(new NSString("artworks")) as SBElementArray; if (front_artwork.Count > 0) { var aitem = front_artwork.Get()[0]; var raw_image = aitem.ValueForKey(new NSString("rawData")) as NSData; var image = new NSImage(raw_image); }
というわけでゴリ押しでコードを書く
gistb728c424cc574d02a29e841f19d2d534
あとがき
Xamarinとはいえ、こういったmacOS特有の機能を使う場合はまずはAppleのドキュメントを確認しなければなりませんし、大半のサンプルはSwift/ObjCで書かれているのでそれが読めないとかなりつらいです。
なうぷれTunesV2 Ver1.3をリリースしました
いつもなうぷれTunesをご利用ありがとうございます。
Ver1.2のリリース後、いくつかのバグ報告と機能追加要望を頂いたのでそれらを改善したVer1.3をリリースしました。
主な変更点
- [自動ツイート] 前回のツイートから一定時間経過していないとツイートしない機能を追加
- [UI] ツイートダイアログを表示後に自動的にツイートを入力するテキストボックスにフォーカスが行くように変更
- [iTunesプラグイン] アルバムアートワークが大きすぎるとクラッシュするバグを修正
- [iTunesプラグイン] デバッグモードを追加
「前回のツイートから一定時間経過していない場合ツイートしない」機能の追加
上記画像の設定項目を変更することで、「前回のツイートから一定時間経過していない場合ツイートしない」機能を有効化することができます。
例えばこの画像ですと、5分に設定されているので、最後のツイートから5分以上経過していない場合はツイートしないという動作になります。
ツイートダイアログを表示後に自動的にツイートを入力するテキストボックスにフォーカスが行くように変更
ダイアログ表示後そのままツイートしたい時はそのままCtrl+Enterでツイートできるようになりました。(要は余計な1クリックが減ったということです)
iTunesプラグイン使用時に、アルバムアートワークが大きすぎるとクラッシュするバグを修正
github.com
本アプリはiTunes連携用に同梱されたiTunesNPPlugin.exe
を使用していますが、埋め込まれているアルバムアートワークが大きい音楽ファイルを再生するとプラグインのプロセスがクラッシュしてしまいそれ以降に再生した曲が本アプリを再起動するまで反映されなくなるバグを修正しました。
iTunesプラグインにデバッグモードを追加
うまくiTunesプラグインが動作しない環境向けに、トラブルシュート用にデバッグモードを追加しました。
--debug
オプションを付けた状態でiTunesNPPlugin.exe
を起動することで詳細なログを取得することが出来ます。(なうぷれTunesがインストールされたディレクトリ内でPowerShellを開いて、.\iTunesNPPlugin.exe --debug
と実行してください)
うまくiTunesとの連携が上手く行かない場合は、大抵の場合はiTunesの再インストールをしてPCを再起動すると直りますが、直らない時はこのデバッグモードで表示される画面のスクリーンショットをgithubのissueに投げてもらえば対応します。
ダウンロード
以前のバージョンがインストールされたディレクトリ内に新しいバージョンのファイルを展開(上書き)していただくことでアップデートできます。
Sourcetree for WindowsでコミットにGPGで署名する
上記画像のようにgithubでは署名してあるコミットにはVerifiedの印が付く。
署名したい...といっても、Sourcetree for Windowsは署名に対応してない(Mac版は対応してる模様)ので強引に対応させた時のメモ。
鍵は既に生成済みという前提で話を進めます。
Gpg4winを導入する
既に導入済みなら飛ばしてください。
KleopatraというGUIツールが付いてくるのでありがたく使わせてもらって、ここでLinux環境で使っていた鍵をインポートした。
一応パスが通ってるかの確認も込めて、Powershellからgpg --list-secret-keys
を実行してみる。
PS C:\Users\izumin> gpg --list-secret-keys C:/Users/izumin/AppData/Roaming/gnupg/pubring.kbx ------------------------------------------------- sec rsa4096 2018-03-06 [SC] 28CCF1B13BB7557AA13039949B215618569CB439 uid [ 究極 ] Izumi Ohishi <ohishiizumi@example.com> ssb rsa4096 2018-03-06 [E]
大丈夫そうですね。
Git for Windowsの設定を弄る
Powershellから以下のコマンドを実行。
> git config --global user.signingkey 28CCF1B13BB7557AA13039949B215618569CB439 > git config --global commit.gpgsign true > git config --global gpg.program $((gcm gpg).Definition)
※Powershellでは(gcm gpg).Definition
と実行してあげることで*nix環境のwhichコマンドと同じ事ができる模様。
※Sourcetree側で対応してないならデフォルトで署名つけるようにすれば良いのでは?という強引な解決策なのでSourcetreeのGUIから今回だけは署名したくないみたいなことは出来ないです。
※Git for Windows付属のGnuPGはちょっとおバカなので(あるはずもない/dev/ttyを参照したりとか)使わないようにします。
※Sourcetree内蔵のgitで同じことが出来るかどうかは未確認です。
ちなみにこの設定により、以後デフォルトでコミットにここで設定した鍵で署名が付くようになるので注意。
あとは普通に今まで通りのようにcommitするだけ
コミット処理中に鍵のパスワードを求めるダイアログが出てくるので、入力してOKを押せば大丈夫です。
あとがき
いい加減Windows版も対応してくれ....(悲願)
Setup GPG to sign commits within SourceTree - Atlassian Documentation
一応公式に設定方法のドキュメントはあるが、これはmacOS版だけなのでWindows版では同じことは出来ない模様。(今のところは)
なうぷれTunesV2 Ver1.2をリリースしました
いつもなうぷれTunesをご利用ありがとうございます。
V2のリリース後、いくつかのバグ報告と機能追加の要望があったのでそれらを追加したVer1.2をリリースしました。
変更点
タスクトレイを右クリックすると表示されるメニューにいくつかの機能を追加
メニュー内から今すぐツイートするを選択することで、有効化されているすべてのアカウントで投稿文を編集することなくツイートできるようになりました。
また、メニューから直接自動ツイートの有効・無効を切り替えられるようになりました。
対応タグを追加&Apple Music楽曲に対応
ご要望があったグループタグ($Group)に対応しました。
また、Apple Musicやホームシェアリングの楽曲から正しく曲データが取得できるようになりました。(アルバムアーティストを取得できないなど一部制約があります)
Windows10のAcrylic materialテーマを追加
Windows10に標準搭載されている電卓アプリに似た背面が少し透明になっているデザインに対応しました。
Windows10以降の環境で、設定からacrylic_darkテーマを選択することで使用できます。
ツイート画面からCtrl+Enterキーでツイート可能に
ツイート画面内のテキストボックスが選択された状態でCtrl+Enterキーを押すことでツイート出来るようになりました。
警告メッセージなどのUI内に誤字があったのを修正
いくつかUI内のテキストに誤字を見つけたので修正しました。
ダウンロード
以前のバージョンがインストールされたディレクトリ内に新しいバージョンのファイルを展開(上書き)していただくことでアップデートできます。
【Mastodon対応】なうぷれTunesV2をリリースしました
お久しぶりです。
前作であるなうぷれTunesを一から作り直し、MusicBee対応やMastodon対応などの新機能を追加したなうぷれTunesV2をリリースしました。
主な機能
- iTunes・MusicBee・foobar2000で再生している曲をTwitter、Mastodonに投稿
- アルバムアートを添付して投稿
- 自動投稿機能
- 遅延ツイート機能(一定時間(変更可能)投稿を遅らせ、その時間内に再生している曲が変わった場合は投稿をキャンセル)
- 前回再生した曲とアルバムが同じならアルバムアートを添付して投稿しない機能
- 前回再生した曲とアルバムが同じなら自動投稿をしない機能
- 投稿する文が投稿可能な最大文字数を超えた場合は自動的に削る機能
前作からの変更点
- iTunesの仕様変更に対応(前作であるなうぷれTunesが正常に動作しなくなっていた原因に対処)
- iTunesに依存しない設計にし、容易に対応アプリを増やせる体制をつくりました
- Mastodonに対応しました
プラグインの使用方法について
V2からは音楽再生ソフトへの連携をプラグイン経由で行うようにしました。アプリケーションを起動しただけでは使用できませんのでご注意ください。
iTunes
なうぷれTunesV2起動後に表示される設定画面にある基本設定からiTunesのプラグインを有効化し、なうぷれTunesV2を再起動することで使用可能になります。
foobar2000・MusicBee
なうぷれTunesV2の配布ファイルに同梱されている、foo_nowplayingv2.dll
がfoobar2000用のプラグインファイル、mb_MusicBeeNPPlugin.dll
がMusicBee用のプラグインファイルになります。
これらを音楽再生ソフト側のプラグインとしてインストールして頂くことで使用可能になります。
なうぷれTunesからなうぷれTunesV2への移行方法
なうぷれTunesとなうぷれTunesV2の間には一切互換性がありません。
なうぷれTunesのディレクトリになうぷれTunesV2を上書きインストールされても正常に動作しませんのでご注意ください。
動作要件
- .NET Framework 4.7がインストールされた環境
- Windows7 SP1 / Windows8.1 / Windows10を実行している環境
ダウンロード
上記リンクからダウンロードしてください。
機能追加のご要望・バグ報告など
githubのissueにお願いします。
投げ銭大歓迎です
Cisco C841M-4X-JSECを買ってみた話とハマった点
Cisco StartシリーズのC841M-4X-JSECが1万円ちょっとで衝動買いしてしまったので自宅のネットワーク機器のリプレースをしました。
Ciscoのネットワーク機器を触るのは初めてで、コンフィグ等いろいろ慣れない点があり思いっきりハマってしまい1日無駄にした点もあったのでメモとして残しておきます。
設定項目
- ギガイーサ5のポートを使用してPPPoEでプロバイダに接続する
プロバイダの都合でipv6 IPoEが使用出来ないので、ipv6 PPPoEでipv6でインターネットに出れるようにします。 - (ひかり電話ルーターとONU部分を分離させているので) ひかり電話が使用できるようNGNから来るipv4のパケットだけひかり電話ルーター側にブリッジする
フレッツ光ネクスト (ひかり電話あり) 回線において、ひかり電話と自前の設備を IPoE IPv6 的な意味で仲良くさせる - diary.sorah
素直にPPPoEブリッジ等設定していればこんな事をする必要はないと思います。(上記ページ参照)ちなみにひかり電話ルーターはギガイーサ4のポートに繋ぎました。 - Zone Based Firewallを使用してファイアウォールを構築する
- WAN側のIPに着信したTCP443ポート宛の通信はすべて192.168.0.110のサーバに転送するようにNATを調整&FWに穴を開ける
- 外からのPING要求を無視するようにする(応答しないようにする)
- 管理画面から統計情報が見れるみたいなので見れるようにする。
要らないなら無効化してもいいでしょう。flow monitor [monitorname]あたりの設定です。 - ギガイーサ0のポートはタグVLAN対応のスイッチに接続する
ハマったポイント
ipv6 cefが有効になっているとipv6の外向きの通信がなぜか50%ぐらいパケットロスする
supportforums.cisco.com
どうやらIOS側のipv6 CEFのバグ疑惑があるので、no ipv6 cef
で回避。ちなみにipv4のCEFに関しては問題ありませんでした。
ipv6環境にてWindows Updateが走らなくなる
Windows Updateのログを確認するとアップデートを配信しているCDNに繋げなくてエラーになっている模様。
(正確には接続は確立できるが、それ以降の通信がまったくできない状態になる)
確認するとPMTUD Black Holeにより通信できなくなっていたようなので、ルーター側でTCP MSS Clampingをすることにより解決しました。
本来ならICMPv6パケット(Packet too bigメッセージ)が送出され、MSS値が調整されるはずですが、このパケットがフィルタされてしまい届かないことによりこのような現象が起こることがあるようです。
TCPの場合、3way handshakeの段階で自分が受け取れる最大のセグメントサイズを通知することが出来るので、Dialerインタフェース側に通知する設定を加えることで解決しました。
interface Dialer2 ipv6 mtu 1454 ipv6 tcp adjust-mss 1394
ルーターがWAN側からのping要求に対して応答しないようにZone Based Firewallを調整したはずなのに応答してしまう
下記のコンフィグのように、外→内のルールでping要求をdropするようにしていますが、何故かルーターがpingの要求に対して応答してしまうようになっていました。
ip access-list extended v4acldeny permit icmp any any echo ! ipv6 access-list v6acldeny permit icmp any any echo-request ! class-map type inspect match-any pub-priv-deny-cmap match access-group name v4acldeny match access-group name v6acldeny ! policy-map type inspect pub-priv-policy class type inspect pub-priv-deny-cmap drop class type inspect pub-priv-cmap inspect class class-default drop ! zone-pair security pub-priv source public destination private service-policy type inspect pub-priv-policy !
ルーター本体はself
に属するので、以下のコンフィグを追加することで解決。
zone-pair security pub-pub source public destination self service-policy type inspect pub-priv-policy
native vlanに指定したVLANがスイッチ側でタグを付けると使えない(疎通しない)
(当たり前なのかもしれませんが) untaggedに指定したVLANはタグ付きで使用することはできないようです。
(いくらスイッチ側でタグを付けようがルーター側で破棄されるようです)
デフォルト設定ではVLAN1がuntaggedに設定されるので、VLAN1を使わないようにして対処しました。
コンフィグ
hostname akane ! ! logging buffered 51200 warnings ! ! ip dhcp excluded-address 192.168.0.1 ip dhcp excluded-address 192.168.3.1 ! ip dhcp pool vlan2-dhcp network 192.168.0.0 255.255.255.0 default-router 192.168.0.1 dns-server 8.8.8.8 8.8.4.4 ! ip dhcp pool vlan3-dhcp network 192.168.3.0 255.255.255.0 default-router 192.168.3.1 dns-server 8.8.8.8 8.8.4.4 ! ! ! no ip domain lookup ip domain name akane.local ip cef ipv6 source-route ipv6 flowset ipv6 unicast-routing no ipv6 cef ipv6 dhcp pool vlan2-dhcpv6 dns-server 2001:4860:4860::8888 dns-server 2001:4860:4860::8844 ! ! ! flow record nbar-appmon match ipv4 source address match ipv4 destination address match application name match interface output match ipv6 source address match ipv6 destination address match interface input collect counter bytes collect counter packets collect timestamp absolute first collect timestamp absolute last collect application http host ! ! flow monitor application-mon cache timeout active 60 record nbar-appmon ! ! ! ! vtp mode transparent username matsuri privilege 15 secret 5 hogepassword ! redundancy ! ! ! ! ! vlan 2-3 no cdp run ! ! class-map type inspect match-any pub-priv-deny-cmap match access-group name v4acldeny match access-group name v6acldeny class-map type inspect match-any priv-pub-cmap match protocol tcp match protocol udp match protocol ident match protocol icmp class-map type inspect match-any pub-priv-cmap match access-group name v4alist match access-group name v6alist ! policy-map type inspect priv-pub-policy class type inspect priv-pub-cmap inspect class class-default drop policy-map type inspect pub-priv-policy class type inspect pub-priv-deny-cmap drop class type inspect pub-priv-cmap inspect class class-default drop ! zone security public zone security private zone-pair security priv-pub source private destination public service-policy type inspect priv-pub-policy zone-pair security pub-priv source public destination private service-policy type inspect pub-priv-policy zone-pair security pub-pub source public destination self service-policy type inspect pub-priv-policy ! ! ! ! ! bridge crb ! ! ! ! interface GigabitEthernet0/0 switchport mode trunk no ip address ! interface GigabitEthernet0/1 switchport trunk native vlan 2 switchport mode trunk no ip address ! interface GigabitEthernet0/2 switchport trunk native vlan 2 switchport mode trunk no ip address ! interface GigabitEthernet0/3 switchport trunk native vlan 2 switchport mode trunk no ip address ! interface GigabitEthernet0/4 no ip address duplex auto speed auto bridge-group 1 bridge-group 1 input-type-list 200 ! interface GigabitEthernet0/5 no ip address duplex auto speed auto ipv6 dhcp client pd ngnprefix pppoe enable group global pppoe-client dial-pool-number 2 pppoe-client dial-pool-number 1 bridge-group 1 ! interface Vlan1 no ip address ! interface Vlan2 ip address 192.168.0.1 255.255.255.0 ip nat inside ip virtual-reassembly in zone-member security private no autostate ipv6 address ocnprefix ::1:1/64 ipv6 enable ipv6 nd other-config-flag ipv6 nd ra interval 10 ipv6 dhcp server vlan2-dhcpv6 ipv6 virtual-reassembly in ! interface Vlan3 ip address 192.168.3.1 255.255.255.0 ip nat inside ip virtual-reassembly in zone-member security private no autostate ! interface Dialer1 mtu 1454 ip address negotiated ip flow monitor application-mon input ip flow monitor application-mon output ip nat outside ip virtual-reassembly in zone-member security public encapsulation ppp ip tcp adjust-mss 1414 dialer pool 1 dialer idle-timeout 0 dialer-group 1 ppp authentication chap callin ppp chap hostname hogehoge@hoge.ne.jp ppp chap password 0 hogehogepassword ppp ipcp dns request accept no cdp enable ! interface Dialer2 mtu 1454 no ip address ip flow monitor application-mon input ip flow monitor application-mon output zone-member security public encapsulation ppp ip tcp adjust-mss 1414 dialer pool 2 dialer idle-timeout 0 dialer-group 2 ipv6 address autoconfig ipv6 enable ipv6 mtu 1454 no ipv6 nd ra suppress ipv6 tcp adjust-mss 1394 ipv6 dhcp client pd hint ::/0 ipv6 dhcp client pd ocnprefix ipv6 virtual-reassembly in ppp authentication chap callin ppp chap hostname hogehoge@ipv6.hoge.ne.jp ppp chap password 0 hogehogepassword ppp ipcp dns request accept no cdp enable ! ip forward-protocol nd ip http server ip http upload enable path flash: ip http upload overwrite ip http access-class 1 ip http authentication local ip http secure-server ip http timeout-policy idle 60 life 86400 requests 10000 ! ! ip nat inside source list 1 interface Dialer1 overload ip nat inside source static tcp 192.168.0.110 443 interface Dialer1 443 ip nat inside source list 2 interface Dialer1 overload ip route 0.0.0.0 0.0.0.0 Dialer1 permanent ip ssh version 2 ! ip access-list extended v4acldeny permit icmp any any echo ip access-list extended v4alist permit tcp any host 192.168.0.110 eq 443 ! dialer-list 1 protocol ip permit dialer-list 2 protocol ipv6 permit ipv6 route ::/0 Dialer2 ! ! access-list 1 permit 192.168.0.0 0.0.0.255 access-list 2 permit 192.168.3.0 0.0.0.255 access-list 23 permit 10.10.10.0 0.0.0.127 access-list 200 deny 0x86DD 0x0000 access-list 200 permit 0x0000 0xFFFF ! ipv6 access-list v6acldeny permit icmp any any echo-request ! ipv6 access-list v6alist permit icmp any any bridge 1 protocol ieee ! vstack ! line con 0 login local no modem enable length 0 line vty 0 4 access-class 1 in privilege level 15 login local length 0 transport input telnet ssh line vty 5 15 access-class 1 in privilege level 15 login local length 0 transport input telnet ssh ! scheduler allocate 20000 1000 ! end
Qt Base(5.9)を静的リンク用にビルドしてみた(MSVC向け)
Qt公式で動的リンク用のビルド済みのライブラリが配布されているが、静的リンク用のライブラリは配布されていないので自分用にビルドしてみたのでメモ。
続きを読む