ページ

ラベル linux の投稿を表示しています。 すべての投稿を表示
ラベル linux の投稿を表示しています。 すべての投稿を表示

2013-06-07

301リダイレクト[Jekyll, RedirectMatch]

Jekyllでpermalinkを
permalink: /post/:year/:month-:day/:title.html
の様に変更したのだが、それに応じた検索エンジンへの対応として
301 リダイレクトを使って転送をすることにした。


301リダイレクト自体はapacheの機能である.htaccessファイルを設定する事で行った。
ErrorDocument 404 http://www.sample/404.html
RedirectMatch 301 /post/(.*)/(.*)/(.*)/ http://www.sample/post/$1/$2/$3.html
リダイレクトは2行目でリダイレクトマッチを使っている。
一応書いておくとポストしていたページが
http://www.sample/post/year/month-day/title/
といった形でインデクシングされていたのでこういうリダイレクトをしている。

2012-05-03

Archlinuxで時間を合わせる

・時刻の設定に関する用語説明


system clock
表示されている時間 ←直したいと初めに思う時間のはず
hardware clock
ハードに設定されている時間

PCにはシステムクロックハードウェアクロックの2種類の時計があり、
表面上で普段目にしている時間はシステムクロックの時間である。



時間を直す方法

PCの時間が狂ってしまっている場合、まず大抵の場合システムクロックがずれていて、
ハードウェアクロックは正常な時間を示している。


なので
hwclock --show

とhwclock(ハードウェアクロック)の時間を確認すれば、正しい時間を示しているはず。

その場合は以下のコマンドでハードウェアクロックの時間をシステムクロックに合わせる事で時間を直す事ができる。
hwclock --hctosys


もしも hwclock --show で表示される時間もずれていた場合は、
ntpを使うか、手動で合わせるかなのだが、
以下に手動で合わせる方法を書いておく。


date MMDDhhmmYYYY ←システムクロックの時間を指定した時刻に合わせる
hwclock --systohc ←(システムクロック→ハードウェアクロック)
hwclock --hctosys
または
hwclock --set --date="YYYY-MM-DD hh:mm:ss"
hwclock --hctosys



2012-04-20

リダイレクション、パイプライン等についてのまとめ

端末、シェルスクリプトのリダイレクション(>)やパイプライン(|)といった
メタキャラクタについてのまとめ


・標準入力、標準出力、標準エラー出力とチャネルの対応
  • 標準入力 →チャネル0
  • 標準出力 →チャネル1
  • 標準エラー出力→チャネル2

入力が0,出力が1,エラーが2と対応していることを覚ればいい。

また、通常の場合、入力はキーボード、出力とエラーは画面とつながっている。





(出力)リダイレクション

% command argument … > file ←新規作成
% command argument … >> file ←内容追加

チャネル1の接続先を画面からファイルに変更し、出力がファイルに書き出される。
出力を切り替えるために出力リダイレクションという。

また別の出力先としてエラー出力があるが、これはエラーを出力するためのチャネルであり上のコマンドでも、チャネル1の接続先のみがファイルに接続されていて、標準エラー出力のチャネル2は画面に接続されたままなのでエラーは画面で確認することができる。

以下に使うであろうパターンを列挙しておく。


出力リダイレクションパターン

% command argument … > file 2>&1 ←チャネル1にチャネル2を合流
% command argument … 1> fileA 2> fileB ←チャネル1とfileA,チャネル2とfileBを接続
% commend argument … > fileA 2> fileB ←チャネル1とfileA,チャネル2とfileBを接続
% command argument … > dev/null 2>&1 ←チャネル1とチャネル2をnullに接続




パイプライン

% command1 argument … | command2 argument … ←command1の出力をcommand2の入力に接続する。

パイプラインは前方のコマンドの出力であるチャネル1と後方のコマンドの入力であるチャネル0を接続するものである。





その他メタキャラクタ

% command1 argument … ; command2 argument … ←コマンドを順番に実効する。
% command1 argument … & command2 argument … ←コマンドを平行に実行する。

コマンドの実効を制御するメタキャラクタとしては上のようなものがある。






2012-04-17

AURとABSの方法まとめ

