No Such Blog or Diary

«Prev || 1 | 2 | 3 |...| 51 | 52 | 53 || Next»

Ubuntu 12.04 で X が不安定だ……

何故か突然落ちてくれる,作業中に.そして作業していた内容が全部消えるという罠.

こまめに保存しておかないとヤル気がなくなる&そもそもリセットされると作業効率が悪い.どうにかせねば.

Ubuntu 12.04 LTS の設定中

とりあえず,隣のディスプレイにマウスカーソルを動かしたい時にディスプレイ境界で引っかかるのをどうにかしたいのだけど…… 止めさせる方法がわからない.compiz が死んだ時には引っかからなくなったから,多分 compiz のどこかだろうけど探すのがめんどい.

TeX 周りは特に苦労せず普通に日本語が入った.

gcc のコンパイルは相変わらず export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu を入れないとだめと.

GHCは7.4.1なので満足.

Sun の JDK はメンドイのか?

あー,cabal install gtk でこけた.gtk2hsC2hs: Error in C header file. と出て下のメッセージが出てるけど良く分からん.暫く放置.

./cairo-gtk2hs.h:1: (column 0) [FATAL]
  >>> Lexical error!
  The character '#' does not fit here.

追記:ディスプレイ境界の引っかかりは,システム設定→ディスプレイ→画面の端に合わせる をオフにしたら消えた.つか,Laucher を画面の端に置くためのオプションかなとか思ってたのだけど違かったのね.わかりにくい.

自前でDDNS

面倒な事はせずに,bind の走っているホストに定期的に ssh でつなげて nsupdate を実行してレコードを変更してあげるので良いと.named.conf の allow-update には bind の走っているホストの I Pしか書かない.動的に変わる IP は SSH_CONNECTION から取る方向で.

lhs2tex に適した Emacs の mode はないものか?

mmm-mode で LaTeX mode に Haskell mode を入れればいいのだけど,reparse を勝手にやってはくれないので一々 mmm-parse-buffer とか呼ぶ必要があって面倒.まあ,その部分だけ自分で機能を追加するというのはありかも知れない.改行を入れるたびにバッファをパースしなおすとか.重いかもしれんけど.というか,mmm-mode って最近メンテされてるんか?

そしてメインの作業が進まない.

追記:編集後に0.5 秒間アイドルが続いたらバッファを再パースするように設定してみた.問答無用でバッファ全体を走査するのでとても富豪的なのだけど. そしてマイナーモードに mmm が入っているかどうかの判定も怪しいのだけど.とりあえず満足.


;; for auto-reparsing in mmm-mode
(defun my-mmm-mode-hook ()
  (let ((my-mmm-buffer-modified nil))
        (progn
          (defun my-mmm-after-change-hook (beg end len)
                (if (let ((l (current-minor-mode-maps)))
                          (if l (lookup-key (car l) "mmm") nil))
                        (setq my-mmm-buffer-modified t)
                  ()))
          (defun my-mmm-idle-timer-hook ()
                (if my-mmm-buffer-modified
                        (progn
                          (mmm-parse-buffer)
                          (setq my-mmm-buffer-modified nil)
                          )
                  ()
                  ))
          (run-with-idle-timer 0.5 'true 'my-mmm-idle-timer-hook)
          (add-hook 'after-change-functions 'my-mmm-after-change-hook)
          )))
(add-hook 'mmm-mode-hook 'my-mmm-mode-hook)
 

VMwareServer の webインターフェースを ssh のフォワーディング経由で使うとき

902, 8222, 8333 を転送すべし.8222だけでもVMの状態を見たりとかはできる.902と8333を転送しないとコンソールが使えない.ポート番号よく忘れるのでメモっておく.

閑話休題.

ぶっちゃけサーバ群は VMware 使わずに KVM でどうにかする方が正しい気がする.

L2TP/IPsec な VPNサーバを Ubuntu 10.04 LTS で設定したメモ

そこら辺の wifi を使いまくるとセキュリティ的に心配な時があるので,さくらのVPSでL2TP/IPsec な VPNサーバを作って安全な経路を確保することにしようと考えたのが約一週間前.論文修正とかの合間にやる気なく設定をいじっていたらようやく安定して使えるようになったのでメモっておく.

環境:10.04 LTS amd64 上で,kernel, ipsec, xl2tpd, ppp のバージョンはそれぞれ linux-image-2.6.32-36-server, 2.6.23+dfsg-1ubuntu1, 1.2.5+dfsg-1, 2.4.5~git20081126t100229-0ubuntu3 で.サーバ側にはLANが無いので 192.168.222.0/24 なLANをでっち上げて NAT する(192.168.222.1 をサーバの ppp0 に振って 192.168.222.X を VPN 接続してきたクライアントに振る).

