Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

linux

PPPoEのPADIパケットを送信

LinuxでPPPoEがうまく繋がらなかったので、PPPoEの最初のパケット(PADI)をコマンドで投げてみた。

# pppoe -I eth0 -A
Got a Relay-ID: 01 00 00 00 xx xx xx xx xx xx
Access-Concentrator: e14xxxxxx-xxxxxxxxxx
Got a cookie: c9 ef 55 8a xx xx xx xx xx xx xx xx xx xx xx xx
AC-Ethernet-Address: 2c:xx:xx:xx:xx:xx
--------------------------------------------------

Access-ConnectratorがPPPoEアクセス先(アクセス集線装置)の名、AC-Ethernet-Addressが応答を返したMACアドレスかな?本環境は、間にルータ(PPPoEパススルー有効)がいるので、これはルータのMACアドレスでした。

ちなみに、ルータのPPPoEパススルーを無効にすると、PADOパケットがリレーされなくなり、コマンドは応答しなくなります。

# pppoe -I eth0 -A
pppoe: Timeout waiting for PADO packets

LinuxでIPv6 PPPoE接続

Ubuntu 20.04を使って、プロバイダのIPv6 PPPoEサービスに接続してみた時のメモ。

# apt-get install pppoe pppoeconf

設定ツールを起動

# pppoeconf

いろいろ聞かれますが、以下のよう設定しました。

一般的なダイヤルアッププロバイダを使っているほとんどの人は、
'noaut'オプションと'defaultroute'オプションを設定に選び、
'nodetach'オプションを削除するのがよいでしょう。あなたの設定
ファイルを確認して、これらの設定を必要に応じて変更しますか?

⇒ はいを選択

以下の入力ボックスに、あなたのプロバイダへのPPPログインに通常
必要となるユーザ名を入力してください。もしヘルプ画面を見たいの
であれば、ユーザ名を削除して「OK」を押してください。

⇒ プロバイダから提供された接続ユーザ名を入力して了解を選択。今回はmyusernameと想定。

以下の入力ボックスに、あなたのプロバイダへの PPPログインに
通常必要となるパスワードを入力してください。

⇒ プロバイダから提供された接続パスワードを入力して了解を選択

通常のホスト名を解決するためには、少なくとも1つのDNSIPアド
レスが必要です。通常、あなたのプロバイダは、接続確立時に
利用可能なサーバのアドレスを送ってきているはずです。これら
のアドレスを自動的にローカル/etc/resolv.confファイルのネー
ムサーバのリストに追加しますか?  (推奨します)

⇒ はいを選択

ほとんどのプロバイダは 1460 以上の MSS の IPケットをサポー
トしないルータを持っています。
~略~
pppoe で MSS を 1452 バイトに制限しますか?

⇒ はいを選択

PPPDが設定されました。ブート時に接続を開始するようにしますか?

⇒ はいを選択

これで、"pon dsl-provider" で DSL 接続を行い、"poff"で切断
できるようになりました。今接続を開始しますか? 

⇒ 今接続しないので、いいえを選択

ここまで設定すると、/etc/ppp/peers/dsl-provider というファイルにこのような設定が書き込まれます。

noipdefault
defaultroute
replacedefaultroute
hide-password
#lcp-echo-interval 30
#lcp-echo-failure 4
noauth
persist
#mtu 1492
#persist
#maxfail 0
#holdoff 20
plugin rp-pppoe.so eth0
user "myusername"
usepeerdns

なお、パスワードは、/etc/ppp/chap-secrets や /etc/ppp/pap-secrets に保存されています。

ただし上記設定だと、IPv6でうまく繋がりません。設定パラメータの解説は、man pppd コマンドや http://man.he.net/man8/pppd , https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=477245辺りを参考にしながら、以下2行を追記しました。

+ipv6
ipparam ipv6default

そして、/etc/ppp/ipv6-up.d/routing ファイルを作ります。この設定により、接続時にIPv6のルートが自動で追加されるようになります。(ファイルに実行を付けてください)

#!/bin/sh
if [ -z "${CONNECT_TIME}" ]; then
    if [ "${PPP_IPPARAM}" = "ipv6default" ]; then
        ip -6 route add default dev ${PPP_IFACE}
    fi
fi

その他、にろきのメモ帳ももいろテクノロジー を参考に、/etc/sysctl.conf に以下を追加

net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.ens160.accept_ra = 0

設定を反映

# sysctl -p

次に、IPv6接続時にDHCPを使う設定をします。dhcpcdをインストール

# apt-get install dhcpcd5

/etc/dhcpcd.conf に以下を追記

noipv6rs

interface ppp0
  ipv6rs
  iaid 1
  ia_pd 1 eth0

dhcpcdを起動

# systemctl start dhcpcd.service

最後にPPPoEで接続します。
※ dsl-provider は、/etc/ppp/peers ディレクトリに作られるファイル名になります。pon時の名前を変更したい場合、ファイル名を変更するだけでいけます。

# pon dsl-provider

接続が完了すると、eth0の情報を見るとこんな感じになりました。
※下記は実際のIPではないです
※黄色の箇所が接続後に追加で表示された箇所です。

# ip address show
 2: eth0:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
     link/ether b8:27:aa:bb:cc:dd brd ff:ff:ff:ff:ff:ff
     inet 172.16.0.1/16 brd 172.16.0.255 scope global eth0
        valid_lft forever preferred_lft forever
     inet6 2001:aaaa:bbbb:cccc:1/64 scope global dynamic noprefixroute
        valid_lft 14379sec preferred_lft 14379sec
     inet6 fe80::aaaa:bbbb:cccc:dddd/64 scope link
        valid_lft forever preferred_lft forever