AURとABSに関係する記事が分かれているのでまとめとして書いておく。

AUR:[arch user repository]
コミュニティにより、Arch linuxのためのPKGBUILD形式でパッケージが配布されている。mozcとかもある。
ABS:[arch build system]
ビルドを管理するためのシステム,PKGBUILDが入ったABS treeを作る。pacmanでインストール可能

具体的な方法は Arch linuxでAURとABSを使う方法に。

簡単な流れとしては、

  1. ABS、base-develのインストール(pacmanから),ABS設定
  2. AURサイトからPKGBUILDをwget
  3. makepkgでビルド
  4. pacmanでインストール

なんだけれども、3.makepkgでビルドをする時、 makepkg.confを設定しておくと自分の環境に合わせてビルドをすることが可能になる。
具体的な方法は makepkg.confの最適化に。
※デフォルトの設定では多くのPCにインストールが可能なパッケージを作成する設定になっている。

参考リンク(AUR,ABS)

Archwiki::USB_storage_device
Archwiki::udev

参考リンク(makepkg)
gentoowiki::Safe Cflags
Compilation Optimization Guide
Archwiki::makepkg



2012-04-09

makepkg.confの最適化

arch linuxでmakepkgをする時の設定がデフォルトのままだったので、
makepkg.confを書き換え、最適化を行った。

設定項目のMAKEFLAGS, CFLAGS, CXXFLAGS は make, gcc, g++で使われる。
デフォルトの設定では多くのPCがインストールができるように一般的なパッケージが生成されるので、
これを自分専用の設定にするとパフォーマンスが上がるとのこと。

使用しているcpuの情報
cat /proc/cpuinfo

一応自分の設定(Atom)
# /etc/makepkg.conf
########################################################################
# ARCHITECTURE, COMPILE FLAGS
#########################################################################

CFLAGS="-march=atom -O2 -fomit-frame-pointer -pipe"
CXXFLAGS="${CFLAGS}"


参考リンク
gentoowiki::Safe Cflags
Compilation Optimization Guide
Archwiki::makepkg



2012-04-05

postgresql9.1インストール(2) utf-8

postgreSQLの初期設定がasciiなので設定をutf-8に変更する方法

template0は削除できない。
1.tamplate0をfalseにし、2.tamplate1のdrop。
3.utf-8として作成。4.tamplate1をtrueに変更。
5.接続許可のオプション
UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1';
DROP DATABASE template1;
CREATE DATABASE template1 WITH TEMPLATE = template0 ENCODING = 'UNICODE';
UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1';
UPDATE pg_database SET datallowconn = FALSE WHERE datname = 'template1';


createdb
\l ->UTF8になってる。


参考リンク
PostgreSQL 9.1.3
Archwiki::PostgreSQL



postgresql9.1インストール(1)

postgresqlのインストール方法を忘れていたのでメモ。
  1. インストール、起動設定。
  2. pacman -S postgresql                                                            
    rc.d start postgresql
    deamon(postgresql)
    

  3. user作成
  4. createuser -s -U postgres
    #Enter name of role to add: [いつもloginしているuserの名前]
    

  5. postgres userへの変更方法
  6. #通常userから
    sudo -i -u postgres
    #rootから
    su root
    su - postgres
    

  7. dbの作成、削除
  8. createdb name
    createdb -> username のdbが作成
    dropdb name
    
参考リンク
PostgreSQL 9.1.3
Archwiki::PostgreSQL



2012-04-04

conkyメモ

conkyをインストールして、.conkyrcを作ったのでメモ。

Arch linuxのforumを参考にすると気に入るものができるはず
作ったconkyrc

update_interval 5
alignment middle_right
background yes
double_buffer yes
total_run_times 0

stippled_borders 0
border_width 2
default_color grey
default_outline_color white
default_shade_color grey
draw_borders no
draw_graph_borders yes
draw_outline no
draw_shades no
gap_x 40
gap_y 40
minimum_size 100 500
maximum_width 500
cpu_avg_samples 2
net_avg_samples 2
no_buffers yes
out_to_console no
out_to_stderr no
extra_newline no

own_window yes
own_window_class Conky
#own_window_transparent yes
#own_window_type desktop
own_window_type dock
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager

