2016年5月16日月曜日

ubuntu 16.04のwifiのバグ

若干唐突なのだがubuntu 16.04のNetwork Managerにバグがあるのを今日知った。
それは無線を有効にしてもアクセスポイントのリストが出ないという
ちょっと分かりやすすぎるバグ。
解決の仕方は
①iwconfigでインターフェースの名前を知る。
enp63s0   no wireless extensions.

ra0     

lo        no wireless extensions.


のような感じなので私の場合 ra0 がインターフェースになる.
このあとは

sudo ifconfig ra0  up
service network-manager restart
でOK。
http://askubuntu.com/questions/760075/cant-view-wifi-networks-after-upgrading-to-ubuntu-16-04
ちょっと面倒。




2016年4月3日日曜日

ubuntuにWN-AC433UKを認識させてWiFiする件

WN-AC433UKを買ってみた。
http://www.iodata.jp/product/network/adp/wn-ac433u/
どうもドコモ光のルーターのWiFiの受信がPCだけ弱かったので。

しかしUbuntu15.04のPCに挿してもうごかね
ドライバーの追加をやっても検出しない。

ここであきらめようかとも思ったが
しつこく考えてみた。

まず分かったのはドライバーはmt7610u_wifi_sta_v3002_dpo_20130916で
http://www.mediatek.com/en/downloads1/downloads/mt7610u-usb/
にあるということ。もし切れてたら
http://www.mediatek.com/en/downloads1/downloads/
でMT-7610UのLINUX向けをヒントに探してくれ
要するにIODATAは自前でチップを作ってなくてMEDIATEKのMT-7610Uというチップセット
をWN-AC433UKに使っているってこと。

でこれを解凍して使おうとしたが、コンパイルに失敗する。
で更に調査

ここからの書き換えは
http://qnighy.hatenablog.com/entry/2015/02/05/155016
のとおりでOKだが更に
 -Wno-error=date-time
のフラグをGCCに追加してできた。

列記する
\common\rtusb_dev_id.cの45行目



USB_DEVICE_ID rtusb_dev_id[] = {
#ifdef MT76x0
    +{USB_DEVICE(0x2019,0xAB31)}, /* GW-450D */
    +{USB_DEVICE(0x04BB,0x0951)}, /* WN-AC433UK */
    {USB_DEVICE(0x148F,0x7610)}, /* MT7610U */
    {USB_DEVICE(0x0E8D,0x7610)}, /* MT7610U */
    {USB_DEVICE_AND_INTERFACE_INFO(0x0E8D, 0x7630, 0xff, 0x2, 0xff)}, /* MT7630U */
    {USB_DEVICE_AND_INTERFACE_INFO(0x0E8D, 0x7650, 0xff, 0x2, 0xff)}, /* MT7650U */
#endif
    { }/* Terminating entry */
};  

\conf\RT2870STA.datの7行目
ChannelGeography=1
-SSID=11n-AP
+SSID=
NetworkType=Infra
WirelessMode=5
EfuseBufferMode=0
 
\conf\RT2870STA.datの22行目

 WmmCapable=1
AckPolicy=0;0;0;0
-AuthMode=OPEN
+AuthMode=WPA2PSK
-EncrypType=NONE
+EncrypType=AES
WPAPSK=
DefaultKeyID=1


\include\os\rt_linux.hの280行目
typedef struct _OS_FS_INFO_
{
    -int                fsuid;
    +kuid_t                    fsuid;
    -int                fsgid;
    +kgid_t                    fsgid;
    mm_segment_t    fs;
} OS_FS_INFO;

\os\linux\config.mkの26行目
# Support Wpa_Supplicant
# i.e. wpa_supplicant -Dralink
-HAS_WPA_SUPPLICANT=n
+HAS_WPA_SUPPLICANT=y


# Support Native WpaSupplicant for Network Maganger
# i.e. wpa_supplicant -Dwext
-HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n
+HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y




\os\linux\config.mkの216行目
CC := $(CROSS_COMPILE)gcc
LD := $(CROSS_COMPILE)ld

-WFLAGS := -g -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT  -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs
+WFLAGS := -g -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT  -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -Wno-error=date-time
WFLAGS += -DSYSTEM_LOG_SUPPORT -DRT28xx_MODE=$(RT28xx_MODE) -DCHIPSET=$(MODULE) -DRESOURCE_PRE_ALLOC -DENHANCED_STAT_DISPLAY
#WFLAGS += -DFPGA_MODE
WFLAGS += -I$(RT28xx_DIR)/include


\os\linux\config.mkの663行目