49: ppp0:  mtu 1454 qdisc fq_codel state UNKNOWN group default qlen 3
     link/ppp
     inet6 fe80::aaaa:bbbb:cccc:dddd/10 scope link
        valid_lft forever preferred_lft forever

試しに google に ping を実行してみます。以下のようにIPv6で通信できました。

# ping www.google.co.jp
 PING www.google.co.jp(nrt12s17-in-x03.1e100.net (2404:6800:4004:80d::2003)) 56 データ長(byte)
 64 バイト応答 送信元 nrt12s17-in-x03.1e100.net (2404:6800:4004:80d::2003): icmp_seq=1 ttl=116 時間=5.39ミリ秒
 64 バイト応答 送信元 nrt12s17-in-x03.1e100.net (2404:6800:4004:80d::2003): icmp_seq=2 ttl=116 時間=6.03ミリ秒

ちなみに、接続を切るのはpoffです。

# poff dsl-provider

Windows 10 の Ubuntu (WSL) でGUI (X Window)を使う

Windows 10 の WSL 上の Ubuntu 上のアプリでGUI(X)が使えるようにしてみました。

WSLにはGUIを描画する機能がないため、WindowsにXサーバをインストールします。Xサーバは、VcXsrv を使用しました。インストールは簡単なので割愛します。

次に、WSL 上の Ubuntu に X 関連のパッケージをインストールします。rootで作業してください。

# apt-get install build-essential libssl-dev libreadline-dev zlib1g-dev x11-apps x11-utils x11-xserver-utils  fonts-ipafont libxml2-dev libxslt1-dev fontconfig

Windowsのフォントも参照できるようにします。

# ln -s /mnt/c/Windows/Fonts /usr/share/fonts/windows
# fc-cache -fv

 

最後に、VcXsrv を起動し、WSLでVxXsrvの場所を指定します。

# export DISPLAY="localhost:0.0"

 

xeys とか xedit とか起動してみて、無事GUIが表示されれば成功です。

参考 http://estuarine.jp/2017/11/wsl-x-window/

VirtualBox 5.0上のUbuntuの時間がずれる@Windows10

Windows 10 上にVirtualBox 5.0をインストールして、Ubuntu 14.04をインストールしたところ、Ubuntuの時刻が大幅にずれる事象が発生してしまったので、対処方法をメモ。

現在のクロックソースを確認

# cat /sys/devices/system/clocksource/clocksource0/current_clocksource
kvm-clock

 

kvm-clockは誤差が大きいようなので、acpi_pm に変更

# echo acpi_pm > /sys/devices/system/clocksource/clocksource0/current_clocksource

 

これで、時刻の変化を確認すると、正確になりました。

再起動すると元に戻ってしまうので、/etc/default/grub に以下を設定

GRUB_CMDLINE_LINUX="clocksource=acpi_pm"

 

設定を反映

# update-grub2

 

参考 : http://kzlog.picoaccel.com/post-805/

xrdpコンパイル@Ubuntu 14.04

以前、xrdp のバグで古いセッションに再接続できないことを書き、暫定対処で古いバージョンを使っていましたが、やっぱり状況によってはなぜか再接続できない事象が発生してしまうため、自分でxrdpをコンパイルしてみました。

コンパイル方法は、ここを参考にしましたが、一点だけ、パッケージが足らず、xrdp パッケージが作成されなかったので、以下をインストールしました。

# apt install libxrandr-dev

 

後は、参考URL通りやっていきます。

# apt-get install git
# git clone --depth 1 -b v3.03 https://github.com/scarygliders/X11RDP-o-Matic.git
# cd X11RDP-o-Matic
# ./X11rdp-o-matic.sh --justdoi

これでコンパイルが動きだしますが、結構時間(30分以上)かかりました。無事終了すると、以下の通りx11rdpとxrdpパッケージがインストールされます。

# dpkg -l | grep xrdp
ii  x11rdp         0.9.0-1        amd64        X11rdp backend for the xrdp remote access server
ii  xrdp           0.9.0-1        amd64        RDP server for Linux

 

同ディレクトリの、RDPsesconfig.sh を使うと、Xの環境もインストール、設定してくれますが、Gnome(classic)だとうまく接続できなかったので、LXDE を使いました。

リモートデスクトップサーバ構築@Ubuntu 14.04 LTS

Ubuntu 14.04.2 LTS (Cloud-image版)に、リモートデスクトップサーバを構築した時のメモ。

# apt install xrdp

 

軽いデスクトップ環境インストールする。

# apt install lxde

 

一般ユーザ(ubuntuユーザ)で接続する場合は、パスワードを設定し、接続したいユーザのセッションをlxdeにする。(rootユーザは設定しなくても、lxdeに接続できました)

# passwd ubuntu      ← 適当にパスワード設定しておく
# su - ubuntu
$ echo lxsession -s LXDE -e LXDE > ~/.xsession
# exit
# service xrdp restart

 

接続確認。クライアントもUbuntuの場合、私は、remmina というアプリを使いました。

しかし、問題なく接続できましたが、キーボード配列が異なるため、うまく入力できませんので、一旦ログアウトして、サーバ側で以下を設定します。

# cd /etc/xrdp
# vi km-0411.ini

 

↓ファイルの中身

