「その他」の版間の差分

提供: Wikinote
移動: 案内検索
(/etc/sysconfig/network)
 
(4人の利用者による、間の24版が非表示)
行1: 行1:
居候していた部屋の荷物を自宅に持ち込みました。
+
その他:そこは、メジャーになりきれない者たちのたまり場。
  
: ''やるべきことは、遠くにぼんやり見えるものを見ることではなく、''
+
== Firefox ==
:: ''手近にはっきり見えるものを行うことである。-- トーマス・カーライル''
+
=== データベースを最適化 ===
 +
履歴やブックマークのデータベースを最適化すると、動作が速くなる場合があるらしい。
  
== 覚え書き ==
+
「ツール」メニューの「エラーコンソール」のコード欄に以下を入力して「コードを評価」する。
  
=== Apache ===
+
  Components.classes["@mozilla.org/browser/nav-history-service;1"].getService(Components.interfaces.nsPIPlacesDatabase).DBConnection.executeSimpleSQL("VACUUM");
* /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
+
** [http://www.kt.rim.or.jp/~kbk/gawk/gawk_toc.html The GAWK Manual] (2.15.6)
+
** [http://www.kt.rim.or.jp/~kbk/gawk-30/index.html AWK Language Programming] (3.0.4)
+
 
+
* 基本構文
+
awk [-F sep] 'command' [file ...]
+
 
+
* 組み込み変数
+
** FS - フィールドセパレータ
+
** NR - 現レコード数
+
** NF - フィールド数
+
** OFS - 出力フィールドセパレータ (print のカンマ区切りのセパレータ)
+
** ORS - 出力レコードセパレータ
+
 
+
* 演算子
+
** ~ - マッチしたら真 ($0 ~ /re/)
+
** 他はほぼ C と同じ
+
 
+
* 制御構文
+
** <code>break</code>, <code>continue</code> - for や while の中で使う
+
** <code>next</code> - 次のレコードへ処理を移す
+
** <code>exit</code> - 残りのレコードは見ないで処理を中断
+
 
+
* 配列
+
** <code>array[i]</code> - 一次元配列
+
** <code>array[i,j,k]</code> - 三次元配列
+
** <code>array[str]</code> - 連想配列
+
*** <code>for (x in array) ...</code> ですべてのキーを取り出し可能
+
*** <code>if (str in array) ...</code> でキー str があるかどうか
+
*** <code>array[str] = array[str] "hoge"</code> で連結可能
+
 
+
* その他
+
** 変数の初期化は不要
+
** print $1 $2 で連結出力、カンマ区切りでスペース
+
** <code>{ print $0; } = { print; } = </code>
+
** 配列は参照渡し
+
** -f program で自作ライブラリを複数取り込める
+
** $n (n > 0) を書き換えると、$0 も書き換わる
+
 
+
=== sed ===
+
* 基本構文
+
sed [-n] [-e command] [-f command_file] [file ...]
+
; -n
+
: マッチしなかったら表示しない
+
 
+
* アドレス
+
** <code>n</code> - n 行目のみ (最終行 : $)
+
** <code>m,n</code> - m 行目から n 行目まで
+
** <code>n,/str/</code> - n 行目から str がマッチする行まで
+
*: ※ アドレスの後に <code>!</code> を付けると否定
+
 
+
* コマンド
+
** p - 出力
+
** d - 削除
+
** y - 一文字置換 (tr コマンドと一緒)
+
** s - 置換
+
** q - 終了
+
 
+
* フラグ
+
** g - 同一行中のマッチをすべて置換
+
 
+
 
+
=== make ===
+
* http://www.unixuser.org/~euske/doc/makefile/
+
 
+
* コマンドの前に '-' をつけると、エラーが発生しても make を続ける
+
* コマンドの前に '@' をつけると、コマンドを標準出力に表示しない
+
 
+
=== bash ===
+
* <code>export</code> は、その変数を子プロセスに引き継ぐ場合に用いる。
+
* Meta キーは ESC キーで代用可。(Poderosa では有用)
+
 
+
==== 起動時の設定ファイルの読み込み順序 ====
+
* ログインシェルの場合 (ログイン時、su - user 時など)
+
*# <code>/etc/profile</code>
+
*# <code>/etc/profile.d/*.sh</code>
+
*# <code>~/.bash_profile</code>
+
*# <code>~/.bashrc</code>
+
*# <code>/etc/bashrc</code>
+
* ログインシェルでない場合 (bash 実行時、su user 時など)
+
*# <code>~/.bashrc</code>
+
*# <code>/etc/bashrc</code>
+
*# <code>/etc/profile.d/*.sh</code>
+
以下のコマンドで確認できる。
+
# strace -f -e trace=open -o su-bash.strace su - hagio
+
 
+
==== シェルスクリプト ====
+
* $# - 引数の個数なので、スクリプト名は含まない。
+
* [http://www.linux.or.jp/JF/JFdocs/Bash-Prog-Intro-HOWTO.html 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'
+
 
+
 
+
=== ネットワーク ===
+
ソースより厳密な説明書はない。
+
==== ネットワーク起動の流れ ====
+
<code>network</code> rc スクリプトの動作を追う。
+
 
+
# <code>/etc/init.d/functions</code> を実行 (主に関数定義)
+
#* 内容はそのうち読む。
+
# <code>/etc/sysconfig/network</code> を読む (設定ファイル)
+
# <code>NETWORKING=no</code>でなければ、以下に進む
+
# カレントディレクトリを <code>/etc/sysconfig/network-scripts/</code> に変更
+
# <code>./network-functions</code> を実行 (関数定義)
+
#* ネットワーク関係の関数定義。これもそのうち読む。
+
# 処理すべきインターフェースを取得
+
#* [[雑記#/etc/sysconfig/network-scripts/ifcfg-<if>|こちら]]で少し詳しく解説。
+
# <code>NETWORKING_IPV6=yes</code> ならば、<code>/etc/sysconfig/network-scripts/init.ipv6-global start pre</code> を実行
+
#* <code>/etc/sysconfig/network</code> に <code>NETWORKING_IPV6=no # '''this option has no effect.'''</code> とあるが、これはどういう意味だろうか?
+
# <code>sysctl -e -p /etc/sysctl.conf</code> を実行
+
#* <code>-e</code> オプションは、未知のキーによるエラーを無視する。
+
#* <code>-p</code> オプションは、読み込むファイルを指定する。
+
# <code>./ifup ifcfg-lo</code> を実行。
+
#* いつものログ ("Bringing up loopback interface") は、<code>action</code> というコマンドで出力していると思われる。(<code>/etc/init.d/functions</code> で定義されている。)
+
# 以下は、各 (リアル) インターフェース毎に実行される
+
## <code>DEVICE, TYPE, SLAVE</code> 値をセット
+
## <code>DEVICE</code> がなければ、ifcfg-* の * の部分を DEVICE に設定
+
## <code>SLAVE=yes</code> なら、次のインターフェースへ
+
## <code>ONBOOT=no</code> がなければ、<code>is_available ''IF''</code> を実行
+
##* この関数の中身を調査すること。
+
## "Bringing up interface ''IF'':" を表示し、<code>./ifup ''IF'' boot</code> を実行
+
 
+
==== <code>/etc/sysconfig/network</code> 設定ファイル ====
+
参考:[http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/ja-JP/Deployment_Guide/s2-sysconfig-network.html 15.1.22. /etc/sysconfig/network]
+
; <code>NETWORKING=yes|no</code>
+
: <code>/etc/rc.d/init.d/network</code> を見ると以下のようになっているため、NETWORKING=no 以外はすべて yes とみなされるようだ。よって、必須ではないと思われる。
+
# Check that networking is up.
+
[ "${NETWORKING}" = "no" ] && exit 0
+
; <code>HOSTNAME=ホスト名</code>
+
: FQDN を記述する。/etc/sysconfig/network-scripts/ifup-post で設定される。
+
; <code>GATEWAY=デフォルトゲートウェイの IP アドレス</code>
+
; <code>GATEWAYDEV=ゲートウェイデバイス (eth0 等)</code>
+
: /etc/sysconfig/network-scripts/ifup-eth0 で設定されているようだが、詳細がよくわからない。
+
; <code>NISDOMAIN=NISドメイン名</code>
+
: NIS は、Network Information Service の略。/etc/rc.d/init.d/ypbind で用いられる。
+
 
+
==== <code>/etc/sysconfig/network-scripts/ifcfg-<if></code> ====
+
参考:[http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5.2/html/Deployment_Guide/s2-networkscripts-interfaces-eth0.html 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 で行うこと。'''なぜなら、<code>/etc/rc.d/init.d/network</code> では以下の部分で読むべきコンフィグファイルを探しているが、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/ //')          ★分離していた数字部分を再び結合
+
: <code>$__sed_discard_ignored_files</code> は <code>/etc/rc.d/init.d/functions</code> で定義されている。拡張子が .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 アドレスさえ設定すれば、<code>ipcalc</code> コマンドで自動的に計算される。
+
 
+
* 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
+
 
+
==== <code>/etc/sysconfig/static-routes</code> ====
+
: ルーティング (行頭の any より後ろが <code>route add</code> にそのまま渡される。)
+
 
+
==== netfilter ====
+
カーネルの高機能なパケットフィルタリングシステム。
+
 
+
: ''私は真にわかりやすい説明を思いついたが、この余白はそれを書くには狭すぎる。-- hagio''
+
 
+
つ [http://www.google.co.jp/search?q=iptables Google 先生]
+
 
+
==== tcp_wrappers ====
+
/etc/hosts.* を用いたアクセス制御を提供する。
+
 
+
基本的な構文
+
daemon_list: client_list[:options]
+
* <code>daemon_list</code>
+
** コンマ区切りの実行ファイル名リスト (サービス名ではない)
+
** ワイルドカードである ALL, EXCEPT も利用可能
+
* <code>client_list</code>
+
** コンマ区切りの以下の要素からなるリスト
+
*** 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 に対応しているかどうかの判別には、
+
<code>ldd</code> を使って <code>libwrap</code> がリンクされているか確認すればよい。
+
[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 ===
+
* [http://d.hatena.ne.jp/pyopyopyo/20081011/p1 VMware Server 2.0 をコマンドラインから操作する方法]
+
* 電源 ON
+
# vmware-vim-cmd vmsvc/power.on 16
+
  
 
== 教訓 ==
 
== 教訓 ==
 
* 自分が納得しなければ、相手を納得させることはできない。
 
* 自分が納得しなければ、相手を納得させることはできない。
 
  
 
== リンク ==
 
== リンク ==
 
* [http://www.mediawiki.org/wiki/Help:Formatting/ja MediaWiki の書式]
 
* [http://www.mediawiki.org/wiki/Help:Formatting/ja MediaWiki の書式]
 
* [http://lwn.net/Articles/299483/ LPC: Booting Linux in five seconds] (LWN.net)
 
* [http://lwn.net/Articles/299483/ LPC: Booting Linux in five seconds] (LWN.net)
 
  
 
== Linux ルータ構築手順メモ ==
 
== Linux ルータ構築手順メモ ==
行355: 行31:
 
  #BOOTPROTO=dhcp ★コメントアウトする
 
  #BOOTPROTO=dhcp ★コメントアウトする
 
  HWADDR=00:0a:79:98:df:13
 
  HWADDR=00:0a:79:98:df:13
# PPPoE の設定を行う
+
次に、PPPoE の設定を行う。
 +
 
 +
実行ログ <toggledisplay>
 
  [root@localhost ~]# adsl-setup  
 
  [root@localhost ~]# adsl-setup  
 
   
 
   
行418: 行96:
 
  2 - MASQUERADE: Appropriate for a machine acting as an Internet gateway
 
  2 - MASQUERADE: Appropriate for a machine acting as an Internet gateway
 
                 for a LAN
 
                 for a LAN
  Choose a type of firewall (0-2): 2
+
  Choose a type of firewall (0-2): 2 ★ 2 にしてしまったが、0 の方が余計な設定をされなくてよい。
 
   
 
   
 
  Start this connection at boot time
 
  Start this connection at boot time
行447: 行125:
 
  Type '/sbin/adsl-status /etc/sysconfig/network-scripts/ifcfg-ppp0'
 
  Type '/sbin/adsl-status /etc/sysconfig/network-scripts/ifcfg-ppp0'
 
  to see the link status.
 
  to see the link status.
# セキュリティ向上のため、不要なサービスを停止する
+
</toggledisplay>
:* apmd, atd, cups, sendmail など。まだありそう
+
セキュリティ向上のため、不要なサービスを停止する。<br>
# ip_forward を許可する
+
例えば、apmd, atd, cups, sendmail など。まだありそう。
 +
 
 +
内部ネットワークへの ip_forward を許可する
 
  # vi /etc/sysctl.conf
 
  # vi /etc/sysctl.conf
 
   :
 
   :
行455: 行135:
 
  net.ipv4.ip_forward = 1 ★
 
  net.ipv4.ip_forward = 1 ★
 
   :
 
   :
# iptables 設定用のシェルスクリプトを書く ([http://www.dream-seed.com/pukiwiki/index.php?Linux%2Fiptables%A4%C7%A5%EB%A1%BC%A5%BF%A4%F2%BA%EE%A4%EB 参考])
+
iptables 設定用のシェルスクリプトを書く ([http://www.dream-seed.com/pukiwiki/index.php?Linux%2Fiptables%A4%C7%A5%EB%A1%BC%A5%BF%A4%F2%BA%EE%A4%EB 参考])
 +
 
 +
スクリプト <toggledisplay>
 
  #!/bin/sh
 
  #!/bin/sh
 
   
 
   
行486: 行168:
 
  $IPTABLES -L
 
  $IPTABLES -L
 
  $IPTABLES -t nat -L
 
  $IPTABLES -t nat -L
 +
</toggledisplay>
  
# Linux をルータとして使うための Mac の設定
+
=== Linux をルータにした場合の Mac の設定 ===
:* システム環境設定 → Ethernet
+
DHCP を利用していない場合。<br>
 +
システム環境設定 → Ethernet
 
  構成:手入力
 
  構成:手入力
 
  IP アドレス:192.168.1.11
 
  IP アドレス:192.168.1.11
行495: 行179:
 
  DNS サーバ:xxx.xxx.xx.xx (Linux 上での dig の結果) ★固定でいいのか?
 
  DNS サーバ:xxx.xxx.xx.xx (Linux 上での dig の結果) ★固定でいいのか?
 
  検索ドメイン:
 
  検索ドメイン:
 
 
ここまで完了。Mac からネットが使えるようになった。
 
 
トド (To Do)
 
* サーバ名を考える
 
* iptables をマスターする
 
* Apache + PHP を動かす (日記システムを作り直すか?)
 
* DHCP を立てた方がいいのか?
 
* DNS はどうするか?
 
* 固定 IP オプションを申し込むか?
 

2010年4月15日 (木) 10:14時点における最新版

その他:そこは、メジャーになりきれない者たちのたまり場。

Firefox

データベースを最適化

履歴やブックマークのデータベースを最適化すると、動作が速くなる場合があるらしい。

「ツール」メニューの「エラーコンソール」のコード欄に以下を入力して「コードを評価」する。

Components.classes["@mozilla.org/browser/nav-history-service;1"].getService(Components.interfaces.nsPIPlacesDatabase).DBConnection.executeSimpleSQL("VACUUM");

教訓

  • 自分が納得しなければ、相手を納得させることはできない。

リンク

Linux ルータ構築手順メモ

マシン:Express5800/110Ge どノーマル

  1. Ethernet ポートが 1 つしかないので、NIC を買ってぶっ挿す (Realtek RTL-8169 チップだった)
  2. 起動時 F2 で BIOS 設定に移行し、"Advanced" で "Reset Configuration Data" を [Yes] にする
  3. 起動すると、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 の設定を行う。

実行ログ <toggledisplay>

[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 ★ 2 にしてしまったが、0 の方が余計な設定をされなくてよい。

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.

</toggledisplay> セキュリティ向上のため、不要なサービスを停止する。
例えば、apmd, atd, cups, sendmail など。まだありそう。

内部ネットワークへの ip_forward を許可する

# vi /etc/sysctl.conf
 :
# Controls IP packet forwarding
net.ipv4.ip_forward = 1 ★
 :

iptables 設定用のシェルスクリプトを書く (参考)

スクリプト <toggledisplay>

#!/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

</toggledisplay>

Linux をルータにした場合の Mac の設定

DHCP を利用していない場合。
システム環境設定 → Ethernet

構成:手入力
IP アドレス:192.168.1.11
サブネットマスク:255.255.255.0
ルーター:192.168.1.10 (Linux の IP アドレス)
DNS サーバ:xxx.xxx.xx.xx (Linux 上での dig の結果) ★固定でいいのか?
検索ドメイン: