タグ別アーカイブ: Ubuntu server

Ubuntu serverでNIC毎に宛先ルータを変える

Ubuntu server 12.04 LTSで2枚のNICを使って、それぞれ別のネットワークに接続。先のルータでは別々のプロバイダに接続していて、NICを指定して通信すると、使用回線を切り替えできるようにする。

まず、/etc/sysctl.conf を設定
28行目をコメントアウト

net.ipv4.ip_forward=1

保存したら
sudo sysctl -p
で適用。

次に、/etc/network/interfaces
今回はDHCPを使用せずに設定

auto eth0
iface eth0 inet static
  address 192.168.34.25
  netmask 255.255.255.0
  network 192.168.34.0
  gateway 192.168.34.254
  
auto eth1
iface eth1 inet static
  address 192.168.206.25
  netmask 255.255.255.0
  network 192.168.206.0

見ての通り、デフォルトのGWは192.168.34.254で、もう一方のネットワークにはGWを指定しない。

次に、/etc/network/if-up.d/routes
を新規に作成

#!/bin/sh
IF1=eth0
IF2=eth1
IF1_IP=192.168.34.25
IF2_IP=192.168.206.25
GATEWAY1_IP=192.168.34.254
GATEWAY2_IP=192.168.206.254
IF1_NET=192.168.34.0/24
IF2_NET=192.168.206.0/24
ROUTING1_NAME=gate1
ROUTING2_NAME=gate2

case $IFACE in
"eth0")
  # eth0
  /sbin/ip route add $IF1_NET dev $IF1 src $IF1_IP table $ROUTING1_NAME
  /sbin/ip route add default via $GATEWAY1_IP table $ROUTING1_NAME
  /sbin/ip rule add from $IF1_IP table $ROUTING1_NAME
;;

"eth1")
  # eth1
  /sbin/ip route add $IF2_NET dev $IF2 src $IF2_IP table $ROUTING2_NAME
  /sbin/ip route add default via $GATEWAY2_IP table $ROUTING2_NAME
  /sbin/ip rule add from $IF2_IP table $ROUTING2_NAME
;;
esac

保存したら実行権限を与える事。
ここはinterfacesで指定したIPなどと一致させるように記述。
あと、ROUTING1_NAMEとROUTING2_NAMEを覚えておくこと。

次に、/etc/iproute2/rt_tablesを設定

200 gate1
201 gate2

を追記。gate1, gate2 はroutesで設定したROUTING1_NAME, ROUTING2_NAMEと一致させる。

最後に、DHCP環境じゃなくても/etc/resolv.confが勝手に書き換わるようなので
/etc/resolvconf/resolvconf.d/base を書き換える。

nameserver 192.168.34.15
nameserver 192.168.34.12

これで再起動すると反映される。

pt2を多摩テレビ(CATV)で使う

今更だけどメモ。うちはテレビも無かったので、CATVのチャンネルがわからなくて苦労したので。

主にrecpt1とかepgrecの設定に使うチャンネル番号と局名の対応

C37: フジテレビ
C38: TBS
C39: テレビ東京
C40: テレビ朝日
C41: 日本テレビ
C42: NHK教育
C43: NHK総合
C44: 東京MX
C45: TVK
C46: テレ玉

最初総当りでチャンネル調べて、目視で局ロゴみて判定した。
他は特にCATVだからといって違う部分は無い。

Macのsambaをマウントする時、濁点と半濁点が化ける

MacのsambaをLinuxでマウントしたら、濁点と半濁点が文字化けした。んで、その時の対応策。Windows7では化けなかった。

Mac側のsmb.confで

unix charset=UTF-8-MAC

を指定する。UTF-8-MACは、Appleがiconvを拡張した物らしいので、Mac以外でlibiconvを使っているソフトでは使えないらしい。

Linux側の/etc/fstabで

iocharset=utf8

を指定する。

subversion1.6から1.7に移行する手順

subversionのサーバをFreeBSDに変更したら、portsのsubversionがデフォルトで1.7になってたので、Linux,Macを含めて移行した。

dumpで1.6の旧サーバからバックアップ
旧サーバはUbuntu server 11.04

svnadmin dump /var/svn/レポジトリ名 | gzip > ./レポジトリ名.gz

新サーバのFreeBSDではデフォルトオプションでportsからsubversionをインストール。
svnユーザ,グループを作っておいて、svnルート以下の所有者をsvnにしておく

% sudo -u svn svnadmin create /var/svn/レポジトリ名
% gzip -dc レポジトリ名.gz | sudo -u svn svnadmin load /var/svn/レポジトリ名

んで、クライアント
Ubuntuだとパッケージにはまだ1.6しか無いので、ソースからコンパイル
http://ftp.riken.jp/net/apache/subversion/辺りからソースを落としてきて

% ./configure --enable-shared --without-berkeley-db
% make
% sudo make install

でrehashなりしたら1.7.1が使えるようになった

次にMac OS Lion
macportsにも1.7系はまだ無いので、Ubuntuと同じようにコンパイルした。

使えるようになったところで、1.6で管理されてたディレクトリで

% svn st
svn: E155036: Please see the 'svn upgrade' command
svn: E155036: Working copy '/var/www/storage' is too old (format 10, created by Subversion 1.6)

とかしてみると、起こられる。言われるままに

% svn upgrade

を実行したら終わり

Ubuntu server 11.04でwinbindが起動しない

sambaの設定中に気づいたけど、winbindが起動してなかった。

# /etc/init.d/winbind start
 * Starting the Winbind daemon winbind
chgrp: 無効なグループ `winbindd_priv`

明らかにグループがない。
/etc/passwdと/etc/groupを探してみたけど確かに無かったので

# groupadd -r winbindd_priv
# useradd -g winbindd_priv -r winbindd_priv

でグループとユーザを追加してやったら動いた。

11.04ちょっと作り甘いんじゃないの・・・

Ubuntu server でlm_sensors の値をsnmpで送りたい

cactiでlm_sensorsのファンとか温度とかグラフ化出来そうだったので、snmpd側の設定をしてた。
中々上手く行かなくてソースから入れてみたりしたけど、snmpwalkでディスクの情報を取得するとsnmpdが落ちる謎の現象に見舞われたので、結局パッケージからインストールして取得できた。

まずインストール

% sudo aptitude install snmp
% sudo aptitude install snmpd

あと、参考サイトにやれと書いてあったので一応やったけど

% sudo snmpconf -i -g basic_setup

対話式で設定ファイルを作るものらしいけど,全然basicじゃないわ・・・
で、最後までやったら /usr/share/snmp/snmpd.conf が作られるので、それを /etc/snmp/snmpd.conf にコピーして、ちょっと修正。

参考までに snmpd.conf

あとはsnmpdを再起動したらいける・・・はず。

以下ソースからインストールして、ディスク情報を取るとsnmpdが落ちたやり方。(lm_sensorsの値は取れる)
続きを読む Ubuntu server でlm_sensors の値をsnmpで送りたい

Ubuntu serverのNFSをMac OS X 10.7.1でマウント

yousanに聞かれて試行錯誤してたんだけど、うまくいかなかったので、自分の環境でもやってみた。
元々うちではNFSを使ってなかったんだけど、よく考えたらNISも入れてるし、MacとWindows以外はUIDもGIDも同じなので、ちょっと使ってみることにした。

まず、Macで
/アプリケーション/ユーティリティ/ディスクユーティリティ.app
(/Applications/Utilities/Disk Utility.app)
を開いて、メニューの “ファイル”->”NFS マウント” を開く
左下の+ボタンを押して項目を追加する。

リモートNFSのURLは、少し注意が必要で、nfs://server_address:/path は動作しない
必ず nfs://server_address/path で、コロンを入れない事。
マウント先は好きなように指定して問題なくて、ディレクトリは自分で作る必要が無い。むしろ存在しない方が良い?

で、詳細マウントパラメータには、サーバ側の設定にもよるけど、まず必要なのが
resvportとnolocksとlocallocks
それ以外は環境によって。

後はNFSマウントのウィンドウを閉じようとすると、管理者パスワードを聞かれるので、入力したら終わり。
マウント先をlsしてみるとマウントされてると思うけど、サーバがUbuntuの場合はおそらく、UID/GIDが1000から開始されるので、Macの501から開始と食い違ってる。map_staticとか試してみたけど、反映されなかったのでMac側のUID/GIDを変更することにした。

一応、sudo suでルートのターミナルを作ってそこで作業する
MacのUIDが501 GIDが20
UbuntuのUIDが1000 GIDが1000
の場合

#dscl . -change /Users/username UniqueID 501 1000
#dscl . -create /Groups/groupname
#dscl . -create /Groups/groupname name groupname
#dscl . -create /Groups/groupname gid 1000
#dscl . -change /Users/username PrimaryGroupID 20 1000
#dscl . -append /Groups/staff GroupMembership yubird

で、Macのユーザ所有ファイルなどのパーミッションがおかしくなったので修正

#cd /Users
#chown -R username:groupname username

もしかしたらApplicationsでも、ドラッグアンドドロップで追加した物がおかしくなってるので、同様にchownしてやればいい。
id username の結果が良さそうなら再起動して、マウント出来ている事を確認

scpで指定アドレスを使用してコピーする

ルータにプロバイダが2本設定されていて、ローカルのIPアドレス毎にどちらを使うか振り分けている環境で、明示的にどちらを使うか振り分けたい事があったのでメモ。
具体的にはリモートに数十GBのファイルをUPしたいけど、うちで使っているOCNでは、一日に30GB以上のUPは規制対象なので、上手いことやりたいって感じ。

UbuntuでIPアドレスを複数設定してやる。
/etc/network/interfacesに記述。
bondingもしているので、ちょっと普通と記述が違うけど。

iface eth0 inet manual
iface eth1 inet manual

auto bond0
iface bond0 inet static
address 192.168.34.1
netmask 255.255.255.0
network 192.168.34.0
broadcast 192.168.34.255
gateway 192.168.34.100
slaves eth0 eth1
bond-mode 0
bond-miimon 100

auto bond0:0
iface bond0:0 inet static
address 192.168.34.2
netmask 255.255.255.0

eth0, eth1を束ねたbond0に2つのローカルアドレス(192.168.34.1, 192.168.34.2)
を設定してる。
設定したら、sudo /etc/init.d/networking restartか再起動で。

あとはルータ(ix2015)で

ip access-list secondary permit ip src 192.168.34.2/32 dest any

route-map ocn2 permit 10
  match ip address access-list secondary
  set interface FastEthernet0/0.2

みたいな事をしてやれば、192.168.34.2のローカルアドレスは、外部に出る時、2本目のプロバイダを使用する。

で、scpの方は簡単で

scp -o BindAddress=192.168.34.2 ./localfiles remote.address:~/

で出来た。ちなみにwgetでも –bind-addressで指定できるし、sshでも -b で出来る。

subversionのサーバを移行する手順

svnのサーバを別のマシンにする必要があったので、自分用メモ。
Ubuntu server 9.10 => Debian GNU/Linux 6.0

旧サーバのUbuntu側で
svnadmin dump /var/svn/レポジトリ名 | gzip > ./レポジトリ名.gz
てのをレポジトリ毎にやって
新サーバのDebianで
svnadmin create /var/svn/レポジトリ名
をレポジトリ分やって
gzip -dc レポジトリ名.gz | svnadmin load /var/svn/レポジトリ名
でバックアップを復元する。

後は、参照先を新しいサーバに変更する。
svn switch –relocate –username ユーザ名 svn://古いサーバ/レポジトリ/ svn://新しいサーバ/レポジトリ/

Ubuntu server 10.04LTSでLDAPサーバ構築(2)

続き。PAM関連の設定。とりあえずLDAPでログイン出来るようにしてみる。

必要なパッケージのインストール
sudo apt-get install libnss-ldap
途中、対話式に設定をする画面になるので、設定する。
必要なら完了後、sudo dpkg-reconfigure ldap-auth-configで再度設定できる。
LDAPログインを有効にする
sudo auth-client-config -t nss -p lac_ldap
/etc/pam.d/common-passwordの編集
26行目
password [success=1 user_unknown=ignore default=die] pam_ldap.so authtok try_first_pass
の、authtokを消去。
ユーザは存在するがホームディレクトリが存在しない場合に、自動でホームディレクトリを作成するようにする。
/etc/pam.d/にあるcommon-sessionとcommon-session-noninteractiveに追記
session required pam_mkhomedir.so skel=/etc/skel umask=0022
PAMのアップデート
sudo pam-auth-update

これで、frontend.ldifに記述したテストユーザでログイン出来た。