[noshift]
Key8=0:0
Key9=65307:27
Key10=49:49
Key11=50:50
Key12=51:51
Key13=52:52
Key14=53:53
Key15=54:54
Key16=55:55
Key17=56:56
Key18=57:57
Key19=48:48
Key20=45:45
Key21=94:94
Key22=65288:8
Key23=65289:9
Key24=113:113
Key25=119:119
Key26=101:101
Key27=114:114
Key28=116:116
Key29=121:121
Key30=117:117
Key31=105:105
Key32=111:111
Key33=112:112
Key34=64:64
Key35=91:91
Key36=65293:13
Key37=65507:0
Key38=97:97
Key39=115:115
Key40=100:100
Key41=102:102
Key42=103:103
Key43=104:104
Key44=106:106
Key45=107:107
Key46=108:108
Key47=59:59
Key48=58:58
Key49=65322:0
Key50=65505:0
Key51=93:93
Key52=122:122
Key53=120:120
Key54=99:99
Key55=118:118
Key56=98:98
Key57=110:110
Key58=109:109
Key59=44:44
Key60=46:46
Key61=47:47
Key62=65506:0
Key63=65450:42
Key64=65513:0
Key65=32:32
Key66=65328:0
Key67=65470:0
Key68=65471:0
Key69=65472:0
Key70=65473:0
Key71=65474:0
Key72=65475:0
Key73=65476:0
Key74=65477:0
Key75=65478:0
Key76=65479:0
Key77=65407:0
Key78=65300:0
Key79=65429:0
Key80=65431:0
Key81=65434:0
Key82=65453:45
Key83=65430:0
Key84=65437:0
Key85=65432:0
Key86=65451:43
Key87=65436:0
Key88=65433:0
Key89=65435:0
Key90=65438:0
Key91=65439:0
Key92=0:0
Key93=65406:0
Key94=0:0
Key95=65480:0
Key96=65481:0
Key97=65360:0
Key98=65362:0
Key99=65365:0
Key100=65361:0
Key101=0:0
Key102=65363:0
Key103=65367:0
Key104=65364:0
Key105=65366:0
Key106=65379:0
Key107=65535:127
Key108=65421:13
Key109=65508:0
Key110=65299:0
Key111=65377:0
Key112=65455:47
Key113=65514:0
Key114=0:0
Key115=65515:0
Key116=65516:0
Key117=65383:0
Key118=0:0
Key119=0:0
Key120=0:0
Key121=0:0
Key122=0:0
Key123=92:92
Key124=65027:0
Key125=0:0
Key126=65469:61
Key127=0:0
Key128=0:0
Key129=65315:0
Key130=0:0
Key131=65314:0
Key132=0:0
Key133=92:92
Key134=0:0
Key135=0:0
Key136=0:0
Key137=0:0

[shift]
Key8=0:0
Key9=65307:27
Key10=33:33
Key11=34:34
Key12=35:35
Key13=36:36
Key14=37:37
Key15=38:38
Key16=39:39
Key17=40:40
Key18=41:41
Key19=126:126
Key20=61:61
Key21=126:126
Key22=65288:8
Key23=65056:0
Key24=81:81
Key25=87:87
Key26=69:69
Key27=82:82
Key28=84:84
Key29=89:89
Key30=85:85
Key31=73:73
Key32=79:79
Key33=80:80
Key34=96:96
Key35=123:123
Key36=65293:13
Key37=65507:0
Key38=65:65
Key39=83:83
Key40=68:68
Key41=70:70
Key42=71:71
Key43=72:72
Key44=74:74
Key45=75:75
Key46=76:76
Key47=43:43
Key48=42:42
Key49=65322:0
Key50=65505:0
Key51=125:125
Key52=90:90
Key53=88:88
Key54=67:67
Key55=86:86
Key56=66:66
Key57=78:78
Key58=77:77
Key59=60:60
Key60=62:62
Key61=63:63
Key62=65506:0
Key63=65450:42
Key64=65511:0
Key65=32:32
Key66=65509:0
Key67=65470:0
Key68=65471:0
Key69=65472:0
Key70=65473:0
Key71=65474:0
Key72=65475:0
Key73=65476:0
Key74=65477:0
Key75=65478:0
Key76=65479:0
Key77=65273:0
Key78=65300:0
Key79=65463:55
Key80=65464:56
Key81=65465:57
Key82=65453:45
Key83=65460:52
Key84=65461:53
Key85=65462:54
Key86=65451:43
Key87=65457:49
Key88=65458:50
Key89=65459:51
Key90=65456:48
Key91=65454:46
Key92=0:0
Key93=65406:0
Key94=0:0
Key95=65480:0
Key96=65481:0
Key97=65360:0
Key98=65362:0
Key99=65365:0
Key100=65361:0
Key101=0:0
Key102=65363:0
Key103=65367:0
Key104=65364:0
Key105=65366:0
Key106=65379:0
Key107=65535:127
Key108=65421:13
Key109=65508:0
Key110=65299:0
Key111=65377:0
Key112=65455:47
Key113=65512:0
Key114=0:0
Key115=65515:0
Key116=65516:0
Key117=65383:0
Key118=0:0
Key119=0:0
Key120=0:0
Key121=0:0
Key122=0:0
Key123=95:95
Key124=65027:0
Key125=65513:0
Key126=65469:61
Key127=65515:0
Key128=65517:0
Key129=65315:0
Key130=0:0
Key131=65314:0
Key132=0:0
Key133=124:124
Key134=0:0
Key135=0:0
Key136=0:0
Key137=0:0