とりあえず白鳥さんなどをインストール.ppp も入るはず.とりあえずX509の鍵は作らない方向でインストール.

sudo apt-get install openswan xl2tpd

ipsec の設定.sudo vi /etc/ipsec.conf で下記の内容にした.後半は /etc/ipsed.d/examples/l2tp-psk.conf の内容をコピーしてゴニョゴニョ弄った結果.

version 2.0
 
config setup
        nat_traversal=yes
        virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:!192.168.222.0/24
        oe=off
        protostack=netkey
 
conn L2TP-PSK
        forceencaps=yes
        authby=secret
        pfs=no
        auto=add
        keyingtries=3
        rekey=no
        ikelifetime=8h
        keylife=1h
        type=transport
        left=%defaultroute
        leftprotoport=17/1701
        right=%any
        rightprotoport=17/%any

ついで sudo vi /etc/ipsec.secrets で秘密鍵の設定.最後に改行いれないと動かないとかいうバグもあったりなかったり?

: PSK "PRE SHARED KEY HERE"

次に xl2tpd の設定を sudo vi /etc/xl2tpd/xl2tpd.conf で以下のように.まあ,name とか要らない気もするのだけどいいか.

[global]
[lns default]
ip range = 192.168.222.2-192.168.222.32
local ip = 192.168.222.1
length bit = yes
refuse chap = yes
require authentication = yes
name = l2tpd
pppoptfile = /etc/ppp/options.l2tpd.lns

上の xl2tpd の設定で指定した ppp 部分の設定を sudo vi /etc/ppp/options.l2tpd.lns して以下のように.

require-mschap-v2
ms-dns YOUR_DNS_SERVER
auth
lock
hide-password
modem

そんで ppp用のユーザパスワードを sudo vi /etc/ppp/chap-secrets で書き込む.面倒なのでサーバ名とかワイルドカードで.

USERNAME * PASSWORD_HERE *

デーモン達の設定は以上で終わって,次にファイアウォールとかの設定を.とりあえず ufw で 500 (IKE)と 4500 (IPsec NAT-T) のUDPを開けておく.

sudo ufw allow 500/udp     
sudo ufw allow 4500/udp   

ついで ufw では設定できない部分を sudo vi /etc/ufw/before.rules で設定.ESP を通すための設定と,xl2tpd を IPsec 以外から使えないようにする設定と,LAN の NAT をさせる設定とを適切な場所に追加.

## *filter に対応する COMMIT の手前に
# for ESP protocol of IPsec
-A INPUT -p 50 -j ACCEPT
# restricts l2tp to be used under ipsec
-A INPUT -p udp -m policy --dir in --pol ipsec -m udp --dport l2tp -j ACCEPT
-A INPUT -p udp -m udp --dport l2tp -j REJECT --reject-with icmp-port-unreachable 
-A OUTPUT -p udp -m policy --dir out --pol ipsec -m udp --sport l2tp -j ACCEPT
-A OUTPUT -p udp -m udp --sport l2tp -j REJECT --reject-with icmp-port-unreachable
 
## *filter の COMMIT の後に
# nat Table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Forward traffic from 192.168.222.0/24
-A POSTROUTING -s 192.168.222.0/24 -j MASQUERADE
# don't delete the 'COMMIT' line or these nat table rules won't be processed
COMMIT
# end of nat rules

さらにフォワーディングなどの設定を sudo vi /etc/ufw/sysctl.conf で下記のように変更.

net/ipv4/ip_forward=1
net/ipv4/conf/all/accept_redirects=0
net/ipv4/conf/all/send_redirects=0
net/ipv4/conf/default/accept_redirects=0
net/ipv4/conf/default/send_redirects=0
net/ipv4/conf/eth0/accept_redirects=0
net/ipv4/conf/eth0/send_redirects=0
net/ipv4/conf/lo/accept_redirects=0
net/ipv4/conf/lo/send_redirects=0

さらについでに sudo vi /etc/default/ufw で ufw のフォワーディングのデフォルト値を許可に変えておく.これをしておかないと ufw に全てブロックされて悲しくなる.

DEFAULT_FORWARD_POLICY="ACCEPT"

あとは再起動後に ipsec (というか pluto)がコケるのでその修正を.

sudo update-rc.d -f ipsec remove
sudo update-rc.d ipsec defaults

