「その他」の版間の差分
提供: Wikinote
(→/etc/sysconfig/network-scripts/ifcfg-) |
(→ネットワーク起動の流れ) |
||
行177: | 行177: | ||
##* この関数の中身を調査すること。 | ##* この関数の中身を調査すること。 | ||
## "Bringing up interface ''IF'':" を表示し、<code>./ifup ''IF'' boot</code> を実行 | ## "Bringing up interface ''IF'':" を表示し、<code>./ifup ''IF'' boot</code> を実行 | ||
+ | # スタティックルーティングの設定 | ||
+ | #* <code>/etc/sysconfig/static-routes</code> を 1 行ずつ <code>/sbin/route add</code> しているようだが、渡し方にテクが見られるので、後で調べること。 | ||
+ | # <code>NETWORKING_IPV6=yes</code> ならば、<code>/etc/sysconfig/network-scripts/init.ipv6-global start post</code> を実行 | ||
+ | # 再度 <code>sysctl -e -p /etc/sysctl.conf</code> を実行 | ||
+ | # <code>touch /var/lock/subsys/network</code> を実行 | ||
==== <code>/etc/sysconfig/network</code> 設定ファイル ==== | ==== <code>/etc/sysconfig/network</code> 設定ファイル ==== |
2009年1月19日 (月) 13:22時点における版
居候していた部屋の荷物を自宅に持ち込みました。
- やるべきことは、遠くにぼんやり見えるものを見ることではなく、
- 手近にはっきり見えるものを行うことである。-- トーマス・カーライル
目次
覚え書き
Apache
- /etc/httpd/conf/httpd.conf
とりあえず編集したとこ
ServerName hagio.org:80 DocumentRoot "/home/hagio/public_html" <Directory "/home/hagio/public_html"> ... DirectoryIndex intex.html index.html.var index.php
$ chmod 711 /home/hagio $ chmod 755 /home/hagio/public_html
- 方針
- エンコーディング:UTF-8
awk
- 参考 URL
- The GAWK Manual (2.15.6)
- AWK Language Programming (3.0.4)
- 基本構文
awk [-F sep] 'command' [file ...]
- 組み込み変数
- FS - フィールドセパレータ
- NR - 現レコード数
- NF - フィールド数
- OFS - 出力フィールドセパレータ (print のカンマ区切りのセパレータ)
- ORS - 出力レコードセパレータ
- 演算子
- ~ - マッチしたら真 ($0 ~ /re/)
- 他はほぼ C と同じ
- 制御構文
-
break
,continue
- for や while の中で使う -
next
- 次のレコードへ処理を移す -
exit
- 残りのレコードは見ないで処理を中断
-
- 配列
-
array[i]
- 一次元配列 -
array[i,j,k]
- 三次元配列 -
array[str]
- 連想配列-
for (x in array) ...
ですべてのキーを取り出し可能 -
if (str in array) ...
でキー str があるかどうか -
array[str] = array[str] "hoge"
で連結可能
-
-
- その他
- 変数の初期化は不要
- print $1 $2 で連結出力、カンマ区切りでスペース
-
{ print $0; } = { print; } =
- 配列は参照渡し
- -f program で自作ライブラリを複数取り込める
- $n (n > 0) を書き換えると、$0 も書き換わる
sed
- 基本構文
sed [-n] [-e command] [-f command_file] [file ...]
- -n
- マッチしなかったら表示しない
- アドレス
-
n
- n 行目のみ (最終行 : $) -
m,n
- m 行目から n 行目まで -
n,/str/
- n 行目から str がマッチする行まで
- ※ アドレスの後に
!
を付けると否定
-
- コマンド
- p - 出力
- d - 削除
- y - 一文字置換 (tr コマンドと一緒)
- s - 置換
- q - 終了
- フラグ
- g - 同一行中のマッチをすべて置換
make
- コマンドの前に '-' をつけると、エラーが発生しても make を続ける
- コマンドの前に '@' をつけると、コマンドを標準出力に表示しない
bash
-
export
は、その変数を子プロセスに引き継ぐ場合に用いる。 - Meta キーは ESC キーで代用可。(Poderosa では有用)
起動時の設定ファイルの読み込み順序
- ログインシェルの場合 (ログイン時、su - user 時など)
-
/etc/profile
-
/etc/profile.d/*.sh
-
~/.bash_profile
-
~/.bashrc
-
/etc/bashrc
-
- ログインシェルでない場合 (bash 実行時、su user 時など)
-
~/.bashrc
-
/etc/bashrc
-
/etc/profile.d/*.sh
-
以下のコマンドで確認できる。
# strace -f -e trace=open -o su-bash.strace su - hagio
シェルスクリプト
- $# - 引数の個数なので、スクリプト名は含まない。
- BASH Programming - Introduction HOW-TO
コマンド
- 行末までキル:C-k
- 行頭までキル:C-u
- 前単語をキル:C-w
- ヤンク:C-y
- 直前のコマンドの最後の引き数を挿入:M-. (これは便利)
- キャンセル:C-g
- 後方検索:C-r (これらは使い方が難しい)
- 前方検索:C-s
- 最終行へ:M-> (Poderosa では打ちにくい…)
.bashrc
カスタマイズしたものに慣れてしまうと、素の状態にすぐに適応できなくなってしまうので良くないが、 それでも背に腹は代えられないモノたち。
alias ..='cd ..' alias la='ls -a' alias ll='ls -l' # Red Hat では標準 alias lla='ls -la' alias llh='ls -lh' alias s='screen' alias grep='grep -i --color=auto' # 自動 ls function cd { builtin cd $@; ls } # Ctrl-s でのストップ機能を止める stty stop undef
grep
- or をとりたい場合:-e オプションで羅列
例)
$ ifconfig | grep -e "^\w" -e inet
- 検索文字列をハイライト表示
.bashrc に以下を追加しておく。
export GREP_COLOR='1;37;41' alias grep='grep --color=auto'
ネットワーク
ソースより厳密な説明書はない。
ネットワーク起動の流れ
network
rc スクリプトの動作を追う。
-
/etc/init.d/functions
を実行 (主に関数定義)- 内容はそのうち読む。
-
/etc/sysconfig/network
を読む (設定ファイル) -
NETWORKING=no
でなければ、以下に進む - カレントディレクトリを
/etc/sysconfig/network-scripts/
に変更 -
./network-functions
を実行 (関数定義)- ネットワーク関係の関数定義。これもそのうち読む。
- 処理すべきインターフェースを取得
- こちらで少し詳しく解説。
-
NETWORKING_IPV6=yes
ならば、/etc/sysconfig/network-scripts/init.ipv6-global start pre
を実行-
/etc/sysconfig/network
にNETWORKING_IPV6=no # this option has no effect.
とあるが、これはどういう意味だろうか?
-
-
sysctl -e -p /etc/sysctl.conf
を実行-
-e
オプションは、未知のキーによるエラーを無視する。 -
-p
オプションは、読み込むファイルを指定する。
-
-
./ifup ifcfg-lo
を実行。- いつものログ ("Bringing up loopback interface") は、
action
というコマンドで出力していると思われる。(/etc/init.d/functions
で定義されている。)
- いつものログ ("Bringing up loopback interface") は、
- 以下は、各 (リアル) インターフェース毎に実行される
-
DEVICE, TYPE, SLAVE
値をセット -
DEVICE
がなければ、ifcfg-* の * の部分を DEVICE に設定 -
SLAVE=yes
なら、次のインターフェースへ -
ONBOOT=no
がなければ、is_available IF
を実行- この関数の中身を調査すること。
- "Bringing up interface IF:" を表示し、
./ifup IF boot
を実行
-
- スタティックルーティングの設定
-
/etc/sysconfig/static-routes
を 1 行ずつ/sbin/route add
しているようだが、渡し方にテクが見られるので、後で調べること。
-
-
NETWORKING_IPV6=yes
ならば、/etc/sysconfig/network-scripts/init.ipv6-global start post
を実行 - 再度
sysctl -e -p /etc/sysctl.conf
を実行 -
touch /var/lock/subsys/network
を実行
/etc/sysconfig/network
設定ファイル
参考:15.1.22. /etc/sysconfig/network
-
NETWORKING=yes|no
-
/etc/rc.d/init.d/network
を見ると以下のようになっているため、NETWORKING=no 以外はすべて yes とみなされるようだ。よって、必須ではないと思われる。
# Check that networking is up. [ "${NETWORKING}" = "no" ] && exit 0
-
HOSTNAME=ホスト名
- FQDN を記述する。/etc/sysconfig/network-scripts/ifup-post で設定される。
-
GATEWAY=デフォルトゲートウェイの IP アドレス
-
GATEWAYDEV=ゲートウェイデバイス (eth0 等)
- /etc/sysconfig/network-scripts/ifup-eth0 で設定されているようだが、詳細がよくわからない。
-
NISDOMAIN=NISドメイン名
- NIS は、Network Information Service の略。/etc/rc.d/init.d/ypbind で用いられる。
/etc/sysconfig/network-scripts/ifcfg-<if>
設定ファイル
参考:14.2.1. Ethernet Interfaces
-
ONBOOT=yes|no
- network スクリプトによると、やはり no でなければ yes と言ったことと同じであるようだ。嫌なら嫌とはっきり言いましょう。ちなみに、grep はパターンが出現しなければ 1 となる。-L オプションは、パタンが出現しないときにファイル名を出力するものだが、単に 1 個見つかったらそれ以上検索しないようにしているだけだと思われる。
if LANG=C egrep -L "^ONBOOT=['\"]?[Nn][Oo]['\"]?" ifcfg-$i > /dev/null ; then # this loads the module, to preserve ordering is_available $i continue fi
-
DEVICE=デバイス名
- 設定がない場合、ifcfg-* の * の部分がデバイス名となる。そのため、ifcfg ファイルは適当な名前を付けるとネットワークに支障をきたす恐れがあるので注意。ifcfg ファイルのバックアップは、別ディレクトリに置くかまたは拡張子を必ず .bak か .orig で行うこと。なぜなら、
/etc/rc.d/init.d/network
では以下の部分で読むべきコンフィグファイルを探しているが、ls をフィルタにかけているだけの原始的設計のため。
# find all the interfaces besides loopback. # ignore aliases, alternative configurations, and editor backup files interfaces=$(ls ifcfg* | \ ★ ifcfg で始まるファイル名 LANG=C sed -e "$__sed_discard_ignored_files" \ ★ 無視するファイル名を削除 -e '/\(ifcfg-lo\|:\|ifcfg-.*-range\)/d' \ ★ lo 及び仮想 IP を削除 -e '/ifcfg-[A-Za-z0-9\._-]\+$/ { s/^ifcfg-//g;s/[0-9]/ &/}' | \ ★ ifcfg- 部分を削除し、数字部分を分離 LANG=C sort -k 1,1 -k 2n | \ ★インターフェース名でソート? -k 2n ってなんだ? LANG=C sed 's/ //') ★分離していた数字部分を再び結合
-
$__sed_discard_ignored_files
は/etc/rc.d/init.d/functions
で定義されている。拡張子が .bak か .orig でなければならない理由。あ、~ (チルダ) でも良いのね。
# A sed expression to filter out the files that is_ignored_file recognizes __sed_discard_ignored_files='/\(~\|\.bak\|\.orig\|\.rpmnew\|\.rpmorig\|\.rpmsave\)$/d'
- どういう出力になるか、メモしておこう。
[hagio@k-hagio-ab2 lab]$ ll total 0 -rw-rw-r-- 1 hagio hagio 0 Jan 16 15:12 ifcfg-bond0 -rw-rw-r-- 1 hagio hagio 0 Jan 16 15:12 ifcfg-eth0 -rw-rw-r-- 1 hagio hagio 0 Jan 16 15:13 ifcfg-eth0:0 ★IP エイリアス -rw-rw-r-- 1 hagio hagio 0 Jan 16 15:13 ifcfg-eth0~ ★バックアップ -rw-rw-r-- 1 hagio hagio 0 Jan 16 15:12 ifcfg-eth1 -rw-rw-r-- 1 hagio hagio 0 Jan 16 15:13 ifcfg-eth1.backup ★バックアップ -rw-rw-r-- 1 hagio hagio 0 Jan 16 15:13 ifcfg-eth1.bak ★バックアップ -rw-rw-r-- 1 hagio hagio 0 Jan 16 15:16 ifcfg-hage ★ハゲ☆インターフェース -rw-rw-r-- 1 hagio hagio 0 Jan 16 15:12 ifcfg-lo [hagio@k-hagio-ab2 lab]$ ls ifcfg* | LANG=C sed - "... bond0 eth0 eth1 eth1.backup ★アウトー!! hage ★DEVICE=デバイス名 が正しく設定されていればセーフ
-
HWADDR=MACアドレス
- ifup-eth でチェックされる。
-
BOOTPROTO=none|dhcp|bootp
- static などというものはない!(dhcp と bootp 以外は意味を持たない)
-
IPADDR=IPアドレス
-
NETMASK=ネットマスク
-
NETWORK=ネットワークアドレス
-
BROADCAST=ブロードキャストアドレス
-
- これらは IP アドレスさえ設定すれば、
ipcalc
コマンドで自動的に計算される。
-
DHCP_HOSTNAME=DHCPホスト名
- DHCP サーバに送るホスト名。/etc/dhclient-<if>.conf に以下のように追記される。
$ cat /etc/dhclient-eth0.conf send host-name "k-hagio-ab2"; # temporary RHL ifup addition
-
MASTER=bonding インターフェース名
- bonding で使用する。SLAVE も設定が必要。
-
SLAVE=yes|no
- bonding で利用する。MASTER によって制御されるかどうかを示す。興味深いことに、こちらの設定は yes 以外はすべて意味がない。MASTER にとって、yes と言わない SLAVE は存在価値がないのだ。
-
BONDING_OPTS=オプション
- bonding で利用するオプション。ifup-eth によって、/sys/class/net/デバイス名/bonding/ 配下にファイルが作られる。
-
SRCADDR=IPアドレス
- 送信パケットの IP アドレス
-
USRCTL=yes|no
- ルートユーザ以外がこのインターフェースを制御できるかどうか
-
ETHTOOL_OPTS=オプション
- ethtool に渡されるパラメタ
if [ -n "$ETHTOOL_OPTS" ] ; then /sbin/ethtool -s ${REALDEVICE} $ETHTOOL_OPTS fi
/etc/sysconfig/static-routes
- ルーティング (行頭の any より後ろが
route add
にそのまま渡される。)
netfilter
カーネルの高機能なパケットフィルタリングシステム。
- 私は真にわかりやすい説明を思いついたが、この余白はそれを書くには狭すぎる。-- hagio
tcp_wrappers
/etc/hosts.* を用いたアクセス制御を提供する。
基本的な構文
daemon_list: client_list[:options]
-
daemon_list
- コンマ区切りの実行ファイル名リスト (サービス名ではない)
- ワイルドカードである ALL, EXCEPT も利用可能
-
client_list
- コンマ区切りの以下の要素からなるリスト
- IP アドレス
- ホスト名
- ドットで終わるネットワーク (例:10.34.125.)
- ドットで始まるドメイン名 (例:.hoge.org)
- ネットワーク/ネットマスク (例:192.168.1.0/255.255.255.0) ※/24 ぢゃダメ
- ワイルドカード
- ALL - すべてにマッチ
- EXCEPT - 除外リストを指定できる
- コンマ区切りの以下の要素からなるリスト
例) sshd: ALL EXCEPT .hoge.org
他にもあるけどマニアックすぎる... (LOCAL, UNKNOWN, KNOWN, PARANOID)
サービスが tcp_wrappers に対応しているかどうかの判別には、
ldd
を使って libwrap
がリンクされているか確認すればよい。
[root@localhost root]# ldd /usr/sbin/httpd | grep libwrap [root@localhost root]# ldd /usr/sbin/sshd | grep libwrap libwrap.so.0 => /usr/lib/libwrap.so.0 (0x00b2e000)
ということで、httpd (Apache) は /etc/hosts.* ではアクセス制御ができない。
Excel
- 時刻などの書式のデータを文字列に変換するには
- Excel で変換したいデータをコピーする
- テキストエディタにペーストする
- Excel にペーストする
PowerPoint
- ファイルサイズを小さくする
- 保存オプションの「高速保存」をオフにする
- あらびっくり
VMware
# vmware-vim-cmd vmsvc/power.on 16
教訓
- 自分が納得しなければ、相手を納得させることはできない。
リンク
Linux ルータ構築手順メモ
マシン:Express5800/110Ge どノーマル
- Ethernet ポートが 1 つしかないので、NIC を買ってぶっ挿す (Realtek RTL-8169 チップだった)
- 起動時 F2 で BIOS 設定に移行し、"Advanced" で "Reset Configuration Data" を [Yes] にする
- 起動すると、kudzu により各種設定が行われる。
[root@localhost ~]# cat /etc/modprobe.conf alias eth0 e1000e alias scsi_hostadapter ahci alias eth1 r8169 ★ [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1 # Realtek Semiconductor Co., Ltd. RTL-8169 Gigabit Ethernet DEVICE=eth1 ONBOOT=no ★デフォルトは yes #BOOTPROTO=dhcp ★コメントアウトする HWADDR=00:0a:79:98:df:13
- PPPoE の設定を行う
[root@localhost ~]# adsl-setup Welcome to the ADSL client setup. First, I will run some checks on your system to make sure the PPPoE client is installed properly... LOGIN NAME Enter your Login Name (default root): xxxxx@yyyy INTERFACE Enter the Ethernet interface connected to the ADSL modem For Solaris, this is likely to be something like /dev/hme0. For Linux, it will be ethX, where 'X' is a number. (default eth0): eth1 Do you want the link to come up on demand, or stay up continuously? If you want it to come up on demand, enter the idle time in seconds after which the link should be dropped. If you want the link to stay up permanently, enter 'no' (two letters, lower-case.) NOTE: Demand-activated links do not interact well with dynamic IP addresses. You may have some problems with demand-activated links. Enter the demand value (default no): no DNS Please enter the IP address of your ISP's primary DNS server. If your ISP claims that 'the server will provide dynamic DNS addresses', enter 'server' (all lower-case) here. If you just press enter, I will assume you know what you are doing and not modify your DNS setup. Enter the DNS information here: server PASSWORD Please enter your Password: Please re-enter your Password: USERCTRL Please enter 'yes' (three letters, lower-case.) if you want to allow normal user to start or stop DSL connection (default yes): yes FIREWALLING Please choose the firewall rules to use. Note that these rules are very basic. You are strongly encouraged to use a more sophisticated firewall setup; however, these will provide basic security. If you are running any servers on your machine, you must choose 'NONE' and set up firewalling yourself. Otherwise, the firewall rules will deny access to all standard servers like Web, e-mail, ftp, etc. If you are using SSH, the rules will block outgoing SSH connections which allocate a privileged source port. The firewall choices are: 0 - NONE: This script will not set any firewall rules. You are responsible for ensuring the security of your machine. You are STRONGLY recommended to use some kind of firewall rules. 1 - STANDALONE: Appropriate for a basic stand-alone web-surfing workstation 2 - MASQUERADE: Appropriate for a machine acting as an Internet gateway for a LAN Choose a type of firewall (0-2): 2 Start this connection at boot time Do you want to start this connection at boot time? Please enter no or yes (default no):yes ** Summary of what you entered ** Ethernet Interface: eth1 User name: xxxxx@yyyy Activate-on-demand: No DNS addresses: Supplied by ISP's server Firewalling: MASQUERADE User Control: yes Accept these settings and adjust configuration files (y/n)? y Adjusting /etc/sysconfig/network-scripts/ifcfg-ppp0 Adjusting /etc/ppp/chap-secrets and /etc/ppp/pap-secrets (But first backing it up to /etc/ppp/chap-secrets.bak) (But first backing it up to /etc/ppp/pap-secrets.bak) Congratulations, it should be all set up! Type '/sbin/ifup ppp0' to bring up your xDSL link and '/sbin/ifdown ppp0' to bring it down. Type '/sbin/adsl-status /etc/sysconfig/network-scripts/ifcfg-ppp0' to see the link status.
- セキュリティ向上のため、不要なサービスを停止する
- apmd, atd, cups, sendmail など。まだありそう
- ip_forward を許可する
# vi /etc/sysctl.conf : # Controls IP packet forwarding net.ipv4.ip_forward = 1 ★ :
- iptables 設定用のシェルスクリプトを書く (参考)
#!/bin/sh IPTABLES='/sbin/iptables' # リセット $IPTABLES -F $IPTABLES -t nat -F # ポリシーの設定 $IPTABLES -P INPUT DROP $IPTABLES -P FORWARD DROP $IPTABLES -P OUTPUT ACCEPT # INPUT チェイン $IPTABLES -A INPUT -p icmp -j ACCEPT #$IPTABLES -A INPUT -p tcp --dport 80 -j ACCEPT $IPTABLES -A INPUT -i lo -j ACCEPT $IPTABLES -A INPUT -i eth0 -s 192.168.1.0/24 -j ACCEPT $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # FORWARD チェイン $IPTABLES -A FORWARD -i eth0 -o ppp0 -s 192.168.1.0/24 -j ACCEPT $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # POSTROUTING チェイン $IPTABLES -t nat -A POSTROUTING -o ppp0 -s 192.168.1.0/24 -j MASQUERADE # 設定の確認 $IPTABLES -L $IPTABLES -t nat -L
- Linux をルータとして使うための Mac の設定
- システム環境設定 → Ethernet
構成:手入力 IP アドレス:192.168.1.11 サブネットマスク:255.255.255.0 ルーター:192.168.1.10 (Linux の IP アドレス) DNS サーバ:xxx.xxx.xx.xx (Linux 上での dig の結果) ★固定でいいのか? 検索ドメイン:
ここまで完了。Mac からネットが使えるようになった。
トド (To Do)
- サーバ名を考える
- iptables をマスターする
- Apache + PHP を動かす (日記システムを作り直すか?)
- DHCP を立てた方がいいのか?
- DNS はどうするか?
- 固定 IP オプションを申し込むか?