[altgr]
Key8=0:0
Key9=65307:27
Key10=49:49
Key11=50:50
Key12=51:51
Key13=52:52
Key14=53:53
Key15=54:54
Key16=55:55
Key17=56:56
Key18=57:57
Key19=48:48
Key20=45:45
Key21=94:94
Key22=65288:8
Key23=65289:9
Key24=113:113
Key25=119:119
Key26=101:101
Key27=114:114
Key28=116:116
Key29=121:121
Key30=117:117
Key31=105:105
Key32=111:111
Key33=112:112
Key34=64:64
Key35=91:91
Key36=65293:13
Key37=65507:0
Key38=97:97
Key39=115:115
Key40=100:100
Key41=102:102
Key42=103:103
Key43=104:104
Key44=106:106
Key45=107:107
Key46=108:108
Key47=59:59
Key48=58:58
Key49=0:0
Key50=65505:0
Key51=93:93
Key52=122:122
Key53=120:120
Key54=99:99
Key55=118:118
Key56=98:98
Key57=110:110
Key58=109:109
Key59=44:44
Key60=46:46
Key61=47:47
Key62=65506:0
Key63=65450:42
Key64=65513:0
Key65=32:32
Key66=65328:0
Key67=65470:0
Key68=65471:0
Key69=65472:0
Key70=65473:0
Key71=65474:0
Key72=65475:0
Key73=65476:0
Key74=65477:0
Key75=65478:0
Key76=65479:0
Key77=65407:0
Key78=65300:0
Key79=65429:0
Key80=65431:0
Key81=65434:0
Key82=65453:45
Key83=65430:0
Key84=65437:0
Key85=65432:0
Key86=65451:43
Key87=65436:0
Key88=65433:0
Key89=65435:0
Key90=65438:0
Key91=65439:0
Key92=0:0
Key93=65406:0
Key94=0:0
Key95=65480:0
Key96=65481:0
Key97=65360:0
Key98=65362:0
Key99=65365:0
Key100=65361:0
Key101=0:0
Key102=65363:0
Key103=65367:0
Key104=65364:0
Key105=65366:0
Key106=65379:0
Key107=65535:127
Key108=65421:13
Key109=65508:0
Key110=65299:0
Key111=0:0
Key112=65455:47
Key113=65514:0
Key114=0:0
Key115=65515:0
Key116=65516:0
Key117=65383:0
Key118=0:0
Key119=0:0
Key120=0:0
Key121=0:0
Key122=0:0
Key123=0:0
Key124=65027:0
Key125=0:0
Key126=65469:61
Key127=0:0
Key128=0:0
Key129=0:0
Key130=0:0
Key131=65314:0
Key132=0:0
Key133=92:92
Key134=0:0
Key135=0:0
Key136=0:0
Key137=0:0

[capslock]
Key8=0:0
Key9=65307:27
Key10=49:49
Key11=50:50
Key12=51:51
Key13=52:52
Key14=53:53
Key15=54:54
Key16=55:55
Key17=56:56
Key18=57:57
Key19=48:48
Key20=45:45
Key21=94:94
Key22=65288:8
Key23=65289:9
Key24=81:81
Key25=87:87
Key26=69:69
Key27=82:82
Key28=84:84
Key29=89:89
Key30=85:85
Key31=73:73
Key32=79:79
Key33=80:80
Key34=64:64
Key35=91:91
Key36=65293:13
Key37=65507:0
Key38=65:65
Key39=83:83
Key40=68:68
Key41=70:70
Key42=71:71
Key43=72:72
Key44=74:74
Key45=75:75
Key46=76:76
Key47=59:59
Key48=58:58
Key49=65322:0
Key50=65505:0
Key51=93:93
Key52=90:90
Key53=88:88
Key54=67:67
Key55=86:86
Key56=66:66
Key57=78:78
Key58=77:77
Key59=44:44
Key60=46:46
Key61=47:47
Key62=65506:0
Key63=65450:42
Key64=65513:0
Key65=32:32
Key66=65328:0
Key67=65470:0
Key68=65471:0
Key69=65472:0
Key70=65473:0
Key71=65474:0
Key72=65475:0
Key73=65476:0
Key74=65477:0
Key75=65478:0
Key76=65479:0
Key77=65407:0
Key78=65300:0
Key79=65429:0
Key80=65431:0
Key81=65434:0
Key82=65453:45
Key83=65430:0
Key84=65437:0
Key85=65432:0
Key86=65451:43
Key87=65436:0
Key88=65433:0
Key89=65435:0
Key90=65438:0
Key91=65439:0
Key92=0:0
Key93=65406:0
Key94=0:0
Key95=65480:0
Key96=65481:0
Key97=65360:0
Key98=65362:0
Key99=65365:0
Key100=65361:0
Key101=0:0
Key102=65363:0
Key103=65367:0
Key104=65364:0
Key105=65366:0
Key106=65379:0
Key107=65535:127
Key108=65421:13
Key109=65508:0
Key110=65299:0
Key111=65377:0
Key112=65455:47
Key113=65514:0
Key114=0:0
Key115=65515:0
Key116=65516:0
Key117=65383:0
Key118=0:0
Key119=0:0
Key120=0:0
Key121=0:0
Key122=0:0
Key123=0:0
Key124=65027:0
Key125=0:0
Key126=65469:61
Key127=0:0
Key128=0:0
Key129=65315:0
Key130=0:0
Key131=65314:0
Key132=0:0
Key133=92:92
Key134=0:0
Key135=0:0
Key136=0:0
Key137=0:0