ここまでやったら再起動して sudo ipsec verify でとりあえず ipsec の設定を確認.インターフェースが eth0, lo 以外にもあると send_redirects/accept_redirects を 0 にしろと怒られるかも? その場合は sudo vi /etc/ufw/sysctl.conf にその設定を追加して再起動.

多分,これくらいで動いているはず.フレッツ・スポット,b-mobile3G,自宅の NAT の下から windows 7で接続を確認.

TODO: ホストの認証を公開鍵にしたいなぁ.

嵌った所その1:Windows はレジストリをいじらないと IPsec NAT-T で通信できないらしい( http://jp.giganews.com/vyprvpn/setup/windows-7/l2tp.html ).つまり,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\PolicyAgent に名前が AssumeUDPEncapsulationContextOnSendRule で値が 2 な32ビット値を書きこんでおく.

嵌った所その2:ESP の 50 はポート番号でなくプロトコル番号.PPTP の GRE もそうだけど.iptables や ufw の設定時に間違う.

嵌った所その3:/etc/ipsec.d/examples にある l2tp-psk のサンプル設定には rightsubnet=vhost:%priv が書かれていたのだけど,結果的にこいつがラスボスだった.これを書いておくと IPsec SA が確立しても xl2tpd がそれを使ってくれず通常の経路で通信しようとしてタイムアウト(つまり,クライアントが SCCRP を IPsec 経由で受け取ろうと待ち受けているのに xl2tpd が別経路でお返事するという状況.).tcpdump 使って次のようなログを見るまで気づかなかった.

01:12:32.024312 IP CLIENT.isakmp > SERVER.isakmp: isakmp: phase 1 I ident
01:12:32.050034 IP SERVER.isakmp > CLIENT.isakmp: isakmp: phase 1 R ident
01:12:32.116247 IP CLIENT.isakmp > SERVER.isakmp: isakmp: phase 1 I ident
01:12:32.139008 IP SERVER.isakmp > CLIENT.isakmp: isakmp: phase 1 R ident
01:12:32.168086 IP CLIENT.4500 > SERVER.4500: NONESP-encap: isakmp: phase 1 I ident[E]
01:12:32.179503 IP SERVER.4500 > CLIENT.4500: NONESP-encap: isakmp: phase 1 R ident[E]
01:12:32.191284 IP CLIENT.4500 > SERVER.4500: NONESP-encap: isakmp: phase 2/others I oakley-quick[E]
01:12:32.216654 IP SERVER.4500 > CLIENT.4500: NONESP-encap: isakmp: phase 2/others R oakley-quick[E]
01:12:32.228251 IP CLIENT.4500 > SERVER.4500: NONESP-encap: isakmp: phase 2/others I oakley-quick[E]
01:12:32.231720 IP CLIENT.4500 > SERVER.4500: UDP-encap: ESP(spi=0xbb2d745c,seq=0x1), length 148
01:12:33.232121 IP CLIENT.4500 > SERVER.4500: UDP-encap: ESP(spi=0xbb2d745c,seq=0x2), length 148
# この次のが ESP でないといけないのに生のまま……
01:12:34.233618 IP SERVER.l2f > CLIENT.l2f:  l2tp:[TLS](16/0)Ns=0,Nr=1 *MSGTYPE(SCCRP) *PROTO_VER(1.0) *FRAMING_CAP(AS) *BEARER_CAP() |...
01:12:34.233824 IP SERVER.l2f > CLIENT.l2f:  l2tp:[TLS](15/0)Ns=1,Nr=1 *MSGTYPE(StopCCN) *ASSND_TUN_ID(56876) *RESULT_CODE(1/0 Timeout)
01:12:34.234186 IP SERVER.l2f > CLIENT.l2f:  l2tp:[TLS](16/0)Ns=0,Nr=1 ZLB
# クライアントが SCCRP を受け取れないので再び問い合わせる.以下繰り返し.
01:12:35.232021 IP CLIENT.4500 > SERVER.4500: UDP-encap: ESP(spi=0xbb2d745c,seq=0x3), length 148

とりあえず困ったときの tcpdump .Windows だと wireshark つかうけど.

困ったときの debug 設定.

# /etc/ipsec.conf の config setup のところに
klipsdebug=all
plutodebug=all
 
# xl2tpd.conf の [global] のところに
debug tunnel = yes
debug avp = yes
debug network = yes
debug state = yes
debug packet = yes
«Prev || 1 | 2 | 3 |...| 51 | 52 | 53 || Next»
Search
Feeds

Page Top