もやし日誌

日記のようなもの

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のバックアップを適当な場所に作っておくことをおすすめします。

github.com

上のリンク先に導入手順を英語で書きましたが、やることは書いてあるコマンドを打ち込むだけなので難しくないと思います。

また、今まで通りの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の実装は以下のパッチを参考にしました。

github.com

ただ、このパッチはdebianのpppdにそのまま適用できなかったのでソースを少し読んでちゃんと合うようにしました。(具体的に言うとスクリプトの実行完了を待たないとインターフェイスがリネームされたかどうかの確認処理の意味がなくなってしまうのでそこだけ直しました)

github.com

ロスコンパイルについて

EdgeRouter ER-Xは一般的なx86x86_64アーキテクチャではなくMIPS(リトルエンディアンモード。mipselとも言う)で動いているので、クロスコンパイルしなければなりません。

また、EdgeRouter ER-Xの内蔵フラッシュメモリは200MBちょっとしか無い上に空き容量がおおよそ70MBほどしか無い為、gccなどのツールのEdgeRouterへの導入は絶望的です。

今回は、DebianMIPS移植版をローカルのマシン上でQEMUを使って動かしました。と言ってもカーネルから全てエミュレートすると激遅になるので、ユーザランドだけエミュレートしています。

github.com

今回はこれを使いました。準備としてbinfmtqemu-mipsel-staticdebootstrapが必要になるので、入れておきましょう。

mkdir debian_stretch
./mkdebianrfs.sh mipsel stretch ./debian_stretch

で、勝手にrootfsが出来上がるのであとはaptからgccとmakeを入れてあげればビルド環境の出来上がりです。(スクリプトがやってることは中身を見てみれば分かりますが、単純にchrootしてるだけです)

Ubuntu18.04+WSLでfcitx-mozcを使って日本語入力出来るようにする

f:id:kazuki09:20180528221143p:plain

※本稿では日本語入力環境(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を追加する。

f:id:kazuki09:20180528213142p:plain

Global ConfigCtrl+Spaceで切り替えになっていればとりあえずは大丈夫です。

f:id:kazuki09:20180528213347p:plain

ちなみにfcitxが立ち上がってない状態(fcitx-autostartしてない状態)で設定画面を開くとInput Methodの欄が空っぽになるので注意が必要です。

試してみる

今回はテストにleafpadを使用しました。あらかじめsudo apt install leafpadしておいてください。

Ctrl+Spaceを押して何か打ってみてfcitxのウィンドウが出てくれば成功です。

f:id:kazuki09:20180528215458p:plain

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を設定してあげると直る模様。

あとがき

というかちゃんと設定しろって公式のマニュアルにも書いてありましたね... ちゃんと読むべきでした。

gnupg.org

Xamarin.MacでiTunesとSwinsianで再生している曲の情報を取得する

f:id:kazuki09:20180520153118p:plain 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")
    }
}

f:id:kazuki09:20180520154732p:plain

曲情報が入ったAnyHashableが取れるみたいですね。ちなみにiTunesNSNotification.Nameの名前をcom.apple.iTunes.playerInfoに変更すればサムネイルのパス以外は取れます。

肝心のアルバムアートの取り方が分からない

Swinsianに関しては、pngのパスがAnyHashableに入ってるのでそこから取ってきてNSImageに突っ込めば表示できますね。簡単です。

しかし、iTunesに関してはScripting Bridgeを使って取得する必要があります。

Scripting Bridgeに関してはAppleのドキュメントを読めば大体わかると思いますが、要はWindowsでいうCOMみたいなものです。

developer.apple.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プラグイン] デバッグモードを追加

「前回のツイートから一定時間経過していない場合ツイートしない」機能の追加

f:id:kazuki09:20180427002519p:plain 上記画像の設定項目を変更することで、「前回のツイートから一定時間経過していない場合ツイートしない」機能を有効化することができます。

例えばこの画像ですと、5分に設定されているので、最後のツイートから5分以上経過していない場合はツイートしないという動作になります。

ツイートダイアログを表示後に自動的にツイートを入力するテキストボックスにフォーカスが行くように変更