[shiftcapslock]
Key8=0:0
Key9=65307:27
Key10=33:33
Key11=34:34
Key12=35:35
Key13=36:36
Key14=37:37
Key15=38:38
Key16=39:39
Key17=40:40
Key18=41:41
Key19=126:126
Key20=61:61
Key21=126:126
Key22=65288:8
Key23=65056:0
Key24=113:113
Key25=119:119
Key26=101:101
Key27=114:114
Key28=116:116
Key29=121:121
Key30=117:117
Key31=105:105
Key32=111:111
Key33=112:112
Key34=96:96
Key35=123:123
Key36=65293:13
Key37=65507:0
Key38=97:97
Key39=115:115
Key40=100:100
Key41=102:102
Key42=103:103
Key43=104:104
Key44=106:106
Key45=107:107
Key46=108:108
Key47=43:43
Key48=42:42
Key49=65322:0
Key50=65505:0
Key51=125:125
Key52=122:122
Key53=120:120
Key54=99:99
Key55=118:118
Key56=98:98
Key57=110:110
Key58=109:109
Key59=60:60
Key60=62:62
Key61=63:63
Key62=65506:0
Key63=65450:42
Key64=65511:0
Key65=32:32
Key66=65509:0
Key67=65470:0
Key68=65471:0
Key69=65472:0
Key70=65473:0
Key71=65474:0
Key72=65475:0
Key73=65476:0
Key74=65477:0
Key75=65478:0
Key76=65479:0
Key77=65273:0
Key78=65300:0
Key79=65463:55
Key80=65464:56
Key81=65465:57
Key82=65453:45
Key83=65460:52
Key84=65461:53
Key85=65462:54
Key86=65451:43
Key87=65457:49
Key88=65458:50
Key89=65459:51
Key90=65456:48
Key91=65454:46
Key92=0:0
Key93=65406:0
Key94=0:0
Key95=65480:0
Key96=65481:0
Key97=65360:0
Key98=65362:0
Key99=65365:0
Key100=65361:0
Key101=0:0
Key102=65363:0
Key103=65367:0
Key104=65364:0
Key105=65366:0
Key106=65379:0
Key107=65535:127
Key108=65421:13
Key109=65508:0
Key110=65299:0
Key111=65377:0
Key112=65455:47
Key113=65512:0
Key114=0:0
Key115=65515:0
Key116=65516:0
Key117=65383:0
Key118=0:0
Key119=0:0
Key120=0:0
Key121=0:0
Key122=0:0
Key123=0:0
Key124=65027:0
Key125=65513:0
Key126=65469:61
Key127=65515:0
Key128=65517:0
Key129=65315:0
Key130=0:0
Key131=65314:0
Key132=0:0
Key133=124:124
Key134=0:0
Key135=0:0
Key136=0:0
Key137=0:0

 

シンボリックリンクを張る

# ln -s km-0411.ini km-e0010411.ini
# ln -s km-0411.ini km-e0200411.ini

 

xrdp再起動

# service xrdp restart

 

これでキー入力も正常になりました。

ちなみに、リモートデスクトップが切断された場合に、今まで使っていたデスクトップに接続できません。

解決する方法は、いくつかあるようで

  1. 古いバージョンのxrdpを使う。
  2. 最初の接続時にポート番号をメモって、再接続時に自分でポートを指定する。
  3. 最新のxrdpを自分でコンパイル。 6/16追記→ 独自コンパイルしました

私は、1の0.5.0-2 という古いバージョンを入れてうまくいったようでしたが、再接続できないこともありました。。

# dpkg -i xrdp_0.5.0-2_amd64.deb
# service xrdp restart

 

ちなみに、apt-get upgrade すると、バージョンが元に戻ってしまうので、以下のようにして、バージョンアップを固定する必要があります。

# vi /etc/apt/preferences

 

ファイル内容

Package: xrdp
Pin: version 0.5.0-2
Pin-Priority: 500

ディスクイメージを直接マウントする@Linux

以前、ディスクイメージファイルをkpartxを使ってマウントする方法を紹介しましたが、mountオプションでディスクイメージのパーティションの範囲を指定して直接マウントすることもできるので、紹介します。

まずは、partedコマンドを使って、ディスクイメージのパーティション状態を確認します。表示はB(バイト)単位としてます。

# parted disk.img unit B print
警告: 管理者権限がありません。パーミッションに注意してください。
モデル:  (file)
ディスク /root/disk.img: 3000000000B
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos

番号  開始         終了         サイズ       タイプ   ファイルシステム  フラグ
 1    4194304B     71303167B    67108864B    primary  fat32             boot, lba
 2    71303168B    1145044991B  1073741824B  primary  ext4
 3    1145044992B  2218786815B  1073741824B  primary  ext4
 4    2218786816B  2998927359B  780140544B   primary  ext4

 

上記では、一つのパーティションがFAT32, それ以外はext4のパーティションになっていることがわかります。この状態で、例えば先頭パーティションのFAT32だけをマウントしたい場合、以下のオプションを付けてマウントします。

# mount -o loop,offset=4194304,sizelimit=67108864 disk.img /mnt

 

Linuxコンテナ(LXC)内からNFSマウント@Ubuntu 14.04

Ubuntu 14.04 上で作成したLinuxコンテナ内からNFSマウントできなかったのでメモ。

ホストOS上の/etc/apparmor.d/lxc/lxc-defaultファイルに、マウントできない(DENY)設定があるので、これをコメントアウトして、mount options=・・・を代わりに設定する。(赤字が変更箇所)

#deny mount fstype=devpts,
mount options=(rw, bind),

あとは、apparmorを再起動

# service apparmor restart

おそらくセキュリティ的にはやばくなると思うのだが、個人で使用する分には問題ないと思われる。

lxc-cloneでoverlayfsを使ってみる@Ubuntu 14.04

既存Linuxコンテナのディレクトリをコピーして、LXCのクローン環境を作るのではなく、既存のコンテナの差分だけを記録するoverlayfsを使ってみた。

クローン作成時にコピーがほぼゼロのため、一瞬でクローンが完了しますし、ディスクの節約にもなります。

使い方は、コマンドのオプションを以下のように指定するだけです。以下の例では、ubuntu01をクローンして、ubuntu02を作っています。-s がスナップショット、-Bでoverlayfsを指定します。

# lxc-clone -o ubuntu01 -n ubuntu02 -s -B overlayfs

差分のファイルは /var/lib/lxc/ubuntu02/delta0/ に保存されていました。