stippled_borders 0
uppercase no
use_spacer right
mpd_host 0.0.0.0
mpd_port 6600
use_xft yes
#xftfont Courier 10 Pitch 426:size=8
xftfont DejaVu Sans:size=8
xftalpha 0.8
# fef7b2 e18522}
# stuff after 'TEXT' will be formatted on screen
TEXT
${if_running audacious}${execpi 3 ~/.conky/audacious-info.sh}${endif} 
${font Arial:size=9}${color #e43526}System ${color DarkSlateGray}${hr 2}${font}
${color #597DB2}Kernel  : ${color grey}$kernel ${color #597DB2}${alignr}Uptime: ${color grey}$uptime
${color #597DB2}Host     : ${color grey}${nodename}${color #597DB2}${alignr}${time %Y.%m.%d}    ${color grey}${time %H:%M}${color}
${color #597DB2}CPU      : ${color grey}${freq}MHz${alignr}$cpu% ${color #597DB2}${cpugraph 6,150 000000 0000ff}
${color #597DB2}RAM     : ${color grey}$memmax${alignr}$memperc% ${color #597DB2}${membar 6,150}
${color #597DB2}Processor temperature: $color${acpitemp}°C ${color #597DB2}${alignr}Battery: $color ${battery}

${font Arial:size=9}${color #e43526}Disk ${color DarkSlateGray}${hr 2}${font}
${color #597DB2}/   ${alignr}:  ${color grey}${fs_size /}     ${fs_used_perc /}% ${color #597DB2}${fs_bar 6,150 /}
${color #597DB2}/home   ${alignr}:  ${color grey}${fs_size /home}     ${fs_used_perc /home}% ${color #597DB2}${fs_bar 6,150 /home}

${font Arial:size=9}${color #e43526}Network ${color DarkSlateGray}${hr 2}${font}
${color #597DB2}Local IP : ${color grey}${addr wlan0} ${alignr}${color #597DB2}Public IP : ${color grey}${texeci 1800 ~/.conky/externalIp.sh}
${color #597DB2}Down : ${color grey}${downspeed wlan0}${color #597DB2}${alignr}Total : ${color grey}${totaldown wlan0}
${color #597DB2}Up     : ${color grey}${upspeed wlan0}${color #597DB2}${alignr}Total : ${color grey}${totalup wlan0}

${font Arial:size=9}${color #e43526}Processes ${color DarkSlateGray}${hr 2}${font}
${color #597DB2}Processes: ${color grey}$processes  ${alignr}${color #597DB2}Running: ${color grey}$running_processes
${color #597DB2}CPU Usage ${alignr}PID   CPU%  MEM%
  ${color grey}${top name 1}${alignr}${top pid 1}  ${top cpu 1}  ${top mem 1} 
  ${color grey}${top name 2}${alignr}${top pid 2}  ${top cpu 2}  ${top mem 2} 
  ${color grey}${top name 3}${alignr}${top pid 3}  ${top cpu 3}  ${top mem 3} 
${color #597DB2}Memory Usage 
  ${color grey}${top_mem name 1}${alignr}${top_mem pid 1}  ${top_mem cpu 1}  ${top_mem mem 1} 
  ${color grey}${top_mem name 2}${alignr}${top_mem pid 2}  ${top_mem cpu 2}  ${top_mem mem 2} 
  ${color grey}${top_mem name 3}${alignr}${top_mem pid 3}  ${top_mem cpu 3}  ${top_mem mem 3} 
${font Arial:size=9}${color #e43526}Weather ${color DarkSlateGray}${hr 2}${font}
${color grey}${texeci 3600 weather}


参考リンク
audacious+conky

2012-04-03

Arch linuxでUSBを読み取る

thunarとudevをインストールしていたら、
USBは自動的に読み取れるとか思っていたが読み取れなかったので、一応覚え書き。

まずmodprobe
modprobe usb-storage
  1. デバイスの場所(UUID or device_node)を見つける

  2. カーネルに割り当てられたデバイスへの識別子(UUID,device_node)を知る必要がある。

    1. device node(/sd*)を使う。
    2. これが最もシンプルな方法。node nameを取得する方法。 dmesgでカーネルデバイスを検索する。
              dmesg|grep "sd[a-z]"
              fdisk -1
      

    3. UUIDを使う。
    4. どのドライブもUUIDを作り。ドライブを識別できる。
              blkid -o list -c /dev/null
              ls -lF /dev/disk/by-uuid/
      

  3. USBをマウントする。


    1. デバイスをマウントするディレクトリを作成
    2.     mkdir /mnt/usbstick
      

    3. rootユーザで
    4.     mount device_node /mnt/usbstick
          mount -U UUID /mnt/usbstick
      

    5. normalユーザで(/dev/sdb1は読み取ったUSB)
    6.     sudo mount -o gid=users,fmask=113,dmask=002 /dev/sdb1 /mnt/usbstick
      


参考リンク

Archwiki::USB_storage_device
Archwiki::udev




2012-03-27

linux の標準的なファイルシステム構造

linuxを使う上で一度
/bin,/sbin,/usrなどのファイルシステムにおいての
ディレクトリ構造についてまとめておく

/:ルートディレクトリ。木構造の最も上に位置する。
/bin:基本コマンドディレクトリ。awk,ls,cpといった基本的なコマンドのバイナリファイルが入っている。
/sbin:システムコマンドディレクトリ。システム管理者が扱うような基本的なコマンドが入っている。
/etc:管理用ディレクトリ。管理者が設定をする、システムの様々な設定ファイルが含まれる。
/lib:基本ライブラリディレクトリ。基本のライブラリファイル、コマンドとして直接には呼び出さないプログラムが含まれる。
/dev:デバイスファイル。デバイスを読み込むためのファイルが含まれる。
/opt:オプションパッケージ。追加プログラムを格納する場所だが/usr/optと役割が被っている。
/tmp:作業用ディレクトリ。一時的な作業は/tmpで行われ、ここはアクセスが高速。だけれどもリブートすると消えてしまうので困る場合は/var/tmpで。
/var:更新されるファイル用のディレクトリ。更新されるファイルを/varに集めることで/usr以下などを書き換える必要がなくなる。作業用ファイルの/var/tmp,ログファイルの/var/logなどがある。
/usr:システムの核以外のファイルやディレクトリを/usrに入れていく。

/usr以下に/usr/bin,/usr/sbin,/usr/local/binと続いていく。



Arch linuxのGUI環境設定(openbox,slim,tint2)

Arch linux 自分の環境での
主にopenbox,slim,tint2での
GUI関係設定。

1.openboxのメニューをmenumakerを使って生成する。
pacman -S menumaker
#menu.xmlの自動生成
mmaker -v OpenBox3  #menu.xmlがあったら上書きしない
mmaker -vf OpenBox3 #forceでmenu.xmlがあっても上書きする。

2.slimのログイン画面をarchlinux-themes-slimで変更する。

pacman -S archlinux-themes-slim
#テーマ一覧
ls /usr/share/slim/theme/
#テーマプレビュー、loginの所にexitで終了
slim -p /usr/share/slim/theme/[theme name]
#/etc/slim.confの編集
current_thema [theme name] #<-変更したい[theme name]

3.tint2のtintwizardを使った設定
panelを表示するtint2だが、案外とGUIのtintwizardを
使った設定が簡単だった。

#tintwizardの場所
pacman -Ql tint2
#->tint2 /usr/bin/tintwizard.py
python2 /usr/bin/tintwizard.py #GUI起動


tint2を画面の上部と下部、であったり複数よびだすには

tint2 -c ~/.config/tint2/[savefilename1] &
tint2 -c ~/.config/tint2/[savefilename1] &

とすればいいはず。



Arch linuxでAURとABSを使う方法

Arch linuxでscreenshotを取るためのshutterってAURパッケージのアプリケーションが使用したかったために、
AURとABSの使い方をまとめておく

AURとABSとはなにか?
AUR:[arch user repository]コミュニティにより、Arch linuxのためのPKGBUILD形式でパッケージが配布されている。mozcとかもある。
ABS:[arch build system]ビルドを管理するためのシステム,PKGBUILDが入ったABS treeを作る。

AURとABSの使い方。

1.ABSのインストール、設定
パッケージのabsとbase-develをpacmanでインストールし、
次にabs.confを設定、REPOSの!を外す。
そしてabsコマンドを打つと、abs treeが作成される。

pacman -S abs base-devel
vim /etc/abs.conf##編集
REPOS=(core extra community testing etc)#<-!を全てはずす
abs #<-absツリーが/var/absにできる

2.AURからパッケージのインストール

パッケージをインストールするにはAURをサイトから検索する、(このサイトはarch linuxの公式サイトからいける)
欲しいパッケージを見つけたらsourceではなく、PKGBUILDのURLをwgetする。

wget https://aur.archlinux.org/packages/sh/shutter/PKGBUILD

ちなみに検索をしなくても/packages/sh/shutter/PKGBUILDの部分が他のパッケージも共通で
mozcなら/packages/mo/mozc/PKGBUILDって風に/先頭2文字/パッケージ名/になってるっぽい。

PKGBUILDを入手したらば、必要に合わせて編集。
makepkg -s ##引数はいらない、PKGBUILDが読み込まれる.
#perl-gtk2-imageviewがない
    wget https://aur.archlinux.org/packages/pe/perl-gtk2-imageview/PKGBUILD
    makepkg -s
    sudo pacman -U perl-gtk2-imageview*.pkg.tar.xz #makepkgで*pkg.tar.xzができてpacman -U でインストールできる
#perl-gtk2-unique
    wget https://aur.archlinux.org/packages/pe/perl-gtk2-unique/PKGBUILD
    makepkg -s
    pacman -U *.pkg.tar.xz
#perl-proc-simple
    wget https://aur.archlinux.org/packages/pe/perl-proc-simple/PKGBUILD
    makepkg -s
    pacman -U *.pkg.tar.xz
#省略
# shutter の PKGBUILDがあるフォルダ
makepkg -s
sudo pacman -U *.pkg.tar.xz

これで、AURからインストールすることができる。

補足としてのmakepkgコマンド
makepkg -c #clean のことで、複数ファイルのビルド、アップデート、などで使える。廃
止されたファイルなどを新しいビルドにしてくれる。

makepkg -s #もし依存関係が求められるとしたら、失敗をする前に警告をしてくれる。

makepkg -i #pacman -Uまでやってくれる。

参考リンク

Arch wiki::Arch Build System
Arch wiki::Arch User Repository
Arch linux::AUR
Archwiki::makepkg



2012-03-26

Arch linuxの気になっていたこと

今回は前回までのArch linuxのインストールで
気になってた事についてをまとめた。

以下の事について調べた、
・acpid
・HAL
・dbus
ちなみにacpidとHALについては使用をしておらず,dbusは使用している。

acpid :ACPIのイベントを柔軟に拡張するためのデーモンを提供する。このacpidが存在すると電源ボタンやスリープ、サスペンドボタンを押すこと、ノートPCの蓋を閉じることAC電源アダプタをノートPCに接続しておけるようになるとのこと。

ちなみにACPIとは、
ACPI[Advanced Configuration and Power Interface]:APMという昔の電力管理方式から、OSが電力管理をできるようにした電力制御規格。

それで、私のノートPCでは端末でhaltとか打ち込んでるから、ボタンが使用可能になるという機能は必要なくて、最後のAC電源も充電されてるし、最後の部分はいまいち意味が分かってない。まあ、電源関係で困ったら入れるかも。

HAL[hardware abstraction layer]:HALはArch linuxの公式リポジトリから外れ、現在ではudev/PolicyKitが使われている。 HALはアプリケーションがHALを通す事で簡単にハードウェアにアクセスする事ができる物であったが、結果的にデバイスを全てHALを通しアクセスさせるという事で、HALは巨大化しメンテナンスがしづらくなってしまった。そうして、廃止の方向に進み、現在Arch linuxではudevに置き 換えられている。ってところ、それとHALにしか対応していないアプリケーションもまだ少数ではあるが存在しているということらしい。

dbus[desktop bus]:アプリケーションとアプリケーションの通信、アプリケーションとOSの通信といった、IPC(プロセス間通信)を行うのだが、簡素で無駄がような方法らしい。

参考リンク
Archwiki::acpid
Archwiki::HAL
Archwiki::D-Bus



2012-03-25

Arch linux設定(その他)

Arch linuxの設定は前回までで気づいている必要なことは できたのだが,
その後、pacmanで入れたアプリケーションをまとめておく。
python:python3.2
ruby:ruby1.9
vim:編集
postgresql:データベース
apache:サーバ
lxterminal:lxde端末
lha,unrar,unzip,p7zip,file-roller::ファイルの解凍、圧縮関係
flashplugin::フラッシュを使用するため
firefox,firefox-i18n-ja:firefoxと日本語化プラグイン
libreoffice,libreoffice-ja:libreofficeと日本語化
feh:軽量の画像表示、デスクトップの表示とかにも使える。



2012-03-24

Arch linuxの設定( GUI openbox)

Arch linuxのGUI関係がまとまったので書いておく、
WE:openbox
FM:thunar
パネル:tint2
日本語入力:ibus

こんなところか、以下設定方法。

まずは基本のX関係をインストールする
pacman -S xorg-server xorg-xinit xorg-utils xorg-server-utils mesa xorg-twm xorg-xclock xterm

次にPCのVGAに合ったビデオドライバ、xf86-video-?をインストール
lspci|grep VGA
pacman -Ss xf86-video|grep less
pacman -S xf86-video-servage

NVDIAだったので以下の2つのグラフィックドライバもインストール
pacman -S xf86-video-nouveau
pacman -S nouveau-dri

他の入力を追加、laptopの場合synapticsでタッチパッド、タッチスクリーン追加
pacman -Ss xf86-input|less
pacman -S xf86-input-synaptics

dbus,slim,consolekit,openbox,ibus,thunar,tint2のインストール
pacman -S dbus slim consolekit openbox obmenu obconf ibus ibus-anthy thunar thunar-archive-plugin thunar-media-tags-plugin thunar-volman tint2
rc.d start dbus

deamons=(…dbus…)

各種設定
設定の準備
デフォルトの~/.xinitrcの作成
 cp /etc/skel/.xinitrc ~/.xinitrc

デフォルトの~/.config/openboxの作成
 mkdir -p ~/.config/openbox
  cp /etc/xdg/openbox/{rc.xml,menu.xml,autostart,environment} ~/.config/openbox

・/etc/slim.confの編集
numlock off 
    ssessions openbox
    default_user hoge
    #current_thema hoge

・~/.xinitrcの編集 以下を追加
  export PATH=$HOME/bin:$PATH
    export LC_CTYPE=ja_JP.utf8
    export XMODIFIERS=@im=ibus
    export GTK_IM_MODULE=ibus
    export QT_IM_MODULE=ibus
    /usr/bin/ibus-deamon --xim -d &
    exec ck-launch-session dbus-launch openbox-session

・/etc/X11/xorg.conf.d/10-evdev.confの編集 以下の追加
Section "InputClass"
        Identifier "evdev keyboard catchall"
        MatchIsKeyboard "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
    Option "XkbRules" "xorg"  <-追加
    Option "XkbModel" "jp106"    <-追加
    Option "XkbLayout" "jp"      <-追加
EndSection
・/etc/inittabの編集
#id:3:initdefault:  <-コメントに
id:5:initdefault:     <-コメントを外す

#x:5:respawn:/usr/bin/xdm -nodaemon    <-コメントに
x:5:respawn:/usr/bin/slim >/dev/null 2>&1  <-コメントを外す
デーモンにslimの追加 deamon=(slim) これで動作するはず、 tint2はautostartに tint2 & とか追加すれば動く。 参考リンク Archwiki::Openbox Archwiki::Beginners' Guide openboxhelp::Help:Autostart

2012-03-23

Arch linuxの設定(iptables)

Arch linuxのファイヤーウォールとして
iptablesを設定した。


  • iptablesの取得
  • iptablesはpacmanから入手できる。

    pacman -S iptables
  • 必要なチェインの生成
  • # iptables -N TCP
    # iptables -N UDP
    
  • ポリシーの設定
  • # iptables -P FORWARD DROP
    # iptables -P OUTPUT ACCEPT
    
  • INPUT chainのpolicyをdropに設定する。
  • 全てのトラフィックを破棄し、必要なものを指定して許可することがセキュアなファイヤーウォールの作り方らしい。

    # iptables -P INPUT DROP
    
  • ESTABLISHED,RELATEDの許可
  • ESTABLISHED
    確立された既存のパケットと関係のあるパケット
    RELATED
    既存のパケットと関係のある新しいセッションのパケット
    # iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    



  • loopbackの許可
  • loopbak(lo)interfaceは多くのサービスやアプリケーションに必要である。

    loopback
    自分自身に対するデータ通信
    # iptables -A INPUT -i lo -j ACCEPT
    



  • INVALIDの破棄
  • invalid状態のトラフィックを全て破棄すること。

    トラフィックは状態により、NEW,ESTABLISHED,RELATED,INVALIDという4つのカテゴリに分けられる。

    そして、"stateless"firewallよりもセキュアな"stateful"firewallを作ることが可能。

    # iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
    


  • ICMP echo requestの許可(ping)
  • PCがルータでなくなってから、他に状態NEWのICMPトラフィックは許可する必要はない。

    # iptables -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
    


  • OPEN chainsの設定
  • トランスポート層でありネットワーク層のIPとセッション層のプロトコル橋渡しする。

    UDP
    user datagram protocol
    TCP
    transmission control protocol

    新しい接続はsyn packetで始まる。

    # iptables -A INPUT -p udp -m conntrack --ctstate NEW -j UDP
    # iptables -A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP
    



  • RST TCPコネクションと、ICMP port unreacheのUDP streamは拒絶(REJECT)する。
  • これはデフォルトのLinuxのふるまい(RFC準拠)を模倣しており、接続停止の素早い許可と整理がなされる。

    REJECT:dropとは違い、拒絶したことが送り側に返される。

    RST:syn を送り、接続できなかった場合RSTパケットが送られてくる。

    # iptables -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
    # iptables -A INPUT -p tcp -j REJECT --reject-with tcp-rst
    



  • 他のプロトコルのための設定。
  • これはデフォルトのLinuxの振る舞いを模倣している。

    # iptables -A INPUT -j REJECT --reject-with icmp-proto-unreachable
    

    以下ではFTP,SMPT,WEBを許可している。



    FTPの許可
    # iptables -A TCP -p tcp --dport 20 -j ACCEPT
    # iptables -A TCP -p tcp --sport 20 -j ACCEPT
    # iptables -A TCP -p tcp --dport 21 -j ACCEPT
    # iptables -A TCP -p tcp --sport 21 -j ACCEPT
    


    SMTP(送信)の許可
    # iptables -A TCP -p tcp --dport 25 -j ACCEPT
    # iptables -A TCP -p tcp --sport 25 -j ACCEPT
    


    WEBの許可
    # iptables -A TCP -p tcp --dport 80 -j ACCEPT
    # iptables -A TCP -p tcp --sport 80 -j ACCEPT
    



  • spoofing attack対策(なりすまし)
  • spoofing attackに対応するために/etc/sysctl.confを編集する。

    vim /etc/sysctl.conf
    net.ipv4.conf.all.rp_filter=1
    



  • Hide PC
  • echo リクエストをブロックする。

    vim /etc/sysctl.conf
    net.ipv4.icmp_echo_ignore_all = 1
    

    また、レート制限をすることは不正行為をコントロールするためには良い方法といえる。

    iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 30/min --limit-burst 8 -j ACCEPT
    iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
    



  • ルールのセーブ
  • ここまで行った操作を保存する。

    # /etc/rc.d/iptables save
    



  • boot時の読み込み(/etc/rc.conf::networkの前に書く)
  • boot時にiptablesが読み込まれるようにdaemonの設定をする。

    DAEMONS=(... iptables network ...)
    


サーバ用ではない個人用のPCのファイアーウォールの設定としてArch linuxに以上のiptablesの設定をした。




参考リンク
Archwiki::Simple Stateful Firewall


2012-03-21

Arch linux 設定(sound)

前回に引き続きArch linuxでのsoundの設定についてまとめておく


サウンドドライバについて

まずalsaとossという2つのサウンドドライバのどちらを使うべきなのかで迷ったが、
Archwikiによると現在はalsaが主流でArch linuxにはデフォルトで入っているということ 。



以下にpacmanでインストールするsound関係list

  • alsa-utils:alsamixerが使えるようになる。
  • alsa-oss:ossのサウンドドライバで動作するアプリケーションをalsaで動かす。
  • alsa-plugins:必要ないかもしれない。
pacman -S alsa-utils alsa-oss alsa-plugins
alsamixer   <-sound調節
speaker-test -c 2    <-soundtest
alsactl store       <-設定保存
/etc/rc.confのdeamon=(…@alsa…)と追加 以上の設定でsound設定は問題ないはず。
参考リンク Archwiki:Advanced Linux Sound Architecture

2012-03-19

Arch linux のインストール方法

手持ちのノートPCにArch linuxのインストールを行ったので、
自分の行った設定を忘れたときなどの為にまとめておく。

Arch linux
動作に最低限の状態でインストールをし、ユーザーが必要なパッケージをインストールしていくことで理想的な環境を構築できるディストリビューション。

Arch linuxのインストールを行う。

公式のHPからイメージをDL。その後、
インストールCDを入れて立ち上がったら、まずkeymapの選択を行う。

km          
を入力しその中からjp106を選択する、これで日本語のkeymapになる。次のフォントはskipでよい。

keymapの選択が終わったら

/arch/setup
でarchlinuxのインストールが始まる。


以下はインストール時の設定ファイルである。

/etc/rc.conf
KEYMAP="jp106"
LOCALE="ja_JP.utf8"
HARDWERECLOCK=""<-localtime or UTC HOSTNAME="hoge"





/etc/locale.gen
使用をしてもよいロケールのコメントアウトをはずす。

/etc/hosts
rc.confで入力したhostname は自動で入力されているので編集する必要はないかもしれない。

/etc/pacman.d/mirrorlist
日本のサーバーのチェックを外しておく。

インストール後,pacman -S pacman-mirrorlist で新たなミラーリストを入手可能


GRUBの所で編集画面に入るが、他にOSがなければ編集の必要はない。
あるならば、ファイルの末尾の部分に使用するOSを追加していく。

ここまでで簡単にだがインストール作業が終了。


とりあえずリブートを行っておく。rebootで再起動ができる。haltでシャットダウン。

reboot

パッケージのアップデートも行っておく。
pacman -Syu

ユーザの追加

一般ユーザを作っておき、そちらで作業を行う。

ユーザの追加
adduser
・username:hoge
・Aditional group:audio,lp,optical,storage,video,wheel,games,power,scanner
ユーザの削除
userdel hoge


viのsudoを可能にする

以下の設定はユーザがwheelグループに含まれて入る場合に有効となる。

visudo
#%wheel ALL=(ALL) ALL   <ーコメントアウトを外す

wheel グループのユーザはsudoが使用可能になる。



無線LANへの接続

使用しているデバイスを見る。

lspci |grep -i net

ここからはbroadcomのBCM4312用の設定についてである。Archwikiには他の場合についても書いてある。

pacman -S b43-fwcutter
b43-fwcutter -l

以下のページからファームウェアをダウンロード
http://linuxwireless.org/en/users/Drivers/b43


ファームウェアの展開

tar xjf broadcom-wl-[firmware_version].tar.bz2
export FIRMWARE_INSTALL_DIR="/lib/firmware"
b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" broadcom-wl-[firmware_version]/linux/wl_apsta.o

無線LANを有効にする

modprobe b43
ip link set wlan0 up
iwlist wlan0 scan

ここで無線LANがWPA/WPA2だったのでwpa_supplicant 及び wpa_passphrase を使用する

mv /etc/wpa_supplicant.conf /etc/wpa_supplicant.conf.original
wpa_passphrase ESSID "my_secret_passkey" > /etc/wpa_supplicant.conf
を行い
wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant.conf
でLANに接続
dhcpcd wlan0
でインターネットに接続できるようになる。


ひとまずインストールとしてはここまで、GUI関係はまとまったら
参考リンク
Archwiki

導入メモ:Arch Linux