f:id:kazuki09:20180427002946p:plain ダイアログ表示後そのままツイートしたい時はそのままCtrl+Enterでツイートできるようになりました。(要は余計な1クリックが減ったということです)

iTunesプラグイン使用時に、アルバムアートワークが大きすぎるとクラッシュするバグを修正

github.com 本アプリはiTunes連携用に同梱されたiTunesNPPlugin.exeを使用していますが、埋め込まれているアルバムアートワークが大きい音楽ファイルを再生するとプラグインのプロセスがクラッシュしてしまいそれ以降に再生した曲が本アプリを再起動するまで反映されなくなるバグを修正しました。

iTunesプラグインデバッグモードを追加

うまくiTunesプラグインが動作しない環境向けに、トラブルシュート用にデバッグモードを追加しました。

--debugオプションを付けた状態でiTunesNPPlugin.exeを起動することで詳細なログを取得することが出来ます。(なうぷれTunesがインストールされたディレクトリ内でPowerShellを開いて、.\iTunesNPPlugin.exe --debugと実行してください)

うまくiTunesとの連携が上手く行かない場合は、大抵の場合はiTunesの再インストールをしてPCを再起動すると直りますが、直らない時はこのデバッグモードで表示される画面のスクリーンショットgithubのissueに投げてもらえば対応します。

ダウンロード

以前のバージョンがインストールされたディレクトリ内に新しいバージョンのファイルを展開(上書き)していただくことでアップデートできます。

github.com

Sourcetree for WindowsでコミットにGPGで署名する

f:id:kazuki09:20180307014549p:plain

上記画像のようにgithubでは署名してあるコミットにはVerifiedの印が付く。

署名したい...といっても、Sourcetree for Windowsは署名に対応してない(Mac版は対応してる模様)ので強引に対応させた時のメモ。

鍵は既に生成済みという前提で話を進めます。

Gpg4winを導入する

既に導入済みなら飛ばしてください。

Gpg4win - Download Gpg4win

f:id:kazuki09:20180307015409j:plain

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)

qiita.com

Powershellでは(gcm gpg).Definitionと実行してあげることで*nix環境のwhichコマンドと同じ事ができる模様。

※Sourcetree側で対応してないならデフォルトで署名つけるようにすれば良いのでは?という強引な解決策なのでSourcetreeのGUIから今回だけは署名したくないみたいなことは出来ないです。

※Git for Windows付属のGnuPGはちょっとおバカなので(あるはずもない/dev/ttyを参照したりとか)使わないようにします。

※Sourcetree内蔵のgitで同じことが出来るかどうかは未確認です。

ちなみにこの設定により、以後デフォルトでコミットにここで設定した鍵で署名が付くようになるので注意。

あとは普通に今まで通りのようにcommitするだけ

f:id:kazuki09:20180307031759j:plain

コミット処理中に鍵のパスワードを求めるダイアログが出てくるので、入力してOKを押せば大丈夫です。

あとがき

いい加減Windows版も対応してくれ....(悲願)

Setup GPG to sign commits within SourceTree - Atlassian Documentation

一応公式に設定方法のドキュメントはあるが、これはmacOS版だけなのでWindows版では同じことは出来ない模様。(今のところは)

Solved: Does Sourcetree support git commit --gpg-sign?

なうぷれTunesV2 Ver1.2をリリースしました

いつもなうぷれTunesをご利用ありがとうございます。

V2のリリース後、いくつかのバグ報告と機能追加の要望があったのでそれらを追加したVer1.2をリリースしました。

変更点

タスクトレイを右クリックすると表示されるメニューにいくつかの機能を追加

f:id:kazuki09:20180226024258p:plain

メニュー内から今すぐツイートするを選択することで、有効化されているすべてのアカウントで投稿文を編集することなくツイートできるようになりました。

また、メニューから直接自動ツイートの有効・無効を切り替えられるようになりました。

対応タグを追加&Apple Music楽曲に対応

ご要望があったグループタグ($Group)に対応しました。