ちなみに、スナップショットといいつつも、overlayfs は元コンテナのファイルを修正したり、削除したりすると、それが新しいコンテナにも反映されてしまうようなので注意が必要です。

つまり

  • ubuntu02で未更新のファイルをubuntu01で更新 → ubuntu02に反映される
  • ubuntu02で未更新のファイルをubuntu01で削除 → ubnntu02でも削除される
  • ubuntu02に存在しないファイルをubuntu01に追加 → ubuntu02にも追加される
  • ubuntu02で更新したり削除したファイルと同名のフィアルをubuntu01で更新・削除 → ubuntu02に影響なし

のようです。 よって、スナップショット元のコンテナはスナップショット取得後はいじらない方がよさそうです。

(追記 2014/09/07)

inotify をサポートしていないようで、tail -f が使えないのは痛い・・・

Linuxコンテナ(LXC)の接続先ネットワークを物理NWにブリッジ@Ubuntu 14.04

LXCはデフォルトだと、勝手に作られたブリッジに接続し、勝手なローカルアドレスがDHCPで割り振られますが、既存のネットワークに直接繋ぎたくなったため、設定を変更してみました。

まずは、network-managerが動いていると何かと邪魔なので、ネットワークの設定を手動に切り替えます。

# service network-manager stop
# update-rc.d -f network-manager remove

一旦eth0に手動でIPを設定し、通信できることを確認しておきます。自分のNWにあわせてIP等は設定してください。

NW設定。

# vi /etc/network/interfaces

ファイル設定例

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 192.168.0.100
    netmask 255.255.255.0
    gateway 192.168.0.1
    dns-nameservers 192.168.0.1

pingで確認

# ifup eth0
# ping 192.168.0.1

ここでpingが通ればeth0を停止し、ブリッジ(br0)を作っていきます。

# ifdown eth0
# brctl addbr br0
# vi /etc/network/interfaces

ファイル設定例

auto lo
iface lo inet loopback

auto br0
iface br0 inet static
    address 192.168.0.100
    netmask 255.255.255.0
    gateway 192.168.0.1
    dns-nameservers 192.168.0.1
    bridge_ports eth0
    bridge_stp off
    bridge_maxwait 10

auto eth0
iface eth0 inet static
    address 0.0.0.0

ブリッジ起動

# ifup br0

br0にeth0が入っていることを確認

# brctl show
bridge name bridge id       STP enabled interfaces
br0     8000.00270e120a0d   no      eth0
lxcbr0      8000.000000000000   no

最後に、コンテナがlxcbr0ではなく、br0を使用するように設定する。

# vi /var/lib/lxc/コンテナ名/config

変更点

lxc.network.link = br0

あとは、起動すると既存LANにブリッジ接続されます。
※既存LAN上でDHCPが動いている必要があります。

キーボードレイアウト、ロケール変更@Ubuntu 14.04 server on VMware Player

VMwareの簡易インストールはOSのインストールが簡単で便利ですが、日本時間になっていなかったり、コンソールからログインするとキーボードレイアウトが日本語になっていなかったりと使いづらいので、Ubuntu 14.04 server インストール後にやればよさそうなことをまとめました。

OSアップデート

vmware-tools のモジュールがカーネルのバージョン上がると動かなくなる可能性があるので、OSを最新にアップデートしておきます。

# apt-get update
# apt-get upgrade

vmware-tools のインストール

詳細省略。通常のvmware-toolsの手順です。

時刻を日本時間に変更

# cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

JSTになっていることを確認しておきます。

# date
Jul 6 11:34:35 JST 2014

キーボードレイアウトを日本語キーボードに変更

# dpkg-reconfigure keyboard-configuration

キーボードレイアウトの設定画面が出てきますので、 Generic 105-key (Intl) PC → Japanese → Japanese → The default for the keyboard layout → No compose key を選択します。

ちなみに、

# dpkg-reconfigure console-data

だと、一時的にレイアウトを変更できるようで、再起動すると元に戻ります。

qcow2のディスクイメージをマウントして編集する@Ubuntu12.04

KVMなどで使われているqcow2形式のディスクイメージは、単純なディスクイメージと異なり、そのままループバックに繋いでもマウントすることができません。中身を編集するには、qemu-nbd コマンドを使って nbd (Network Block Device) 経由で扱います。nbd は、ネットワーク経由でローカルディスク上にあるディスクイメージをリモートからブロックデバイスとして扱えるようにするための機能がメインのものですが、今回はローカルにあるqcow2のディスクイメージをマウントするのに使うので、ネットワークはあまり関係ありません。

今回は、Ubuntu のクラウド向けの qcow2 ディスクイメージ precise-server-cloudimg-amd64-disk1.img をマウントしてみます。

qemu-utils パッケージがインストールされていない場合はインストールします。

# apt-get install qemu-utils

nbd カーネルモジュールをロードします。

# modprobe nbd

ロードが正常に完了すると、/dev/nbd0 や /dev/nbd1 といったデバイスが見えます。

# ls /dev/nbd*
/dev/nbd0    /dev/nbd1   /dev/nbd11  /dev/nbd13  /dev/nbd15  /dev/nbd3  /dev/nbd5  /dev/nbd7  /dev/nbd9
/dev/nbd0p1  /dev/nbd10  /dev/nbd12  /dev/nbd14  /dev/nbd2   /dev/nbd4  /dev/nbd6  /dev/nbd8

/dev/nbd0 に ディスクイメージを繋ぎます。 ※ファイル名は絶対パスを書かないとエラーになるので、pwdを付けています。

# qemu-nbd --connect=/dev/nbd0 `pwd`/precise-server-cloudimg-amd64-disk1.img