ifeq ($(HAS_CSO_SUPPORT), y)
WFLAGS += -DCONFIG_CSO_SUPPORT -DCONFIG_TSO_SUPPORT
endif

CHIPSET_DAT = 2860
CHIPSET_DAT = 2870
endif

ここまでやってなんとか認識した。ドライバーのインストールは通常の
makeでOKを確認したあとで
sudo make install
でできた。

一応このファイルを
 https://github.com/kokawa2003/WN-AC433UK-ubuntu-driver
に置いておく。
興味のある人はみて改造してください。
DKMS対応は気が向いたらやります。

なお5Gの方の電波は拾えてない。
理由は不明 場所が悪いのか?

PowerShellまとめ

久々WINDOWSネタだ。
ここでPowerShellについてまとめておきたい。


※まず最初にすべきこととしてスクリプトが動くようにするってのがある。
それにはこれ
Set-ExecutionPolicy RemoteSigned
管理者権限で実行すること

※次の作業としてフォントを変更する。
全角文字を入れた時おかしくなるため
 
このようにPOWERSHELLの左上アイコンクリックー>プロパティで出来る
MS ゴシックを選択

※次にすべきことしてバージョンを確認する
それにはこれ
$PSVersionTable
もしくは
$Host.version

$PSVersionTableだと出力は
Name                           Value
----                           -----
PSVersion                      5.0.10586.117
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.10586.117
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
このPSVersion がそれ

$Host.version
だと
Major  Minor  Build  Revision
-----  -----  -----  --------
5      0      10586  117
みたいに出る
これがそのOSの最新であるのを確認
windows7 以降だと今現在5になる
というかぜひ5にすべきだ。便利なので。 

https://www.microsoft.com/en-us/download/details.aspx?id=50395
(英語のみ)



※次の作業としてchocolatey(https://chocolatey.org/)をインストールする。
パッケージ管理だ。以下は要管理者権限
POWERSHELL5 だと 旧来の
iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))
 の他に

Get-PackageProvider Chocolatey -ForceBootstrap
で使えるようにして
Get-PackageSource 
で確認する方法もある。これをonegetというらしい。
ただchocolateyだとパッケージのアップデート可能だがonegetだとできないみたいだ。


※次の作業として コマンド履歴をpowershell終了しても残るように変更する。
終了しあとまた次使うときいちいち打ち込むのはやだろう。
それにはモジュールpsreadlineを入れればいい
cinst psget
install-module  psreadline
でOK 
Powershell4だといろいろ小細工する必要があったが 5 でなくなった。ちょっとうれしい。

※次にドライブを確認する
Get-PSDrive
でOK

 Name           Used (GB)     Free (GB) Provider      Root
----           ---------     --------- --------      ----
Alias                                  Alias
C                 187.86          8.71 FileSystem    C:\
Cert                                   Certificate   \
D                  25.57          3.42 FileSystem    D:\
Env                                    Environment
F                                      FileSystem    F:\
Function                               Function
G                   0.04          0.16 FileSystem    G:\
HKCU                                   Registry      HKEY_CURRENT_USER
HKLM                                   Registry      HKEY_LOCAL_MACHINE
I                 195.11         26.19 FileSystem    I:\
Variable                               Variable
WSMan                                  WSMan

みたいにでる。

ここで 物理 ドライブ(C:\、D:\...)以外のものがあることに注意
すべてのドライブにcd で行けてlsで確認できるのでしてほしい。

ここで覚えておくべきなのは
envで環境変数にアクセスでき
 Variableで変数にアクセス出来ることだ。  
例えば echo $variable:profile でプロファイルのパスが出る
これは 省略して   echo $profile でも OK 

ちなみに 値は 
 C:\Users\kouji\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1



※次にプロファイルを編集
このプロファイルだがbashとかと同じく起動時に読み込まれるスクリプト
なんでも書けるのでalias とかfunction を切っておく

まずファイルを作る
New-item –type file –force $profile

編集
notepad $profile

中身はこんな感じ
Set-Alias grep Select-String
Set-Alias firefox "C:\Program Files\Mozilla Firefox\firefox.exe"

#再起動
function reboot(){
  shutdown -r -t 0
}

#管理者権限で起動
function su
{
    Start-Process powershell.exe -Verb runas
}


※次にSSHする方法
powershellでSSHするには
Win32-OpenSSH
で可能
名前に反して64bitに対応している
インストールは
cinst Win32-OpenSSH
でOK
ssh ....
が使える。
ただし事前に文字コードを変える必要がある(LINUXはほとんどUTF8なので)
 [Console]::OutputEncoding = [Text.Encoding]::UTF8;
でOK 

※次に画面の色


