2018/05/25(金)Huawei nova liteにTWRPを入れてroot化

この記事は「Android 7.0/EMUI 5.0のNova lite(PRA-LX2)」用に書かれています。他のHUAWEIの端末でも似たような方法で大丈夫だと思いますが、Android 8.0(Oreo)は色々と違います。ご注意ください。

なお「nova lite」は日本国内での販売名で、海外では「P8 lite 2017」「Honor 8 Lite」という名称で売られています。また開発コード(?)の「PRAGUE」やチップセットを示す「Hi6250」も併記されることがあります。海外情報を探すときはこれらの名称で検索しましょう。

この操作は最悪スマホが起動しなくなりますので必ず自己責任で。

続きを読む

2018/05/24(木)Huaweiスマホの文鎮(Brick)からの脱出方法メモ

HUAWEI nova liteをうっかり文鎮化してしまったので、復旧方法(復旧手段)のまとめメモ。ちなみに海外では文鎮化のことを「Brick」(レンガ化)と言うようです。

文鎮化の経緯

  1. カスタムリカバリを入れるためにbootloaderをunlockする
  2. root化したり色々いじる。開発者モードとかもいじる。
  3. いつのまにかFRP Locked(OEMロック状態)になっていることに気づく
  4. FRP Lockedだと fastboot flash できず、EMUI 5.xではOEMロック解除に再度ブートローダーのロックが必要だと気づく。
  5. リカバリも/bootも/systemも改変された状態のままブートローダを再ロックしてしまう
    fastboot oem relock 0421234567897012
    
  6. 「secboot」が有効になり、改変された/bootや/systemやTWRPは起動しなくなる。

続きを読む

2017/10/30(月)LAN内に外部公開サーバを置いて、内部からアクセスさせる

はてブ数

ルーティングテーブル書き換え(route)によるアクセス制御から、unboundによるDNSの一部書き換えに移行したメモ。

状況

LAN内のLinuxマシンを、家庭用ルータのポートマッピングを使って外部公開している状況を想定しています。小規模の会社とかでも、こういう設定をされていることがありますね。

home-LAN-newtork.png

この場合、内側のPCから外部公開時のホスト名である「global.my.ip」にアクセスするとグローバルIPを引いてしまいます。そして、PCからルーターの外側IPにアクセスすることになるのですが、NEC等のルータではこの際ポートマッピングが有効にならずアクセス不能となります。*1

ルータのルーティングテーブルを書き換えることができれば色々と解決策はあるのですが、そんな機能を持った機種はまずありません……。*2

*1 : Buffaloはたしかアクセスできたような気がする。

*2 : Atermとかでは外向きの静的ルーティングはできても、内向きは無効です……

力技で解決していた

どうにもならないので、PCを起動するたびに、外部IPを確認して、外部IPにアクセスするときはLinuxサーバ(192.168.1.8)にルーティングするような設定をしていました。

@echo off
' route-add.bat
for /f "usebackq tokens=2 skip=1" %%i in (`nslookup global.my.ip 192.168.1.1 ^| findstr "[0-9]\.[0-9]"`) do set IP=%%i
route add %IP% 192.168.1.8

これで、PCから外部IP向けのパケットがLinuxサーバに向かうので、Linuxサーバ側でNAT処理をします。

MY_LOCAL="192.168.1.2"
MY_GLOBAL=`dig +short global.my.ip`
#---------------------------------------------------------------------------
# Special forward for myself
#---------------------------------------------------------------------------
iptables -t nat -A OUTPUT      -d $MY_GLOBAL -s $MY_LOCAL \
         -j DNAT --to-destination $MY_LOCAL
#---------------------------------------------------------------------------
# Special forward for local network
#---------------------------------------------------------------------------
iptables -t nat -A PREROUTING  -d $MY_GLOBAL -s $MY_LOCAL/24 \
         -j DNAT --to-destination $MY_LOCAL

これで無事アクセスはできるのですが、スマホ等からのアクセスは断絶されたままでした。

unboundによるDNSの書き換え

unboundというDNSキャッシュサーバには、特定のホスト名やドメインだけ、DNSの結果を書き換える機能が付いています。

本当は外部IPでのアクセスがすべてLinuxサーバに転送されるのが理想なのですが、そうも言ってらもないので、この方法で解決を試みました。以下、Debianサーバでの設定例です。

sudo su
apt-get install unbound

/etc/unbound/unbound.conf を編集して以下を追加します。

server:
        interface: 0.0.0.0
        access-control: 127.0.0.1 allow
        access-control: 192.168.0.0/16 allow

続いて /etc/unbound/unbound.conf.d/global.my.ip.conf というファイルを新規作成します。

local-data: "global.my.ip A 192.168.1.8"

作成したら unbound にリロードさせます。

service unbound reload

確認

$ dig @localhost global.my.ip
;; ANSWER SECTION:
global.my.ip.           3600    IN      A       192.168.1.8

ルータの設定書き換え

ルータのDHCPの設定を書き換えて、DNSのプライマリサーバに 192.168.1.8 を指定します。セカンダリは 192.168.1.1 を指定しておくと良いでしょう。

まとめ

NECのルータは性能は悪くないけど、細かい設定ができないのでちょっと面倒ですね。

UPnPタイムアウトを設定できないし(高級機のみ可)。Buffaloのほうがいいのかもしれない。ポート転送が内側に対しても効いた気がするし。

そしてdd-wrt対応のルータ使ってみたい。

OK キャンセル 確認 その他