connectすると、パーティションがある場合は自動的にパーティションに応じたデバイスが自動的に作らるので、kpartxは不要です。

# ls /dev/nbd0*
/dev/nbd0  /dev/nbd0p1

いまどのデバイスを使っているかは、コマンドでは確認できそうにないですが、プロセスをgrepして確認可能です。

# ps -ef | grep [q]emu-nbd
root     11461     1  0 10:49 ?        00:00:00 qemu-nbd --connect=/dev/nbd0 /home/share/img/precise-server-cloudimg-amd64-disk1.img

後は、/dev/nbd0p1 を適当にマウントすれば中身が見られます。

# mkdir /mnt/tmp
# mount /dev/nbd0p1 /mnt/tmp

ディスクイメージのデフォルトのパスワード変更したいなら、chroot して passwd コマンド叩けば、イメージ起動後にコンソールからログインできるようにもなります。

# chroot /mnt/tmp
# passwd ubuntu
# exit

後始末は、アンマウントして、disconnectします。disconnectの時は、デバイス名の前に"="は不要です。

# umount /mnt/tmp
# qemu-nbd --disconnect /dev/nbd0 
/dev/nbd0 disconnected

タイムゾーンの変更方法@RHEL

RHELやCentoSインストール時にタイムゾーン間違ったり、VMwareでクイックインストールして異なるタイムゾーンが設定されてしまったりした場合の対処方法。

# cp /usr/share/zoneinfo/Japan /etc/localtime
これだけ。上書きコピーするだけで、すぐに反映されるっぽいです。

OpenStackをインストール中にはまった@Ubuntu 12.04

OpenStack は様々なコンポーネントがあるため、インストールのための支援ツール(?)devstackなるものがあるようです。

勉強会の資料を見つけたので、これを参考にインストールしていたのですが、./stack 実行時に応答が返ってこなくなりはまりましたのでメモ残しておきます。

普段pythonやpipコマンドを使っている人は大したことないかもしれませんが、上記インストール手順のように新規OSインストールでやるとpipコマンドでpythonのモジュールをインストールする箇所で止まってしまうようです。

具体的には、実行中にstack.shスクリプト内で以下のようなコマンドが発行されているようですが、このコマンド実行中に止まってしまいました。

$ sudo PIP_DOWNLOAD_CACHE=/var/cache/pip HTTP_PROXY= HTTPS_PROXY= NO_PROXY= /usr/bin/pip install --use-mirrors -r python_glanceclient.egg-info/requires.txt

上記コマンドは/opt/stack/python-glanceclient/python_glanceclient.egg-info/requires.txtに記載されているpythonモジュールをインストールしているところですが、実際にこれを手動で実行するとやはり止まりましたので、以下の方法で対策を施しました。

  • /var/cache/pip ディレクトリの作成
    • PIP_DOWNLOAD_CACHEで指定されているディレクトリ /var/cache/pip がなかったので、rootユーザで作成しました。
  • ミラーサーバの登録
    • pip に--use-mirrors が指定されていますが、pip の設定にミラーサイトが定義されていないため止まっているようです。なので、openstack ユーザの ~/.pip ディレクトリにpip.confを作ればよいというのがわかったのですが、.pip ディレクトリのオーナーがrootになってしまっていました。おそらく新規OSインストールで、一度もpipコマンドを手動で使ったことがない状況で、stack.sh が sudo でpipコマンドを実行したためだと思われます。よっと、chownで~/.pipディレクトリと、その下にあるpip.logファイルのオーナーをopenstackに変更し、さらに、~/.pip/pip.config を以下のように記述しました。
[install]
use-mirrors = true
mirrors =
    http://b.pypi.python.org
    http://c.pypi.python.org
    http://d.pypi.python.org
    http://e.pypi.python.org
    http://f.pypi.python.org

以上で、stack.sh を実行し直すと、無事インストールが完了しました。 ※ ちなみにscreenコマンドは使わないほうがよいとのこと。

 

ちなみに、devstackのバージョンは3bd75a8d019290c602daf5f4c313513b3791657dで、使用したlocalrcは以下です。

HOST_IP=192.168.0.100
ADMIN_PASSWORD=openstack
MYSQL_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
SERVICE_TOKEN=tokentoken
#FLAT_INTERFACE=br100

disable_service n-net
disable_service n-obj
enable_service q-svc
enable_service q-agt
enable_service q-dhcp
enable_service q-l3

ENABLE_TENANT_TUNNELS=True

FIXED_RANGE=172.24.17.0/24
NETWORK_GATEWAY=172.24.17.254
FLOATING_RANGE=10.0.0.0/24

NOVA_BRANCH=stable/folsom
GLANCE_BRANCH=stable/folsom
KEYSTONE_BRANCH=stable/folsom
HORIZON_BRANCH=stable/folsom
CINDER_BRANCH=stable/folsom
QUANTUM_BRANCH=stable/folsom

 

ログインは、admin ユーザで、パスワードはopenstackになります。

OS再起動した場合は、以下のコマンド叩く必要があるようです。

$ sudo ip addr add 10.0.0.1/24 dev br-ex
$ sudo ip link set br-ex up
$ sudo route add -net 172.24.17.0/24 gw 10.0.0.2
$ sudo losetup -f --show /opt/stack/data/stack-volumes-backing-file

起動スクリプト作っておけば便利かもね。

tailの結果を2回grepすると表示されない@Linux

こんな感じで、grep するとマッチするはずのaaaaがなぜか何も表示されません。

$ cat hoge.txt
aaaa
bbbb
$ tail -f hoge.txt | grep aaa | grep aaa

実は2番目のgrepが悪さしているようで、性能低下を招かないように2番目のgrepがバッファリングし、ある程度溜まってから3番目のgrepに結果を渡しているようです。