あと色に関するものは
$Host.UI.RawUI.BackgroundColor
$Host.UI.RawUI.ForegroundColor
$Host.PrivateData.ErrorForegroundColor
$Host.PrivateData.ErrorBackgroundColor
$Host.PrivateData.WarningForegroundColor
$Host.PrivateData.WarningBackgroundColor
$Host.PrivateData.DebugForegroundColor
$Host.PrivateData.DebugBackgroundColor
$Host.PrivateData.VerboseForegroundColor
$Host.PrivateData.VerboseBackgroundColor
$Host.PrivateData.ProgressForegroundColor
$Host.PrivateData.ProgressBackgroundColor
[console]::ForegroundColor
[console]::BackgroundColor
[System.Console]::ForegroundColor
[System.Console]::BackgroundColor

Get-PSReadlineOption
Set-PSReadlineOption -TokenKind Command -ForegroundColor Magenta
Set-PSReadlineOption -TokenKind Comment -ForegroundColor Black -BackgroundColor White



モジュールについて
モジュールの追加で機能拡張可能
そのパスは
$env:PSModulePath
インストール可能なモジュールのリスト
find-module
検索
find-module XXXX
インストールされたモジュールのリスト
Get-Module -ListAvailable
モジュールインストール
install-module XXXXX

モジュールのコマンドリストアップ
get-command -module XXXX
 

  
※最後に
己自身が勉強する必要がある。

 


    
      

2016年4月2日土曜日

家のUBUNTUのDNSが失敗する件

最近ドコモ光にした話をしたと思うが、それ以来問題になっているのが実は1件ある。
それはPCを立ち上げた直後DNS変換に失敗すること。
正確にいうと起動後数十秒で
ping google.com
に失敗する。
これ最初WEBが落ちるのかとおもったが、よくよく調べて見ると
ping 8.8.8.8
には成功するので要するに ドメイン名ー>IP の変換に失敗しているってことが分かった。
だが一旦NETWORK MANAGERから接続断にして繋ぎ直すとOKなのであまり問題視してなかった。

しかしながら最近リモートデスクトップとかするようになり、そのときリモートでPCは見れるが
その時PCからWEBができないので物足りなさを感じてはいた。当然ながらこのとき接続断にして繋直すことはできない。切るとリモートできなくなるからだ。

この件なのだが今日解決した。
sudo vi /etc/NetworkManager/NetworkManager.conf

dns=dnsmasq
の行があるのでこの行をコメントアウト
#dns=dnsmasq
でOK

2016年3月20日日曜日

lenovo G570 ブルースクリーン発生

Windows updateして再起動したらブルースクリーン発生して二度と立ち上がらなくなる問題発生。久しぶりにお手上げになる問題だ。解決策を探る。
ネットで調べてると
https://forums.lenovo.com/t5/Lenovo-U-and-S-Series-Notebooks/S205-Blue-Screen-of-Death/td-p/834203
ここにファイルを削除して再起動的なことが書いてある。
c:\Windows\System32\drivers\
にファイルはあったのでリネームして再起動すると
解消した。

難しさは軽度だった。

家のPCに外からつなぐ

ずっと家のLAN回線をテザリングでやっていたが
さすがに毎月8G境界を超えました。1000円払って1G買え
とドコモに言われるのが嫌になってドコモ光をつけることにした。
というかドコモやめればという意見もあるが…。

今回ドコモからもらったルータは RS-500KI というもの。
取説
http://web116.jp/shop/hikari_r/rs_500ki/rs_500ki_03.html
この取説によるとVPNを光電話のためにつくった的な話が書いている。
それをしっかり流用して遊ぶ。これを使うとアドレス変換とかしなくてもPCに楽に外からアクセスできる。

最近物忘れが激しいので一応書いておくが、VPNとは
https://ja.wikipedia.org/wiki/Virtual_Private_Network
これのこと。さらに説明する。
①家の外部にあるPC、スマホを家庭内LANに属させるのにつかう機能。
②またそこから発展して例えば中国の人とかが自分の所在地をごまかすのに使う機能。
なんでごまかせるか?
例えば北京の人がロンドンのVPNサーバーにつないだとする。すると北京からブラウザーを動かしてインターネットすると受け手側はロンドンのPCからアクセスしているように見えるため。このためのアクセス先のサーバーは公開されていて公衆VPNという。公衆VPNはいっぱいある。なぜやりたがる人が中国にいっぱいいるかは説明しない。表向きはセキュアな通信がしたいため。

今はVPNといえば②の意味でつかうことが多いのかもだが今回の話は①の意味で家のUBUNTUに外部からアクセスしまーすという話。なお昔②のようなことはproxyでやっていたが、今は流行らないらしい。(重くなるから)

