[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
ラベル OpenWrt の投稿を表示しています。 すべての投稿を表示
ラベル OpenWrt の投稿を表示しています。 すべての投稿を表示

2024年10月19日土曜日

Dnsmasqでデバイス毎にDNSサーバを設定してみた。

 DD-WRTを入れたルータでDNS広告ブロックスクリプトを動かしてると、スマートデバイスとかで不具合が出ることがあるのでDnsmasqで特定のデバイスだけ除外できるように設定してみた。TVerみたいに広告消したい場合はコツコツホワイトリストに入れていかないと行けないけど、スマートリモコンとかだと特にその必要もなさそうだし。

どうやって特定のデバイスだけDNS広告ブロックを無効にするか考えてみたんだけど、DNS広告ブロックはルータがDNSサーバとなっているので、デバイス側が直接外部のDNS(プロバイダから供給されてるのでも良いし、1.1.1.1とかでもよい)にアクセスしてしまえばよい。
まぁこの場合手動でIPアドレスを設定してDNSまで指定してやっても問題ないんだけどそもそもスマートデバイスは画面がなかったり、リモコンで設定するのも面倒。

ということでDnsmasqで特定のMACアドレスのデバイスにだけ個別に設定を送ってやろうと思う。

DnsmasqでDNSの設定をする場合はdhcp-optionを使うんだけども、tag機能を使うことによってtagを設定されている特定のデバイスだけにoptionを適応することができるっぽい。optionの6がDNSサーバの設定で、DHCPでIPを割り振る際にDNSサーバまで指定することができる。

dhcp-host=30:03:c8:01:02:03,set:noblock
dhcp-option=tag:noblock,6,1.1.1.2,8.8.8.8

まずは1行目で、MACアドレスに対してタグを設定する。タグの名前は何でも良いけど今回は「noblock」にした。複数のデバイスを指定したい場合はこの行を増やしてMACアドレスだけ変えれば良い。
そんでもって2行目で特定のタグにだけdhcp-optionを適応する。6はDNSサーバの設定のOption番号で、その後ろにカンマ区切りでDNSサーバーのIPアドレスを指定する(複数指定可能)今回はCloudflareのマルウェアブロックの1.1.1.2と念の為セカンダリにGoogle DNSの8.8.8.8を指定した。

DD-WRTの場合はServiceタブからDnsmasqの設定ができる。

とりあえずPCの有線LANと無線LANでテストしてみると、無線LANのMACアドレスにだけ別なDNSが設定された。これでMACアドレスが分かればDD-WRTの設定画面から自由にDNS広告ブロッカーを無効にしたりできるので便利。

応用すればFireTVStickにSmartDNS ProxyとかのDNS設定するときにも使えそう。

2023年10月30日月曜日

Tverが見れなくなったのはDNSブロックのせいだった。

 FireTV StickでTverが見られなくなったと言われたので、調査してみるとどうやらルーターのDNS広告ブロッカーが原因かもしれないということで調べてみた。AdGuard DNSとか使ってFireTV Stickで広告ブロックしている人たちも見れなくなったらしいし。

とりあえずWeb版でどのDNSがブロックされているのかを確認してみると何件かルーターのDNSブロッカーでブロックされているようだったので一個ずつホワイトリストに入れて試してみた。

結果的にこの前HALOの実績が解除できなくなったパターンと同様に広告ブロックのシェルスクリプト

sed '/imasdk.googleapis.com/d' /tmp/hosts0 -i

を追加することでみられるようになった。他のDNSブロッカーで困ってる人たちもいるようだけど、おそらく"imasdk.googleapis.com"をホワイトリストに追加すれば行けるんじゃないだろうか。しかしAdGuard DNSの設定だけで広告ブロックしていた場合はホワイトリストとか使えないのでちょっと難しいかな…

とりあえずこの設定を追加するだけで今まで通りTverで広告ブロックされつつ動画が再生できるようになった。

2023年4月2日日曜日

DD-WRTでクライアントにNTP鯖を強制的にリダイレクトしてみた。

 WiFiにつながるデバイスが増える中でRTCを持たずにNTPサーバから時計を取ってくるデバイスが増えてると思うんだけども、NTPサーバを強制的に変更できないか試してみた。

微妙に時間がズレてるのとか気になるし。中華デバイスとかだと鯖も中華とかなのかな。

方法としてはNTP鯖が特定できればルータのhostsとかdnsmasqで飛ばせたりするんだろうけども、今回はiptablesでNTPポートの123を特定のNTP鯖に飛ばすようにしてみた。

iptables -t nat -A PREROUTING -p udp -m udp --dport 123 -j DNAT --to-destination 162.159.200.1:123
iptables -t nat -A POSTROUTING -p udp --sport 123 -j SNAT --to-source 162.159.200.1:123

DD-WRT化したルータなのでiptablesがそのまま使えるのでWebアクセスでSSHを有効にしてSSHからこの2行のコマンドを実行した。NTP鯖はCloudflare Time Servicesを使わせてもらった。これでこのルータに繋がっているデバイスからNTPのポート123にアクセスする場合は全部指定したIPアドレス(162.159.200.1)の鯖につながるようになる。

ためしにコントロールパネルの日付と時刻から適当な鯖にインターネット時刻設定するとうまく同期できるようになってる。でも適当なアドレスではだめっぽい。DNSでIPが返ってくるような存在するアドレスであればうまく設定される。

ちなみにこの設定、ルーターを再起動するとリセットされてしまうので、常に有効にしたい場合はAdministration→CommandsでStartupに入れておくといいかも。削除したい場合は

iptables -t nat -L --line-numbers

でリストを表示してから

iptables -t nat -D [リストの項目] [番号]

で削除できる。(デフォルト状態からの追加だと、iptables -t nat -D PREROUTING 3とiptables -t nat -D POSTROUTING 6だった)

ローカル環境でRTCを持たないデバイスにRTCを持つデバイスからNTPしたい場合にも使えるかも。

2023年3月18日土曜日

DD-WRTでDNS広告ブロックを設定してみる。

 この前ルーターが壊れて更新したので、前のルータでやっていたことを思い出しながら元に戻してくことに。壊れたルータにはアクセスできないし…

その一つがDNSブロッカー。広告をブロックするためにDNSをブロックしてしまうやつ。仕組み的にはhostsファイルにブロックしたいDNSを127.0.0.1に飛ばすように設定するやつ。

元々シェルスクリプトで定期実行していたので記憶を頼りに探してみたところ、DD-WRTのフォーラムにそれっぽいスクリプトが。今回はこれをベースにカスタマイズして見ることに。

WZR-1750DHP2はフラッシュ領域がたくさんあるので、JFFS2 SupportとSSHを有効にしてWinSCPなどを使ってSCPでアクセス。
/jffs/にadblock.shというファイルを作って、パーミッションを755に設定。

そしたらadblock.shの中身を
#!/bin/sh
logger WAN up script executing
if test -s /tmp/hosts0
then
        rm /tmp/hosts0
fi

logger Downloading http://www.mvps.org/winhelp2002/hosts.txt
(curl -k -s https://winhelp2002.mvps.org/hosts.txt |
    sed '2,$s/0.0.0.0/127.0.0.1/g; s/[[:space:]]*#.*$//g;' |
    grep -v localhost ;
curl -k -s https://280blocker.net/files/280blocker_domain_$(date +"%Y%m").txt |
    sed 's/^/127.0.0.1 /g; s/[[:space:]]*#.*$//g;' |
    grep -v localhost ;
#curl -k -s https://raw.githubusercontent.com/r-a-y/mobile-hosts/master/AdguardDNS.txt |
#    sed 's/0.0.0.0/127.0.0.1/g; s/[[:space:]]*#.*$//g;' |
#    grep -v localhost ;
#curl -k -s https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt | 
#          grep "^||" | grep -v "*" | sed 's/||/127.0.0.1 /g'| tr -d '^';
curl -k -s https://raw.githubusercontent.com/r-a-y/mobile-hosts/master/AdguardMobileAds.txt |
    sed 's/0.0.0.0/127.0.0.1/g; s/[[:space:]]*#.*$//g;' |
    grep -v localhost ;
#curl -k -s https://raw.githubusercontent.com/multiverse2011/adawaylist-jp/master/hosts |
#    sed 's/127.0.0.1/127.0.0.1/g; s/[[:space:]]*#.*$//g;' |
#    grep -v localhost ;
curl -k -s https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt |
    sed 's/^/127.0.0.1 /g; s/[[:space:]]*#.*$//g;' |
    grep -v localhost ;
curl -k -s https://warui.intaa.net/adhosts/hosts.txt |
    sed 's/0.0.0.0/127.0.0.1/g; s/[[:space:]]*#.*$//g;' |
    grep -v localhost ;
### Extra blocking dns ###
echo 127.0.0.1 adm.shinobi.jp ) | tr ' ' '\t' |
tr -s '\t' | tr -d '\015' | sed '/^$/d' | sort -u >/tmp/hosts0 ### Extra blocking dns end ### ### White List ### sed '/vortex.data.microsoft.com/d' /tmp/hosts0 -i ### White List end ### grep addn-hosts /tmp/dnsmasq.conf || echo "addn-hosts=/tmp/hosts0" >>/tmp/dnsmasq.conf logger Restarting dnsmasq killall dnsmasq dnsmasq --conf-file=/tmp/dnsmasq.conf
こんな感じに設定して保存。
いろんなDNSブロックリストを使えるようにしてみた。追加でDNSを手動でも入れられる。ここにローカルのサーバのIPとかを入れると外部向けのドメイン名でローカル鯖にアクセスしたりもできるので便利かも。

あとはcronでこのスクリプトを定期的に実行するだけ。
使ってないような時間帯に毎日更新するようにしてみた。
とりあえずこれを設定しておくとFireTV StickのTVerの広告も消え去るんだよなぁ。
あとはスマホ向けのヤヴァい広告が消えるのでスッキリ。スマホとかタブレットをWiFiで使うときはすごく見やすくなる。

追記:Xbox Liveの実績解除のためにWhite Listも実装しました。


2023年3月12日日曜日

DD-WRTでOpenVPNを設定してみた

 DD-WRT化していたルータの調子が悪かったので再起動したら立ち上がらなくなってしまって、結局いろいろ試した結果どうやらNANDフラッシュに不良セクタがあって設定保存してもNVRAMをクリアしないと起動しなくなってしまったので買い替えた。

もともとWZR-1166DHPを使っていたんだけど、DD-WRT対応のルータで最近のやつはむしろRAMが少なかったりするので結局中古で上位モデルのWZR-1750DHP2を購入してみた。1000円ぐらいで買えたのでつなぎとして使って、新品の良さげなやつ探そうかなとか。DD-WRTじゃなくてMarlinでもいいかなとか思ったり。

それはさておき、まずはWZR-1750DHP2のDD-WRT化。
ファームウェアをv2.25に更新してデバッグモードでログオンしてbuffalo-wzr-1750dhp-webflash.binのv3.0-r51887を書き込んでみた。WZR-1750DHP用のファームウェアだけどWZR-1750DHP2でも問題なく動くっぽい。

WZR-1166DHPのときの設定に色々書き換えていたんだけど、どうもSoftether VPNのL2TPだけうまくつながらない。Softether VPNの方はつながるんだけどね…
iOSから使いたかったので前はL2TPの設定をしていたんだけど。

ということでSoftether VPNの設定は諦めてOpenVPNを使ってみることに。一応こっちもiOS対応のアプリから設定すればiOSからVPNが利用できるらしい。

ServicesのVPNタブを開いてOpenVPN ServerのEnable ServerをEnableにするとOpenVPNの設定が開く。iOSだとServer ModeのTAPが対応していないっぽいのでTUNを使用した。

とりあえずこんな感じに設定した。
暗号化アルゴリズムは適宜。

ここまで設定したら次はCAと秘密鍵を生成する。今回はWindowsで設定したかったのでvpnux PKI Managerを使用した。
このツールで簡単にキーが設定できた。
ディレクトリを設定したらCAの新規作成をクリック。すると1~2分でセキュリティー証明書を生成してくれる。
あとはサーバー用証明書(デフォルトでserver_1)とクライアント証明書(デフォルトでclient_1)を一つずつ作成した。名前はわかりやすいように適当に変更してもOKだと思う。クライアントはクライアント文だけ生成すればいいと思う。(上の設定でAllow Duplicate ClientsをEnableにすると一つのキーで複数のクライアントから接続できるようになる)

とりあえず証明書を生成したらDD-WRTの設定の下の方を埋めていく。
DH PEMはdh2048.pemの中身をメモ帳で開いてそのままコピペ。
CA Certificateはca.crtの中身をメモ帳で開いてそのままコピペ。
Public Server Certificateはserver_1.crtをメモ帳で開いて一番下の-----BEGIN CERTIFICATE-----から最後までをコピペ。
Private Server Keyはserver_1.keyをメモ帳で開いて一番上の-----BEGIN PRIVATE KEY-----から-----END PRIVATE KEY-----までをコピペ。

Additional Configurationにはdnsmasqの設定に関連して
push "dhcp-option DNS 10.8.0.1"
を追加しておいた。

とりあえずこれでOpenVPN Server側の設定は完了なのでApply Settingしておく。
次はServicesのServicesタブでDnsmasqの設定。これをしておかないとOpenVPN接続経由でインターネットに出られない。
Additional Optionsの上の方に
listen-address=127.0.0.1
listen-address=10.8.0.1
の2行を追加してApply Setting。

あとはポート開放。NAT/QoSのPort ForwardingでOpenVPNの設定で使用したポート(デフォルトで1194のUDP)を開放する。
ルーターのIPアドレスは環境に合わせて選択。EnableにしてApply Setting。
これでルーターを再起動すればOpenVPN鯖側は設定完了。

クライアントの設定ファイルは先程のOpenVPN Serverの設定の下の方の"Export Client Configuration"ボタンを押すとダウンロードできる。
ダウンロードしたovpncl_config.ovpnをメモ帳とかで開いて
remoteの行をDDNSとかグローバルIPに書き換える。
一番下のcertとkeyのところにサーバーの設定のようにclient_1.crtの中身とclient_1.keyの中身を同じようにコピペ。
あとはCAがないと言われるので一番最後に
ca.crtの中身を同じように<ca>と</ca>の間に挟むようにしてコピペして保存する。

iPhoneから接続する場合はiClowdにアクセスしてPCからこのファイルをアップロードしてiPhoneのOpenVPNアプリから開いた。あとはアプリ側で設定ファイルを開いて接続することができた。


2018年11月25日日曜日

WHR-G300NをJTAGで修理してみた。

だいぶ前にOpenWRTとかDD-WRTのファームウェアをいじっていたWHR-G300Nを書き込みミスで破壊してしまったのでJTAGで修理してみることに。FlashがCFIなのでライターが無いし…
u-bootすら起動しないのでシリアルコンソールも無反応で、電源をいれると電源LEDは光るんだけど、DIAGランプが薄く赤く光ってる感じ。

WHR-G300Nを検索するとv1とv2があるようなんだけど日本だとWHR-G300Nといえばv1らしい。CPUがRalink RT3052Fのタイプ。
Flash ROMはMaxim 29LV320DBTI-70G(4MB)で、RAMはESMT M12L128168Aが2つで32MBっぽい。

JTAGは上の写真で言う右側の真ん中より少し下にある14PinのSMDピンヘッダのパットがある辺りがそれっぽい。RT3052FはMIPSアーキテクチャなのでMIPSの14PinのJTAGっぽい。
周りに1005サイズの抵抗のパッドも残っていたけど、とりあえずR28だけ装着すればJTAGが使えそう。(TDOの部分)
本当は100Ωとかをつけておくべきなんだろうけどとりあえずジャンパした。
SMDのピンヘッダをつけたかったんだけど、とりあえずJTAGで行けるのか試したかったのでまずはケーブルをハンダしてみた。

とりあえずUSB BlasterでPCとつないでurjtagで接続してみることに。Windows版がうまく動かせなかったのでLinux版をラズパイ上で動かしてみた。
jtag> cable usbblaster
jtag> detect
IR length: 5
Chain length: 1
Device Id: 00010011000001010010001001001111 (0x1305224F)
  Unknown manufacturer! (00100100111) (/usr/local/share/urjtag/MANUFACTURERS)
detectコマンドを送る直前ぐらいにWHR-G300NのACアダプタを差したらうまく認識するようになった。0x1305224FはRalink RT3052FのIDらしい。urjtagにRalinkの情報が入っていないからUnknownになってるけど。
とりあえず認識できたんだけどurjtagにRalinkのコンフィグがないので海外フォーラムを参考に適当なコンフィグを使用することに。MIPS系ならエンディアンが同じとか。
jtag> include admtek/adm5120/adm5120
ImpCode=01100000010000010100000000000000 60414000
EJTAG version: 3.1
EJTAG Implementation flags: R4k ASID_8 MIPS16 NoDMA MIPS32
Processor entered Debug Mode.
jtag> readmem 0x1f000000 0x30000 uboot
address: 0x1F000000
length:  0x00030000
reading:
CFIのフラッシュメモリはJTAGで書き込めるみたいなんだけど、現状どうなってるのか見るためにuboot領域だけ読み出してみることに。
しかしどうやらubootが動いてないので初期化処理がされてないためか全然読み出せない…
OpenOCDでやらないとだめかも。あちらはコンフィグファイルでフラッシュの初期化とか色々できるみたいだし。

ubootを焼いてTFTPでファームを流し込めばいいんだけど、とりあえず純正のubootをdumpしてくれてる人がいたのでこれをもらってきて書き込めば良さそう。
JTAGで全部焼くと時間がかかるので、ubootだけ焼いてTFTPでdd-wrtを流し込んだらそこから純正ファームウェアに戻してみるとか…
BuffaloのRalinkのubootは暗号化されたファームウェアを受け付けないらしいのでDD-WRTから純正ファームウェアに戻す用のファームウェアを焼かないといけないという面倒なやつ。フォーラムの方からWHR-G300N-webrevert.rarをダウンロードしておく。(ログオンしないと添付ファイルが見えない仕様になってるので、登録してログオンすると見つけられると思う。)


2018年8月11日土曜日

DNSブロックスクリプトをルーターに入れてみた。

前回WT3020Hに新しいPadavanファームウェアを書き込んだので、wgetでhttpsが使えるようになったのをいいことにDNSブロック用のadblock scriptを入れてみた。広告関連のDNSをブロックするだけでも結構な悪質な広告が消えてくので便利。
curlで構成されているスクリプトが多いんだけど、Padavanファームウェアはwgetしか使えなかったのでwget用に少し書き換えてみた。
##Online Check##
for i in `seq 0 5`
do
nslookup google.com
result=$?
  if [ $result -eq 0 ]; then
    logger "Online"
    sleep 20
    
    break
  else
    logger "Offline"
    
fi
sleep 5
done
if [ $online -eq 0 ]; then
  exit
fi

##Adblock##
if test -s /tmp/hosts0
then
        rm /tmp/hosts0
fi
(wget -O -  https://winhelp2002.mvps.org/hosts.txt |
    sed '2,/0.0.0.0/127.0.0.1/g; s/[[:space:]]*#.*$//g;' |
    grep -v localhost ;
wget -O -  https://280blocker.net/files/280blocker_domain_202406.txt |
    sed 's/^/127.0.0.1 /g; s/[[:space:]]*#.*$//g;' |
    grep -v localhost ;
wget -O -  https://raw.githubusercontent.com/r-a-y/mobile-hosts/master/AdguardMobileAds.txt |
    sed 's/0.0.0.0/127.0.0.1/g; s/[[:space:]]*#.*$//g;' |
    grep -v localhost ;
wget -O -  https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt |
    sed 's/^/127.0.0.1 /g; s/[[:space:]]*#.*$//g;' |
    grep -v localhost ;
wget -O -  https://warui.intaa.net/adhosts/hosts.txt |
    sed 's/0.0.0.0/127.0.0.1/g; s/[[:space:]]*#.*$//g;' |
    grep -v localhost ;
echo 127.0.0.1 duckdns.org ) | tr ' ' '\t' |
    tr -s '\t' | tr -d '\015' | sed '/^$/d' | sort -u >/tmp/hosts0
sed '/vortex.data.microsoft.com/d' /tmp/hosts0 -i
sed '/imasdk.googleapis.com/d' /tmp/hosts0 -i
grep addn-hosts=/tmp/hosts0 /etc/dnsmasq.conf ||
    echo addn-hosts=/tmp/hosts0 >>/etc/dnsmasq.conf
killall dnsmasq
/usr/sbin/dnsmasq --addn-hosts=/tmp/hosts0

これをCustomizationの中のScriptsでRun After Router Started:の下に追記すればOK。

2018年8月5日日曜日

WT3020H用にPadavan firmwareをビルドしてみた

久しぶりにWT3020を持ち出したんだけど、Padavanファームウェアが古くてwgetがopensslがなくてhttpsが使えなかったり、OpenVPNクライアントは2.3.11止まりなのでDD-WRTのほうで"--compat-mode 2.3.11"してやらないと繋がらなかったり、SMBv1しか対応していなかったりなので、少し新しめのPadavanファームウェアをビルドしてみた。
OpenWrtを入れても良かったんだけどやっぱり手軽に設定変更できるPadavanファームウェアは便利かも。

prometheus-padavan
これを使用してビルドすると環境構築まで自動っでやってくれるらしい。とりあえずOracle VirtualBoxをインストールして、Ubuntu 16.04 LTS i386を仮想PCにインストール。
sudo apt-get install autoconf automake autopoint bison build-essential flex gawk gettext git gperf libtool pkg-config zlib1g-dev libgmp3-dev libmpc-dev libmpfr-dev texinfo python-docutils cmake libncursesw5-dev libtool-bin help2man
必要なパッケージをインストールして、prometheusを準備。
mkdir prometheus-padavan
cd prometheus-padavan
wget -O start.sh http://prometheus.freize.net/script/start-99.sh
chmod +x start.sh
./start.sh
起動したらNEXXを選んで、WT3020Hを選択する。なんかxxd関連でエラーが出ていたけどエンターで行けた。
そんでもってビルド環境を構築して(10分ちょいかかった)、ファームウェアをビルドするだけ。
とりあえずデフォルトでWT3020H用のPadavanファームウェアをビルドしてみた。
GUIとかいれるアプリケーションとかもカスタマイズできそう。容量に応じてだけど。

ファームウェアをビルドしたらtrxファイルができたので、もうすでにPadavanファームウェア化しているWT3020HのAdministrationの中のFirmware Upgradeからtrx今回ビルドしたtrxファイルを流し込めば完成。このtrxファイルをそのままmtd3に書き込んでも良さそう。
ファームウェアアップデートが終わったら設定もそのまま起動した。

とりあえずデフォルト設定でビルドしてみて動くことが確認できたので、すこしいじってみることに。
prometheusでChange build configから必要なパッケージをオン・オフできるんだけど、それ以外にもEdit config in a notepadを選ぶと手動でパッケージを切り替えられるっぽい。
CONFIG_FIRMWARE_INCLUDE_LANG_RU=y
CONFIG_FIRMWARE_INCLUDE_SMBD=y
をコメントアウトして、
CONFIG_FIRMWARE_INCLUDE_SMBD36=y
のコメントアウトを外してみた。

設定変更してもう一回ビルドするときはクイックビルドするかどうか聞かれるけどエラーが出るのでnで通常ビルドした方が良いかも。
これでsmbdが3.6.25になって、USBマスストレージデバイス共有機能でSMBv2が使えるようになる。あとロシア語は使わないので容量削減といったところ。
とりあえずこのバージョンでwgetでhttpsも使えるようになったし、OpenVPNも2.5.2になってDD-WRTといい感じに繋げられるような設定が使えるようになったし。

USBの機能としても結構便利になっているようで、USBモデムとかUSB over Ethernetとかも使えるっぽい。USB速度低下問題の対策は必要かもしれないけど。

日本語化も"/trunk/user/www/dict"の中身を見る限り、ベースのファームウェアとかmerlinファームウェアの日本語ファイルをベースにして作れそう。機能追加とかで容量が足りなくなってもまた16MB化すればいいし。(ファームウェア側も16MB用に変更する必要があるけど。)

ポータブルルーターとして結構最強じゃないかな?

2018年4月4日水曜日

DD-WRTでSoftEther VPNを使ってみた。

iPhoneでVPNで自宅のネットワークに接続するためにDD-WRTでSoftEther VPNを有効化してL2TPで接続してみた。最近の市販ルータはPPTPぐらいには対応してるのが多いけど、せっかくDD-WRTなのでSoftEatherを使ってみた。

使用しているルータはDD-WRT化したWZR-1166DHP。NANDの容量が多いこともあって、公開されているROMでもいろんな機能が付加されている。
ServiceのVPNにはなんとOpenVPNはもちろん、SoftEther VPNの項目まであった。

ただこの項目からSoftEather VPNを有効にしても設定ファイルをコピペしたりしてもうまく動かない…
ということでSSHから手動で設定することに。

まずはSoftEatherの設定を保存するためにAdministration→ManagementでJFFS2を有効化する。

このルーターの場合は結構な容量がつかえるっぽい。

SSHからコマンドを実行したいのでServicesでSecure Shellを有効にしておいた。

SSHでルーターに接続したらとりあえずSoftEather VPNを起動してみる。

vpnserver start
でSoftEather VPNが起動する。

SoftEatherのダウンロードセンターからSoftEher VPN Server Managerをダウンロードしてきて実行する。このツールでサーバーの詳細設定をすることができる。

今回はGUIのvpnsmgr.exeを使用した。

新しい接続設定からルーターのIPアドレスを設定して、接続するとパスワードを設定するように促されるので、設定パスワードを設定し、そのままウイザード形式でVPNの設定を済ませる。このへんは普通のSoftEther VPNの設定と同様に設定できる。
とりあえず今回はL2TPを有効化しておいた。

ウイザードによる設定が完了したら、ローカルブリッジ設定を開く。

ここでは物理的な既存のLANカードとブリッジするのではなくて、新しいtapデバイスを作成した。先程L2TPを設定した仮想ハブにvpnという名前のtapデバイスを作成してローカルブリッジを設定した。
新しいtapデバイス作成時にエラーが発生する場合はシェルからmodprobe tunをすると良いかも。

ローカルブリッジを設定したら、サーバーマネージャーを終了してSSHのターミナルに戻るって下記コマンドを実行する。

mkdir /jffs/etc (もしフォルダが存在する場合は不要)
cp /tmp/var/lib/vpn_server.config /jffs/etc


これでSoftEatherの設定ファイルがjffsにコピーされて再起動しても消えなくなる。
後はWebの設定画面からAdministrationのCommandsを開いて、下記のスクリプトをスタートアップに登録する。

#!/bin/sh

modprobe tun
ln -s /jffs/etc/vpn_server.config /tmp/var/lib/vpn_server.config
/usr/libexec/softethervpn/vpnserver start
sleep 5
brctl addif br0 tap_vpn


これをCommandsのところに入力してSave Startupをクリックすればスタートアップスクリプトとして登録される。

あとはルーターを再起動すれば自動的にSoftEther VPNが起動して設定が読み込まれるはず。

最後に外部から接続できるようにNAT/QoSのPort ForwardingからL2TP用に500と4500番(UDP)を開けて完了。
ちなみにiPhoneからの場合は「L2TP-VPNサーバーが応答しませんでした。」というエラーはIPアドレスがちゃんと取得されてない場合も表示されるみたいなのでこのエラーが出た場合はポートがちゃんと開いてるかどうか以外にもブリッジ設定などによってちゃんとIPが取得できる状態になっているかどうかも確認する必要があるみたい…
(自分はこのエラーがでてポートが空いてないと思いこんでいろいろやっていたので)

とりあえずこれでDD-WRT上でL2TPが使えるようになった。L2TP以外の手段でSoftEther VPNに接続する場合はポートを開けておくのも忘れずに。



2016年12月23日金曜日

DD-WRTのPrivoxyでAdblock Plus Filtersを使う

最近のルータはDD-WRTで色々やっても十分な性能があるのでついにメインのルータをDD-WRTに書き換えて広告ブロックのプロクシを動かしてみることに。
まぁつまりすべてのデバイスの広告をブロックできるルーターにしてしまおうと。

使用したルータはBuffaloのWZR-1166DHP。Bloadcomの800MHzのデュアルコアCPUに512MBのRAMを積んでる。
使用しているDD-WRTのバージョンはDD-WRT v3.0-r30880 std

Privoxyがもともと入っているっぽいのでServiceのPrivoxyを有効にしてクライアントのプロキシを設定すればそこそこ広告ブロックされる模様。

今回はさらにAdblock Plus Filtersを使ってみることに。

Githubで公開されているDD-WRT Adblock Plus to Privoxyを使うと簡単にできるはずだったんだけど
スクリプトが古いからなのか、うまく動かなかったのでこのスクリプトを使ってこのバージョンのDD-WRTで動いた方法を紹介。

まずはAdministration→ManagementからJFFS2 Supportを有効にしてファイルを保存できるようにする。

Services→ServicesでSecure Shellのsshdを有効にしてSSHを使えるようにする。

SSHでrootでログインして次のコマンドを実行。
mkdir -p /jffs/etc/privoxy
mkdir -p /jffs/tmp
cp -r /etc/privoxy/* /jffs/etc/privoxy
cd /jffs
curl -k -O https://raw.githubusercontent.com/jamesmacwhite/ddwrt-adbp-to-privoxy/master/privoxy-blocklist.sh
chmod +x privoxy-blocklist.sh
sh privoxy-blocklist.sh
そしたらServices→Adblockingを開いてPrivoxyを有効にする。
ここまでがこのスクリプトの説明なんだけどこの通りに設定してクライアントでプロクシの設定をしてもうまくつながらない。

ということでServices→AdblockingのCustom Configurationを見直してみた。

SSHでルータに接続して/jffs/etc/privoxyの内容を確認してみるとCustom Configurationで設定されているのに存在しないファイルが…
逆に存在するファイルも…

ということでactionファイルとfilterファイルの設定を変更してみた。

ついでにlisten-addressもルータのIPに。
これで無事クライアントでプロクシを設定してもちゃんとネットに繋がるように。
そして広告も消えてる!
画像が沢山あるサイトだとちょっと遅い感じはするけどタブレットとかスマホに使うためなので特に問題はない感じ。

最近のルータほんと高性能だよなぁ

2016年9月24日土曜日

WT3020にカスタムファームウェアを入れてみた。

OpenWRT入れたり純正ファーム入れたりして遊んでいたNEXXのWT3020Hだけど、OpenWRTでは設定が細かすぎるし、純正ファームウェアではあまりいじれないし…
そもそも純正ファームウェアのアップデートもよくわからないし…
ということでPadavan氏がASUSのRT-N56Rのファームウェアを移植しているっぽいので使ってみた。

Forumによると純正ファームからの書き換え方法が紹介されていたのでとりあえず純正ファームに戻してから書き換えてみた。

リセットボタン長押しで設定はもとに戻しておいた
LANケーブルでWT3020に接続してIPアドレスが割り振られるのでtelnetで接続。

デフォルトIPは192.168.8.1
ユーザー名:nexxadmin
パスワード:y1n2inc.com0755
でログオンできるはず。

とりあえず純正ファームをバックアップしていない人はバックアップしておいたほうが良いかも。

WT3020HにはUSBポートが付いているので今回はUSBメモリ経由でファームウェア書き換えを行う。
まずはPadavanファームウェアをダウンロードしてくる
今回は現時点での最新のWT3020_3.4.3.9-099.trxを使用した。

これを適当なUSBメモリの直下に入れてWT3020Hに差し込む。
そしたら先程ログオンしたTelnetで
cd /mnt/sda/sda1
でUSBメモリのルートディレクトリに移動して
mtd_wrute -r -e mtd3 write WT3020_3.4.3.9-099.trx mtd3
でmtd3(firmware領域)に先ほどダウンロードしたファームウェアを書き込む。
ここで電源切ったり中断すると大変なことになるので注意。

書き込みが終わると自動で再起動するので再起動後IPが再割り当てされるはず。
ASUSの移植ファームだとデフォルトIPが192.168.1.1なので、同じセグメントのIPが割り振られたらhttp://192.168.1.1にアクセスすると…
3.4.3.9-099_930b01a
ASUSのルーターっぽい設定画面が!
NEXXの純正ファームより高性能っぽい。これで高性能なポケットルーターとして使えそう。
このルーター用のDD-WRTがあればよかったんだけどOpenWRTよりはこのファームウェアのほうが使いやすそうなのでしばらく使ってみようかな。
小型NASとしても使えそうだし。

ちなみに設定画面のユーザーIDとパスワードはどちらもadmin。
WiFiのデフォルトパスワードは1234567890だった。

ちなみにファームウェアのサイズが4MBを超えてるのでWT3020Aとか上海問屋のDN-11042はだめかも。
16MB化したときみたいにSPIフラッシュメモリを交換すればいけるかもしれないけど
まぁUSBついてないしな…

とりあえずCustomizationの中のInternet Detectorで77.88.8.8を1.1.1.1にして、77.88.8.1を1.0.0.1に変更しておいた。

2016年2月20日土曜日

LAN-W300N/DRを分解してみた。

LogitecのLAN-W300N/DRをジャンクで入手したので分解してみた。
USBデバイス共有機能がついてる無線LANルーターで11nの300Mbpsに対応している。
USBポートが付いてるけどUSB over Ethernet専用な感じで、FTPサーバとかSMBサーバを立ててNASみたいに使うことはできないらしい。

シリアルナンバーを見るとB無しのバージョンだった。今回もACアダプタが付属してなかったんだけど、調べたらLA-10W5S-09という5V 2A出力のACアダプタらしい。コネクタはPSPと同じく4.0x1.7なので試しにPSPの充電器で動かしてみた。

一応起動するけどなんか不安定。何回か再起動すると無線LANに接続できて設定画面も開けたり。繋がらないときは接続中のまま…
とりあえずリセットボタンを電源LEDが高速点滅するまで長押しして離すと工場出荷状態に初期化できるっぽいのでやってみたらつながるようになった。
ファームウェアは1.08だったので最新の1.14までアップデートしてみた。

早速分解してみた。
LAN-W300N/DR
分解方法はLAN-W300N/Rと全く一緒だった。アンテナがどっちもPCBアンテナになっていた。
CPUには銅板が接着されていて剥がせそうになかった。なんのCPUかわからないじゃん…
Flash ROMはMacronix 29LV320DBTI-70Gで4MBだった。
LAN-W300N/DR
裏面にはRAMが2つ乗っていた。Zentel A3V28S40ETP-G6(16MB)x2で32MB

CPUがわからないのでシリアルコンソールを試してみることに。

表面のJP2ってところに2.54ピッチのピンヘッダをハンダできそうなところがあるのでそこが怪しい感じ。JP2って書いてあるところを1番として順番に3.3V出力、RX、GND、TXっぽい感じだった。
市販のUSB→TTL変換アダプタを使う場合は3.3Vは接続しなくても良さそう。(電源が衝突してしまう)

とりあえずCooltermでBaudrateを色々試してみたところ57600bpsで通信できた。
U-Boot 1.1.3 (Aug 12 2009 - 13:57:22)

Board: Ralink APSoC DRAM:  32 MB
relocate_code Pointer at: 81fa8000
****************************
Init GPIO Pin****************************
flash_protect ON: from 0xBFC00000 to 0xBFC262D3
protect on 0
protect on 1
protect on 2
protect on 3
protect on 4
protect on 5
protect on 6
protect on 7
protect on 8
protect on 9
flash_protect ON: from 0xBFC30000 to 0xBFC3FFFF
protect on 10
*** Warning - bad CRC, using default environment

============================================ 
Ralink UBoot Version: 3.1
-------------------------------------------- 
ASIC 3052_MP1 (MAC to GigaMAC Mode)
DRAM COMPONENT: 256Mbits 
DRAM BUS: 32BIT 
Total memory: 64 MBytes
Flash: 4 MBytes
Date:Aug 12 2009  Time:13:57:22
起動時にモニタしてるとこんな感じで出てきたのでCPUはRalink RT3052Fっぽい。
Logitecのルーターで脆弱性で騒がれてたけど実はシリアルナンバーにB無しはRalinkでB付きはRealtekなのかな。B無しはアップデートの必要なしって書いてあったし…。

Ralink RT3052FなのでOpenWRTみたいな改造ファームウェアも使えそうな気がする。USB付いてるのでOpenWRTが入れられればNAS化もできそうだし。しかしCFIのROMなので剥がしてバックアップ取れないし、JTAGがついてないので書き換えミスったら怖いな…
構成的にはBuffaloのWHR-G300Nとほぼ同じなのでGPIOだけ変更してビルドすれば同じようなファームが動かせたりするかも?WHR-G300N v1はDD-WRTもあったような…

マルチSSIDをオフにして、セキュリティーをWPA2(AES)にしてiPhoneでスピードテストをしてみると最大で55Mbpsぐらい。
倍速モード(40MHz)に設定するとそもそもWiFiに接続できなくなったり、設定画面が超重くなったりするのでデフォルトのチャンネル幅20MHzで使うといいかも。
B付きのLAN-W300N/Rは80Mbps出てたのでRalinkよりもReaktekのほうがiPhone(倍速モード非対応なのでどっちみちチャンネル幅20MHz)とは相性がいいのかな。

USBデバイス共有機能はルーターモードじゃないと使えないって書いてあったけど、APモードでも設定をすれば使える。
APモードにして起動したらPCのIPアドレスを強制的に192.168.2.2に設定して192.168.2.1にブラウザからアクセスすると設定画面が出るので、上位のルーターから割り振られるのと同じセグメントのIPアドレスを手動で設定してやればOK。

でもやっぱりRalinkは熱くなる感じがする。 逆にLAN-W300N/RはB付きでRealtekだったけどすげー安定してるし、速い。発熱もほとんどない感じ。もしかしたらシリアル番号B付きは安定性が改善されてるのかもしれないな。

2015年11月1日日曜日

LAN-W300N/Rを分解してみた。

WiFiルータのジャンクが安く売っていたので買ってみた。
LogitecのLAN-W300N/Rってやつ。11nの300Mbps対応。攻撃を仕掛けられるとインターネット側から設定画面を開けてしまう脆弱性が有ってPPPoEのログイン情報が抜かれてしまうというアレ。対策版ファームウェアにアップグレードしないと。
これもシリアルナンバーの後ろにBがあったので対象かも。まぁBがついてないモデルは設定画面も遅いし安定性に掛けるらしいのでB付きのモデルでラッキーかも。
とりあえず分解してみることに。ネジを2つ外すと爪があるので慎重に爪を外していくと開けられる。
アンテナは基板に同軸ケーブルが直接はんだ付けされていた。片方はPCBアンテナでもう片方が板金アンテナになっていて立てて使ったほうが電波が飛びそうな配置になっている。まぁ技適(204WW21006900)を見る限り最大出力でも7mWまでしか出力してなさそうだけど…
メインのCPUはRealtekのRTL8196Cだった。低価格WiFiルーターにありがちのやつ。カスタムファームウェアはopenwrt-realtekぐらい?改造はなかなか難しそうな気が…
WiFiチップはRealtek RTL8192CE。低価格デバイスとかは結構Realtekのチップ積んでたり、低価格USB WifiドングルとかもRealtekだったりするのでそういうデバイスとは相性がいいかも。
カニチップ
ちなみにFlash ROMはMX25L3206Eで32Mbit(4MB)、RAMはNanyaのNT5SV8M16HS-6Kで128Mbit(16MB)。RAMが少ないのでDD-WRTとかは厳しいんだろうなぁ。同時接続台数は10台以下推奨らしい。
SPI NAND Flashの隣にシリアル(UART)端子らしきものがある。
ACアダプタなしのジャンクだったんだけど純正ACアダプタはLA-6W12Sで12V 0.5A出力らしい。
電源端子がPSPと同じタイプの4.0x1.7mm DCプラグが必要なので、届いたらファームウェアアップデートから試してみようかな。同じDCジャックなのに電圧が違うので気をつけないと。

2015年10月31日土曜日

WT3020を純正ファームに戻してみた。

OpenWRTにして遊んでいたNEXX WT3020Hなんだけど、普通にモバイルルーターとして使いたい案件があったので一旦もとに戻してみることに。
純正ファームのほうが設定が詳細でないぶん、かんたんに設定できるからね…

16MB化してるとパーティションの構成が変わってしまっていそうなので、8MBのNANDに戻してみた。

バックアップしたときにそれぞれのパーティションをバックアップしていたんだけども、今回正常に起動する状態なので戻すのはファームウェアの領域であるmtd3だけで良いらしい。

幸いにもこのモデルはUSBメモリが使えるのでUSBメモリに前回バックアップしたmtd3.imgをコピーして、OpenWRT上でsshやシリアルコンソールからUSBメモリのディレクトリに移動する。

あとは
mtd -r write ./mtd3.img firmware
とコマンドを打って待つだけ。
これで純正ファームに戻ったー
バージョンはNexx 3020H V2.43 (Apr. 30, 2014 19:23:19)らしい。
新しいバージョンとかあるのかなぁ?

まぁ一応やり方覚えておかないと困りそうなのでメモでした。
もし失敗したら結局mtd0~mtd3までをひとまとめにしたやつをRaspberry PiとかUSBのライタで焼けばいいんだろうけどねぇ。

しっかしさすが中国、デフォルトが192.168.8.1か

2015年6月14日日曜日

WZR-1166DHPを買ってみた。

 最近無線LANが調子悪いということで無線LANルータを交換してみた。MBPが11acに対応してるのでとりあえず2ストリームのWZR-1166DHPを買ってみた。
実際MBPは3ストリームまで対応してるんだけど、ちょうどAmazonでやすかったので…

前にルータを買った時はBuffaloのルータのスループットがあんまり早くなかった気がするんだけどだいぶ速くなってたので今回はBuffaloに。
DD-WRTも入るしね。(というかDD-WRT入れるつもりで買ったんだけど
内容物はこんな感じ。

WZRシリーズはオールギガビットの模様。そしてUSB3.0ポートがついてる。
通信BOXからWR8370Nを取り外そうとしたら落っこちてきたし…
ちなみにこの通信BOXには最初100BASE-TのLANハブが入っていた。
そんでもって途中から200Mbpsの光回線に切り替わって幹線が1Gbpsでつながるようになったので今回もギガビット対応のルータということ。

WZR-1166DHPは結構大きめだしACアダプタが微妙に入れづらかった。
付属のネジとタイラップで何とか固定…


3年ぶりにルータ交換ということもあってだいぶCPUが進化してる模様。
ルータでデュアルコアの800MHzだしねぇ
DD-WRT入れたら面白そうだけど、とりあえず純正ファームを2.03から2.13にアップデートした後、初期化してから使用してる。
電波強度も速度もマンソンでは問題ない感じ。もともと有線で80Mbpsぐらい出てたけど、無線でも同じぐらい出るようになったので満足。

設定画面のデバイスコントロールが面白い。どのデバイスがどのぐらい帯域使ってるのかがわかるっぽい。QoSとかもついてるし、とりあえず純正ファームで使ってみようかなぁと。
まぁ7580円でBroadcomチップの2ストリームが手に入るならだいぶ安いんじゃないかなぁ
ちなみに2はペアレンタルコントロールがついたぐらいなもんなので、安い2じゃない方買って正解だったかも。

2015年1月17日土曜日

WT3020のUSB速度低下問題

OpenWRTを書き込んだりNAND Flashを16MBに増設したりしてきたWT3020だけど、なんかUSBメモリの読み書きが遅い気がする…

ということで調べてみたらどうやらハードウェアの問題の模様。
中国のフォーラムでは余計なコンデンサが付いているとの報告が。
ここを見るとMT7620N搭載の他のルーターでも同じようにコンデンサが付いているものがあるようで、データシートにはこのピンに関してはそのような説明はされてない模様。

CPUの左上に抵抗と並んでくっついてるコンデンサが問題のやつ。

外すと通常のレベルまで高速化するようなので外してみた。
場所はCPUの左上のほうに抵抗と並んで取り付けてあるので、抵抗を外さないようにうまくハンダゴテを当てると外れる。

片方がグラウンドパターンに乗ってる?熱が入りにくくて外れにくい。

これを取り外したらUSBメモリはもちろんのこと、USBカメラでmjpg-streamerを使ってのストリーミングで1280x720の25FPSとかでも普通にスムーズに動くようになった。
今のところ問題も起きてないし、データシートに乗ってないってことは要らないんだろうけど基板の設計ミスとかなのかな?

2014年12月10日水曜日

WT3020を16MB化してみた。

OpenWRT化したWT3020のSPI Flashを張り替えて16MBを搭載してみました。
もともとついていたのはEN25Q64でしたが、WinbondのW25Q128に張り替えてみました。

まずは純正ファームウェアをバックアップした方法と同じようにcatでUSBメモリにOpenWRTが入ったSPI Flashの内容全部をバックアップした。

そして早速SPI Flashを剥がしにかかる。
近くに抵抗があるのがちょっと怖いけどそんなに狭くないので普通にハンダ盛って剥がせそう。
最近ESCのFET剥がしをやっていたので無事うまく剥がすことができた。
剥がすのが一番大変だな…

USBメモリにバックアップした内容を16MBのSPI Flashに書き込む。
今回はBIOSを復旧させた時と同じようにRaspberry Piを使用してみた。書き込みとVerifyには12分ほどかかった。

無事ファームウェアを書き込んだらSPI Flashをハンダ付け。亀の子できるようにCSを浮かせておいた。
CSは裏面のココらへんから取ることができる。

とりあえず無事起動できたけど、OpenWRTが8MB用なのでそのままだと今までと同じ容量しか認識されない。

というわけでOpenWRTのtrunkを持ってきて16MB用に書き換えてビルドしてみた。
DTSファイルのfirmwareのところで領域を0x50000 0xfb0000にすればOKかも?
openwrt-ramips-mt7620-wt3020-16M-squashfs-sysupgrade.bin
約11.7MB使用可能に!
とりあえずこのバイナリはデフォルト設定にluci入れたぐらいなのでもうちょいいじれば増えるかなぁ
といってもこのぐらいあれば十分だけど。

しかし今回はChaos Calmer r43675を使用したのでカーネルモジュールまで自分でコンパイルしないといけなさそう…

未確認ですが4MBなWT3020A(DN-11042)とかでも同じような改造ができるんじゃないでしょうか。

2014年12月2日火曜日

OpenWrtでWebカメラを使ってみた。

OpenWrtを入れたWT3020HでWebカメラを使ってみた。
今回使用したWebカメラはLogicoolのC270。UVC対応のカメラである。
そんでもってOpenWrtでUVCカメラを扱うためにカーネルモジュールをインストールする必要がある。
しかしkmod-video-uvcをインストールしようとしてもエラーが出てしまう…

WT3020に対応した正式リリース版のOpenWrtはまだ無いからかな?
バージョン見てみるとまだリリースされてないChaos Calmerだし多分カネールバージョンがあたらしすぎ?自分でコンパイルするのも面倒なので別なイメージを探してみた。

するとBarrier Breakerがあったのでファームウェアアップデートから入れてみた。
しかしここのバイナリはデフォでuhttpdが動いてなかったりLuCIが最初から入ってなかったりしてるみたいなので注意。telnetから入れました…
というわけでBarrier Breakerになりました。
Softwareからkmod-video-uvcをインストールしてみるとちゃんとインストールできた。
ls /devするとvideo0が現れた!

あとはmjpg_streamerをインストールして実行するだけ。
mjpg_streamer  -i "input_uvc.so -f 15"  -o "output_http.so -w /www -p 8080"

ブラウザからhttp://192.168.1.1:8080?action=streamを開くと…
映ったー!
CPU性能もそこそこ高いのでこのレベルなら普通に使えるかも。
念のためアルミヒートシンクつけておいた。

2014年11月29日土曜日

WT3020にTorを入れてanonabox化してみた。

というわけでOpenWrt化したWT3020ですが特にやることもないので
ハードウェア構成ほぼ同じだし、Torを入れれば自作anonaboxになるはず!
WT3020Hはanonaboxの半額以下で購入できるし。もちろん改造は自己責任ですが…

ということでやってみた。OpenWrt化は先日の記事が参考になるかも?
Torの設定方法はOnion Piを参考にさせてもらった。
接続方法はWANポートはネットに繋がってて、LANポートから設定画面にアクセスしてます。ちなみに先日OpenWrt化してからパスワードしか設定してない状態。

まずはTorのインストール。
System→Softwareを開いて
Update Listsボタンを押す。
そうすると下の方のAvailable packagesが更新されるのでTorを探す。
Installをクリックするとインストールされる。

Torの設定ファイルをいじらないといけないのでSSHで接続して
/etc/tor/torrcを開いて

VirtualAddrNetwork 10.192.0.0/10
AutomapHostsSuffixes .onion,.exit
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 192.168.2.1
DNSPort 9053
DNSListenAddress 192.168.2.1
AvoidDiskWrites 1

この8行を追記


次にTorを使用するためのSSIDを追加。
Network→Wifiを開く。