バッファリングは、--line-buffered オプションを使うと無効にできます。

$ tail -f hoge.txt | grep --line-buffered aaa | grep aaa
aaaa

はい。表示されましたね。

sshのちょっと高度な使い方

めっきり使う機会が減ってしまったtelnetの代わりによく使うssh。最近はmoshという新たなプロトコルも出てきましたが、まだまだsshがメジャーですよね。

今回は過去の記事を参照しつつsshのちょっと高度の使い方の紹介です。

まずは秘密鍵・公開鍵の使い方。秘密鍵にパスワードを設定しなければ、パスワードなしでログインするようにも可能です。

 

次は、ポートフォワーディング。ローカルのあるポートを、リモートのネットワークの特定のサーバのポートに転送することができます。ネットワークの制限上sshは通るがその他のポートは通信できなかったり、通信したいサーバがNATの中で、踏み台サーバ経由でしかアクセスできない場合に、ダイレクトに通信することができます。

以下は、ローカルのポート80にアクセスすると、abc.com 経由で、hoge.comの8080にアクセスすることができます。

# ssh -L 80:hoge.com:8080  abc.com

-L ではなくて、-R を使うと、リモート(abc.com)のポート80をhoge.comの8080にフォワーディングすることができます。

# ssh -R 80:hoge.com:8080 abc.com

ただし、デフォルトでは、abc.com 上のポート80はabc.com上からのアクセス(ローカルアクセス)しか許可されていないので、他のサーバからのアクセスも許可したい場合は、sshサーバ側の設定(sshd_config)で、GatewayPorts というオプションを有効にし、sshで接続する際に-g オプションをつける必要があるようです。

もっと汎用的にフォワーディングしたい場合は、ダイナミックフォワーディングという方法もあります。

 

次はエスケープキャラクタを使った、GatewayPortsh コマンド自体の制御。左の記事では、"~ ." で強制的にログアウトする方法を書いていますが、これ以外にもいろいろなコマンドがあります。~? でヘルプがみられますが、代表的なものとしては、以下のようなコマンドがあります。

~#  ---- ポートフォワーディングの情報を表示。
~^Z ---- バックグラウンドで実行させる (^ZはCtrl+Zの意味)。sshに戻りたい場合はfgを実行。
~C  ---- sshのコマンドラインを開く。動的にsshの設定(例えばフォワーディング)が変えられます。

次は、タイムアウト関連の設定変更です。デフォルトでは相手のサーバの応答がないと、ターミナルが固まってしまったりしますので、mazn はいつも以下のオプションを使っています。サーバーの生死確認を20秒毎に行い、6回応答がないと自動切断する設定です。(ちょっと記憶が曖昧)

# ssh -o ServerAliveInterval=20 -o ServerAliveCountMax=6

毎回指定するのは面倒なので、.bashrc にでも alias を書いておきましょう。

 

次はサーバの設定のTipsなのですが、接続時の応答が遅いことがあります。これは大抵がDNSを参照する設定になっているか、使わない認証関連の設定が有効になっているのが原因です。sshd_config の以下のパラメータをnoにして、sshサーバを再起動してみてください。

UseDNS no
GSSAPIAuthentication no

 

参考 http://www.slideshare.net/tohakushi/ssh-13118950

pptpサーバの構築@CentOS 5.8

pptpサーバ構築時のメモ書き。

# yum install ppp pptp

PPTPサーバのダウンロード。

# wget http://downloads.sourceforge.net/project/poptop/pptpd/pptpd-1.3.4/pptpd-1.3.4.tar.gz

デフォルトではrpmが作れないらしいので、ソースを一部改変。

# tar zxvf pptpd-1.3.4.tar.gz
# cd pptpd-1.3.4
# vi pptpd.spac          ← SPEC ファイルを修正
plugins/patchlevel.h   ← 57行目 "2.4.3" を "2.4.4" に修正
(echo '#undef VERSION'; echo '#define VERSION "2.4.4"')

再圧縮

# cd ..
# tar czvf pptpd-1.3.4-1.tar.gz pptpd-1.3.4

rpmパッケージ生成

# rpmbuild -ta pptpd-1.3.4-1.tar.gz

インストール

# rpm -ivh /usr/src/redhat/RPMS/x86_64/pptpd-1.3.4-1.x86_64.rpm

/etc/pptpd.conf に以下を追加

option /etc/ppp/options.pptpd
localip 192.168.100.1
remoteip 192.168.100.32-128

/etc/ppp/options.pptpd を編集

name mypptpd
refuse-pap
refuse-chap
efuse-mschap
require-mschap-v2
require-mppe-128
ms-dns サーバのDNSのIP
ms-dns サーバのDNSのIPその2
lock
nobsdcomp
novj
novjccomp
nologfd
mtu 1400

/etc/ppp/chap-secrets にアカウントを書く (パスワードが平文だからやだなあ)

# client    server   secret                  IP addresses
taro        mypptpd  taropassword            *

NATを追加

# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j MASQUERADE

/etc/sysctl.conf の編集

net.ipv4.ip_forward = 1
 net.ipv4.conf.all.send_redirects = 0
 net.ipv4.conf.all.accept_redirects = 0

sysctl.conf の反映

# sysctl -p

サーバー起動

# /etc/init.d/pptpd start

以上。Androidからも接続できました。 ※ iptables で FORWARD をブロックしていると動きませんので注意です。

 

参考

http://d.hatena.ne.jp/nori_no/20100905/1283707909

このブログについて
プライバシーポリシー・お問い合わせ等
購読する(RSS)
記事検索
アーカイブ
カテゴリー
  • ライブドアブログ