まず外部と接続したルーターのIPを公開する必要がある。このIP、ルーター再起動しないと変わらないはずなので記憶してもいいが、名前をつけることにする。
それには私の解決はきまっていてDDNSを使う。今回もそうした。つかったのはこれ
http://ieserver.net/
というか私がDDNSをつかうときはこれしか使わない。LINUXで使いまわせるのがすでにわかっているから。いつものように名前を決め、cronにスクリプトをセットする。
これで外部からいつも決まったURLでアクセスできる。IPをいちいち記憶する必要がないので便利。

ここからのVPNサーバー立ち上げ作業は
http://ezxnet.com/android/entry5803/
 これのとおりにしたのでOK。すべてうまくいった。

この絵から分かるようにVPNサーバになるのが最適なのはグローバルIPをもつ装置。
そうでない運用は理論的には考えられるが面倒なだけ。
通常これはルーターとなる。ただPCにグローバルIPを振り出す装置をつけてPCをVPNサーバにするのもOKだし、スマートフォンがグローバルIPを持てばそれをサーバにするのも可。softetherとかはこのタイプ。

次にUbuntuからアクセスする方法だけないので書いておく。
まずこのVPN接続の種類をL2TP/IPsecというが
これをサポートするのが
l2tp-ipsec-vpnというパッケージ
基本的には
http://blog.hktechno.net/2013/02/linux-l2tpipsec-vpn.html
でOKだが ただパスワードを平打しないといけないというバグ仕様
http://qiita.com/MasayukiNagamachi/items/3603cd9314212c18c382
誰も直さないのがなんともはや
これでUbuntu12.04以降はOKなのは確認している。

と、ここまでかいたところでもっといいものがあるのに気づいた。
それは
https://launchpad.net/~seriy-pr/+archive/ubuntu/network-manager-l2tp
これをPPAから入れてセットアップする。
やりかた。
sudo apt-add-repository ppa:seriy-pr/network-manager-l2tp
sudo apt-get update
sudo apt-get install network-manager-l2tp-gnome
!!!!!!!!!!!!!!!!!!
sudo service xl2tpd stop
sudo update-rc.d xl2tpd disable
!!!!!!!!!!!!!!!!!!
このあと
sudo restart network-manager
であとはネットワークマネジャーー>VPN設定でいける。
一応画面写真






このやり方の方がNetworkManagerで管理されるのでイケてると思う。
デバッグはこれ
sudo /usr/lib/NetworkManager/nm-l2tp-service --debug
または、
tail -f -n 0 /var/log/syslog
※追記
2回め繋げないようだ


これでつながったらあとはSAMBAでもSSHでもリモートデスクトップでも好きなことができる。
とりあえずスマートフォンからnomachineでリモートデスクトップするのがお気にいり。
あと外にある2台のPCを同じVPNにつなぐと同じLANのマシンとして認識されることにも
注意。つまり離れた人同士でIPを指定してファイル共有とか可能。

※PCのIPの確認方法
191.168.1.1でルーター設定が見えるから
情報ー>DHCPv4サーバー払い出し情報
で分かる。

※PCでサーバーを立ち上げたときポートを開けるのを忘れないこと
gufwで管理するので充分

※VPNの進化系統
PPTP
L2TP/IPsec
SSL-VPN
の順(下が新しい)今回真ん中(L2TP/IPsec)を使った。

※openvpn,softetherというものが最近流行りだしている。これはPCーPCで繋いでルーターとか間にあるものを貫通させるのにつかう。種別としてはSSL-VPNととなる。ルーターもいずれこれになるらしい。

※ openvpnでサーバを認識するのにはファイルをやりとりする。そのファイルをovpnファイルという。拡張子.ovpn

※ softetherはフリーだが有料版もある。PacketiX

※公衆VPNというものがある。
http://www.vpngate.net/ja/
これは国籍をごまかすのにつかう。なぜごまかすかは書かない。
むかし流行ったproxyと似た使い方。

※OpenVPNを商用にしたものの1個がPrivate tunnel
これ
https://www.privatetunnel.com/home/
http://security.hondaclinic.jp/%E6%9A%97%E5%8F%B7%E3%81%AE%E3%81%99%E3%81%99%E3%82%81/opnevpn%E3%82%92iphone%E3%82%84%E3%83%91%E3%82%BD%E3%82%B3%E3%83%B3%E3%81%A7%E4%BD%BF%E3%81%86%E6%96%B9%E6%B3%95/
OpenVPN自体はオープンソースソフトウェア