また、Apple Musicやホームシェアリングの楽曲から正しく曲データが取得できるようになりました。(アルバムアーティストを取得できないなど一部制約があります)

Windows10のAcrylic materialテーマを追加

f:id:kazuki09:20180226025307p:plain

f:id:kazuki09:20180226025343p:plain

Windows10に標準搭載されている電卓アプリに似た背面が少し透明になっているデザインに対応しました。

Windows10以降の環境で、設定からacrylic_darkテーマを選択することで使用できます。

ツイート画面からCtrl+Enterキーでツイート可能に

ツイート画面内のテキストボックスが選択された状態でCtrl+Enterキーを押すことでツイート出来るようになりました。

警告メッセージなどのUI内に誤字があったのを修正

いくつかUI内のテキストに誤字を見つけたので修正しました。

ダウンロード

以前のバージョンがインストールされたディレクトリ内に新しいバージョンのファイルを展開(上書き)していただくことでアップデートできます。

github.com

【Mastodon対応】なうぷれTunesV2をリリースしました

f:id:kazuki09:20180207084051p:plain

お久しぶりです。

前作であるなうぷれTunesを一から作り直し、MusicBee対応やMastodon対応などの新機能を追加したなうぷれTunesV2をリリースしました。

主な機能

  • iTunes・MusicBee・foobar2000で再生している曲をTwitterMastodonに投稿
  • アルバムアートを添付して投稿
  • 自動投稿機能
    • 遅延ツイート機能(一定時間(変更可能)投稿を遅らせ、その時間内に再生している曲が変わった場合は投稿をキャンセル)
    • 前回再生した曲とアルバムが同じならアルバムアートを添付して投稿しない機能
    • 前回再生した曲とアルバムが同じなら自動投稿をしない機能
    • 投稿する文が投稿可能な最大文字数を超えた場合は自動的に削る機能

前作からの変更点

  • iTunesの仕様変更に対応(前作であるなうぷれTunesが正常に動作しなくなっていた原因に対処)
  • iTunesに依存しない設計にし、容易に対応アプリを増やせる体制をつくりました
  • Mastodonに対応しました

プラグインの使用方法について

V2からは音楽再生ソフトへの連携をプラグイン経由で行うようにしました。アプリケーションを起動しただけでは使用できませんのでご注意ください。

iTunes

f:id:kazuki09:20180208095419j:plain なうぷれTunesV2起動後に表示される設定画面にある基本設定からiTunesプラグインを有効化し、なうぷれTunesV2を再起動することで使用可能になります。

foobar2000・MusicBee

なうぷれTunesV2の配布ファイルに同梱されている、foo_nowplayingv2.dllfoobar2000用のプラグインファイル、mb_MusicBeeNPPlugin.dllがMusicBee用のプラグインファイルになります。

これらを音楽再生ソフト側のプラグインとしてインストールして頂くことで使用可能になります。

f:id:kazuki09:20180208100253p:plain

f:id:kazuki09:20180208100303p:plain

なうぷれTunesからなうぷれTunesV2への移行方法

なうぷれTunesとなうぷれTunesV2の間には一切互換性がありません。

なうぷれTunesのディレクトリになうぷれTunesV2を上書きインストールされても正常に動作しませんのでご注意ください。

動作要件

ダウンロード

github.com

上記リンクからダウンロードしてください。

機能追加のご要望・バグ報告など

githubのissueにお願いします。

投げ銭大歓迎です

https://monappy.jp/u/myskngmonappy.jp

bithomp.com

Cisco C841M-4X-JSECを買ってみた話とハマった点

Cisco StartシリーズのC841M-4X-JSECが1万円ちょっとで衝動買いしてしまったので自宅のネットワーク機器のリプレースをしました。
Ciscoのネットワーク機器を触るのは初めてで、コンフィグ等いろいろ慣れない点があり思いっきりハマってしまい1日無駄にした点もあったのでメモとして残しておきます。

設定項目

ハマったポイント

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公式で動的リンク用のビルド済みのライブラリが配布されているが、静的リンク用のライブラリは配布されていないので自分用にビルドしてみたのでメモ。

続きを読む