linuxはとにかく更新がはやいので、何でも新しいアプリケーションが
いいと思いがちなのだけれど、アップしたら
使えなくなったと言うこともよくある。
たまたまネットワークツールのところをみていたら、
ネットワークツールの文字化けを発見
:システム>システム管理>ネットワークツール
のネットワークツールのハードウェアワーク
のあとのループバックの文字が化けている。
ネットで調べてみると、特殊な文字化けらしい
日本語ファイルの問題はそれなりにややこしそうなので
アンインストールして古いバージョンに入れ替える
ことにした。
メニューの編集を使ってアプリの正式な名前を調べると
gnome-nettoolであることがわかったので、
デビアンパッケージを検索して
lennyのすこし前の安定版のものをダウンロードし
GDebi Package インストーラを使ってインストールした。
機能自体はまったく同じなのに新しいものだと文字化けがおこる。
以前、ubuntuの9.04ではkiconeditがアップグレードされると
日本語はよりよくなるのだが、
保存ができなくなって使えなくなるという不具合があった。
9.10ではなおっているのだが、
なんでもかんでもアップグレードすればよいというわけではなさそうだ。
(追記:64ビット盤ではこの文字化けは起こらない。)
特定のパッケージを更新させない方法
古いバージョンのものをつかっていると
アップロードマネージャーがやたらと更新する用に要求
してくる。
gnome-nettoolの古いバージョンをインストールしているので
コンピューターを起動する度に
文字化けをおこす新しいバージョンに変えろと言ってくる。
しかたないのでアップロードマネージャーをひらき、
編集>設定>無視されたパッケージにgnome-nettoolと書き込んで追加をクリック。
こうすると更新したくないパッケージは自動的に無視されるのでうるさく
更新のことをいわなくなる。
Linuxで今までわからなかったことや気づいたことや 自分が試してみたLinuxのメモや感想について書いています。 このほどタイトルを変更しました。 あくまで個人の体験に基づいたものなので、間違いもあるだろうし、 思い込みで書き散らかしているところもあるでしょう。 参考にする場合はあくまで自己責任で おねがいします。
2010年3月25日木曜日
linuxを使ってハードディスクを消去する方法
ハードディスクの状態を調べる
1.smartmontoolのinstall
synapticマネージャーからsmartmontoolをインストール
2.端末をひらいてコマンド入力
ハードディスクの状態、故障を確認するコマンドには
smartctlをつかう。
オプションとしては
-a すべての情報を表示する
-i ハードディスクのS.M.A.R.T.サポート状況を表示する
-l エラーのログを表示する
-v 温度やシークエラーなどの状況を表示する
があり、
具体的には
ata接続のハードのすべての情報を表示するには
端末を開きルートで
smartctl -a /dev/hda(もしくは/sda)
linuxを使ってハードディスクを消去する方法
色々方法があるようなのでとりあえず、見付けたもの
をすべて載せておく。
(knoppixやparsixなどのone cd linuxが必要。)
1.3回上書き
#shred -n 3 -v /dev/hda(もしくはsda)
2.時間をかけてデータをより細かく処理したい場合
(1日仕事になるかも)
#shred -z -v /dev/hda(もしくはsda)
3.その他(どちらもかなり徹底したやり方で時間かかるようだ。)
# dd if=/dev/zero of=/dev/hda(もしくはsda)
# shred -vfz -n 100 /dev/hda(もしくはsda)
(以前parsixでこの方法を使ったが時間かかりすぎたので
途中でやめた。)
f10キーの設定変更
uimを使っていたら、f10キーで英数への切り替えが
できなかったので、調べたところ次のようなことが分かった。
設定editor(初期は隠れメニューになっている)を開き
desktop>gnome>interface>menubar_accel
menubar_accelのところ右クリックしてf10の
設定を消す。
1.smartmontoolのinstall
synapticマネージャーからsmartmontoolをインストール
2.端末をひらいてコマンド入力
ハードディスクの状態、故障を確認するコマンドには
smartctlをつかう。
オプションとしては
-a すべての情報を表示する
-i ハードディスクのS.M.A.R.T.サポート状況を表示する
-l エラーのログを表示する
-v 温度やシークエラーなどの状況を表示する
があり、
具体的には
ata接続のハードのすべての情報を表示するには
端末を開きルートで
smartctl -a /dev/hda(もしくは/sda)
linuxを使ってハードディスクを消去する方法
色々方法があるようなのでとりあえず、見付けたもの
をすべて載せておく。
(knoppixやparsixなどのone cd linuxが必要。)
1.3回上書き
#shred -n 3 -v /dev/hda(もしくはsda)
2.時間をかけてデータをより細かく処理したい場合
(1日仕事になるかも)
#shred -z -v /dev/hda(もしくはsda)
3.その他(どちらもかなり徹底したやり方で時間かかるようだ。)
# dd if=/dev/zero of=/dev/hda(もしくはsda)
# shred -vfz -n 100 /dev/hda(もしくはsda)
(以前parsixでこの方法を使ったが時間かかりすぎたので
途中でやめた。)
f10キーの設定変更
uimを使っていたら、f10キーで英数への切り替えが
できなかったので、調べたところ次のようなことが分かった。
設定editor(初期は隠れメニューになっている)を開き
desktop>gnome>interface>menubar_accel
menubar_accelのところ右クリックしてf10の
設定を消す。
2010年3月12日金曜日
pclos gnome2009.2のインストール日本語入力
朝pcを立ち上げたらいきなりハードディスクが御臨終だった。
(ちなみにこの二日前にもひとつつぶし、翌日、ノートのハードも死んだ。最近呪われてるとしか思えない。)
しかたないので、新たにlinux 2009.gnome
(もうすぐ2010が出るようだが日本語入力にやや難があるそうなのであえて2009)
を入れることにしたが、このディストリは日本語入力がそれなりに大変で
ヴァージョンが変わるごとにやりかたが変わっているようだ。
(日本語化の作業だけなら、siduxはもっと頻繁にやりかたがかわるが...)
実際何度も失敗してやっとできた。
またgnomeとkdeでもやりかたが異なる
以前に書いたと思うがkdeの場合日本語入力はscim
gnomeの場合はuimが向いている、というか何度もやってみた結果
それしか入らない感じだ。
前にkdeのことかいたので
とりあえずgnomeの日本語化について書く。
1.言語の選択
live cdを起動してf2ボタンを押し、
Japaneseを選ぶ
2.キーボードの選択
ログイン画面に入る前にキーボードを尋ねてくるので
Japan106キーを選ぶ。
3.ログイン画面の下のところに言語を選ぶところが
あるので再びJapaneseをえらびchange
languageをクリックしてログイン画面が日本語
になったのを確認してログインする。
注)ログイン後あわててインストールしてしまわないこと。
ここでインストールしてしまうとグノム環境では後で日本語
入力ができなくなるおそれがあるので、live cd
の段階で慎重に日本語入力を行っておき、その上で
インストールすべきだ。
もうひとつupgradeもこの段階で慌ててしてはいけない。
これもあとで日本語入力ができなくなってしまう危険がある。
4システム>システム管理>シナプチックマネージャーを
開き、設定(s)をクリックし、レポジトリーを
rpm:http//ftp.rikenに代えておく、要は海外のサーバーではなく
理研のサーバーにアクセスできるようにしダウンロード速度
を速めるためだ。
次に検索をクリックして
uim,uim-gtk,uim-qt,
uim-qtimmmodule
firefox-jaをインストール。
あとは依存関係で自動的に、必要なパッケージが
入ってくる。
5.コンピューターを設定
システム>設定>言語と国の設定を開いて
Japaneseを開き、Locale Drakeで
お住まいの国で日本語を選んだあと下にある
入力メソッドからuimを選ぶ。
(これを忘れるといくらやっても日本語入力ができない。)
ログアウトするように言ってくるが、すぐにログアウト
しない。)
6.uim-toolbar
システム>設定>セッションを開く
自動起動するプログラムの右側の追加
をクリック、プログラムの追加で
名前(N):uim-toolbar
コマンド(M):uim-toolbar-gtk
説明のところは空欄でもかまわない
以上を追加した上で、ログアウト
7.再ログイン後firefoxを開いて日本語入力できるか
確かめる。
(パスワードはrootならroot guestならguest)
追記アップグレードのこと
そのままでいじっているとどうも動作が不安定で
しかもやたらとアップデートを促された。
たまたまいじっているうちに、Xウインドーの異常で
グノームのデスクトップが開けなくなったので
(このディストリはアップグレードの失敗話が多い
のであまり、乗り気ではなかったのだが)
しかたなくアップグレードを行うことにした。
ctrl+alt+f2を同時押しにして、テキストモード
に移行、ログインして
#apt-get dist-upgrade
かなりの時間がかかったが無事終了。
#rebootしておそるおそるログイン
なんとかXが復活してくれたがデスクトップ
が立ち上がるのに異様に時間がかかった。
後ログイン時の音楽が変わった。
3/14(補足)やむおえないアップレードだったが
やはり無理が出たようで、コントロールセンター
が開かない。一応言語を英語に切り替えてやると
開くことはできるが、面倒くさい。
あとアップデート後エイリアンコマンドで
デビアンのgmailnotifyをインストールできた
pclosにはチェックGメールが標準で装備されてはいたが
いつもしばらく使うとおかしくなるのでgmailnotify
が使えたのはありがたかった。
(ちなみにこの二日前にもひとつつぶし、翌日、ノートのハードも死んだ。最近呪われてるとしか思えない。)
しかたないので、新たにlinux 2009.gnome
(もうすぐ2010が出るようだが日本語入力にやや難があるそうなのであえて2009)
を入れることにしたが、このディストリは日本語入力がそれなりに大変で
ヴァージョンが変わるごとにやりかたが変わっているようだ。
(日本語化の作業だけなら、siduxはもっと頻繁にやりかたがかわるが...)
実際何度も失敗してやっとできた。
またgnomeとkdeでもやりかたが異なる
以前に書いたと思うがkdeの場合日本語入力はscim
gnomeの場合はuimが向いている、というか何度もやってみた結果
それしか入らない感じだ。
前にkdeのことかいたので
とりあえずgnomeの日本語化について書く。
1.言語の選択
live cdを起動してf2ボタンを押し、
Japaneseを選ぶ
2.キーボードの選択
ログイン画面に入る前にキーボードを尋ねてくるので
Japan106キーを選ぶ。
3.ログイン画面の下のところに言語を選ぶところが
あるので再びJapaneseをえらびchange
languageをクリックしてログイン画面が日本語
になったのを確認してログインする。
注)ログイン後あわててインストールしてしまわないこと。
ここでインストールしてしまうとグノム環境では後で日本語
入力ができなくなるおそれがあるので、live cd
の段階で慎重に日本語入力を行っておき、その上で
インストールすべきだ。
もうひとつupgradeもこの段階で慌ててしてはいけない。
これもあとで日本語入力ができなくなってしまう危険がある。
4システム>システム管理>シナプチックマネージャーを
開き、設定(s)をクリックし、レポジトリーを
rpm:http//ftp.rikenに代えておく、要は海外のサーバーではなく
理研のサーバーにアクセスできるようにしダウンロード速度
を速めるためだ。
次に検索をクリックして
uim,uim-gtk,uim-qt,
uim-qtimmmodule
firefox-jaをインストール。
あとは依存関係で自動的に、必要なパッケージが
入ってくる。
5.コンピューターを設定
システム>設定>言語と国の設定を開いて
Japaneseを開き、Locale Drakeで
お住まいの国で日本語を選んだあと下にある
入力メソッドからuimを選ぶ。
(これを忘れるといくらやっても日本語入力ができない。)
ログアウトするように言ってくるが、すぐにログアウト
しない。)
6.uim-toolbar
システム>設定>セッションを開く
自動起動するプログラムの右側の追加
をクリック、プログラムの追加で
名前(N):uim-toolbar
コマンド(M):uim-toolbar-gtk
説明のところは空欄でもかまわない
以上を追加した上で、ログアウト
7.再ログイン後firefoxを開いて日本語入力できるか
確かめる。
(パスワードはrootならroot guestならguest)
追記アップグレードのこと
そのままでいじっているとどうも動作が不安定で
しかもやたらとアップデートを促された。
たまたまいじっているうちに、Xウインドーの異常で
グノームのデスクトップが開けなくなったので
(このディストリはアップグレードの失敗話が多い
のであまり、乗り気ではなかったのだが)
しかたなくアップグレードを行うことにした。
ctrl+alt+f2を同時押しにして、テキストモード
に移行、ログインして
#apt-get dist-upgrade
かなりの時間がかかったが無事終了。
#rebootしておそるおそるログイン
なんとかXが復活してくれたがデスクトップ
が立ち上がるのに異様に時間がかかった。
後ログイン時の音楽が変わった。
3/14(補足)やむおえないアップレードだったが
やはり無理が出たようで、コントロールセンター
が開かない。一応言語を英語に切り替えてやると
開くことはできるが、面倒くさい。
あとアップデート後エイリアンコマンドで
デビアンのgmailnotifyをインストールできた
pclosにはチェックGメールが標準で装備されてはいたが
いつもしばらく使うとおかしくなるのでgmailnotify
が使えたのはありがたかった。
parsix firewallのこと
parsixにはfirewallとしてfirestarterがついているが、
きちんと設定したはずなのに、いつも”起動に失敗しました”
という表示がでる。それにもかかわらず、PC起動時の
画面にはちゃんとfirestarter startという表示がされている。
おかしいと思い、gibson reserch corporation
のサイトでfirewallをtestしてみたところ、
やはり正常に作動していた。
以前はfirestarterがちゃんと起動していない
と思っていたので、kde環境のguarddogという
firewallと入れ替えて使っていたことがあった。
guarddogを使う場合は一応guarddogの
メニューが表示されるのだが、管理者権限で
端末から#guarddogと入力してやらないと、
操作はできたかもしれないが、変更を
保存できなかったと思う。
初心者向けで使いやすくて簡単な
firewallだったのだが、firewallのテスト
をやるともう一つだった。
操作の仕方はkde
から英語ではあるが、かなり詳しい
マニュアルが出ている。
(再修正)2010年3/5
その後またおかしくなったので、新たに次のサイト
http://www14.plala.or.jp/campus-note/vine_linux/net_security/firestarter.html
を参考にやりなおした。
具体的には14行目のgrep Mas→grep inetに置き換えた。
#!/bin/bash
#-----------( Firestarter Control Script )-----------#
# Load Configuration
source /etc/firestarter/configuration 2>&1
# --(Set program paths)--
IPT=/sbin/iptables
IFC=/sbin/ifconfig
MPB=/sbin/modprobe
LSM=/sbin/lsmod
RMM=/sbin/rmmod
# --(Extract Network Information)--
# External network interface data
IP=`LANG=C /sbin/ifconfig $IF | grep inet | cut -d : -f 2 | cut -d \ -f 1`
MASK=`LANG=C /sbin/ifconfig $IF | grep inet | cut -d : -f 4`
BCAST=`LANG=C /sbin/ifconfig $IF |grep Bcast: | cut -d : -f 3 | cut -d \ -f 1`
NET=$IP/$MASK
if [ "$NAT" = "on" ]; then
# Internal network interface data
INIP=`LANG=C /sbin/ifconfig $INIF | grep inet | cut -d : -f 2 | cut -d \ -f 1`
INMASK=`LANG=C /sbin/ifconfig $INIF | grep Mas | cut -d : -f 4`
INBCAST=`LANC=C /sbin/ifconfig $INIF |grep Bcast: | cut -d : -f 3 | cut -d \ -f 1`
INNET=$INIP/$INMASK
fi
if [ "$MASK" = "" -a "$1" != "stop" ]; then
echo "External network device $IF is not ready. Aborting.."
exit 2
fi
if [ "$NAT" = "on" ]; then
if [ "$INMASK" = "" -a "$1" != "stop" ]; then
echo "Internal network device $INIF is not ready. Aborting.."
exit 3
fi
fi
# --(Helper Functions)--
# Scrub data parameters before use
scrub_parameters () {
target=`echo $target | sed 's/ //'g`
port=`echo $port | sed 's/ //'g | sed "s/-/:/"`
ext_port=`echo $ext_port | sed 's/ //'g | sed "s/-/:/"`
int_port_dashed=`echo $int_port | sed 's/ //'g | sed "s/:/-/"`
int_port=`echo $int_port | sed 's/ //'g | sed "s/-/:/"`
if [ "$target" == "everyone" ]; then target=0/0
else if [ "$target" == "firewall" ]; then target=$IP
else if [ "$target" == "lan" ]; then target=$INNET
fi fi fi
}
# --(Control Functions)--
# Create Firestarter lock file
lock_firestarter () {
if [ -e /var/lock/subsys ]; then
touch /var/lock/subsys/firestarter
else
touch /var/lock/firestarter
fi
}
# Remove Firestarter lock file
unlock_firestarter () {
if [ -e /var/lock/subsys ]; then
rm -f /var/lock/subsys/firestarter
else
rm -f /var/lock/firestarter
fi
}
# Start system DHCP server
start_dhcp_server () {
if [ "$DHCP_DYNAMIC_DNS" = "on" ]; then
NAMESERVER=
# Load the DNS information into the dhcp configuration
while read keyword value garbage
do
if [ "$keyword" = "nameserver" ]; then
if [ "$NAMESERVER" = "" ]; then
NAMESERVER="$value"
else
NAMESERVER="$NAMESERVER, $value"
fi
fi
done < /etc/resolv.conf if [ "$NAMESERVER" != "" ]; then if [ -f /etc/dhcpd.conf ]; then sed "s/domain-name-servers.*$/domain-name-servers $NAMESERVER;/" /etc/dhcpd.conf > /etc/dhcpd.conf.tmp
mv /etc/dhcpd.conf.tmp /etc/dhcpd.conf
fi
if [ -f /etc/dhcp3/dhcpd.conf ]; then
sed "s/domain-name-servers.*$/domain-name-servers $NAMESERVER;/" /etc/dhcp3/dhcpd.conf > /etc/dhcp3/dhcpd.conf.tmp
mv /etc/dhcp3/dhcpd.conf.tmp /etc/dhcp3/dhcpd.conf
fi
else
echo -e "Warning: Could not determine new DNS settings for DHCP\nKeeping old configuration"
fi
fi
if [ -e /etc/init.d/dhcp3-server ]; then
/etc/init.d/dhcp3-server restart > /dev/null
elif [ -e /etc/init.d/dhcpd ]; then
/etc/init.d/dhcpd restart > /dev/null
elif [ -e /etc/init.d/dnsmasq ]; then
/etc/init.d/dnsmasq restart > /dev/null
else
/usr/sbin/dhcpd 2> /dev/null
fi
if [ $? -ne 0 ]; then
echo Failed to start DHCP server
exit 200
fi
}
# Start the firewall, enforcing traffic policy
start_firewall () {
lock_firestarter
source /etc/firestarter/firewall 2>&1
retval=$?
if [ $retval -eq 0 ]; then
echo "Firewall started"
else
echo "Firewall not started"
unlock_firestarter
exit $retval
fi
}
# Stop the firewall, traffic flows freely
stop_firewall () {
$IPT -F
$IPT -X
$IPT -Z
$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -t mangle -F 2>/dev/null
$IPT -t mangle -X 2>/dev/null
$IPT -t mangle -Z 2>/dev/null
$IPT -t nat -F 2>/dev/null
$IPT -t nat -X 2>/dev/null
$IPT -t nat -Z 2>/dev/null
retval=$?
if [ $retval -eq 0 ]; then
unlock_firestarter
echo "Firewall stopped"
fi
exit $retval
}
# Lock the firewall, blocking all traffic
lock_firewall () {
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
$IPT -F;
$IPT -X
$IPT -Z
retval=$?
if [ $? -eq 0 ]; then
echo "Firewall locked"
fi
exit $retval
}
# Report the status of the firewall
status () {
if [ -e /var/lock/subsys/firestarter -o -e /var/lock/firestarter ]; then
echo "Firestarter is running..."
else
echo "Firestarter is stopped"
fi
}
case "$1" in
start)
start_firewall
if [ "$NAT" = "on" -a "$DHCP_SERVER" = "on" ]; then
start_dhcp_server
fi
;;
stop)
stop_firewall
;;
lock)
lock_firewall
;;
status)
status
;;
reload-inbound-policy)
source /etc/firestarter/inbound/setup 2>&1
;;
reload-outbound-policy)
source /etc/firestarter/outbound/setup 2>&1
;;
*)
echo "usage: $0 {start|stop|lock|status}"
exit 1
esac
exit 0
きちんと設定したはずなのに、いつも”起動に失敗しました”
という表示がでる。それにもかかわらず、PC起動時の
画面にはちゃんとfirestarter startという表示がされている。
おかしいと思い、gibson reserch corporation
のサイトでfirewallをtestしてみたところ、
やはり正常に作動していた。
以前はfirestarterがちゃんと起動していない
と思っていたので、kde環境のguarddogという
firewallと入れ替えて使っていたことがあった。
guarddogを使う場合は一応guarddogの
メニューが表示されるのだが、管理者権限で
端末から#guarddogと入力してやらないと、
操作はできたかもしれないが、変更を
保存できなかったと思う。
初心者向けで使いやすくて簡単な
firewallだったのだが、firewallのテスト
をやるともう一つだった。
操作の仕方はkde
から英語ではあるが、かなり詳しい
マニュアルが出ている。
(再修正)2010年3/5
その後またおかしくなったので、新たに次のサイト
http://www14.plala.or.jp/campus-note/vine_linux/net_security/firestarter.html
を参考にやりなおした。
具体的には14行目のgrep Mas→grep inetに置き換えた。
#!/bin/bash
#-----------( Firestarter Control Script )-----------#
# Load Configuration
source /etc/firestarter/configuration 2>&1
# --(Set program paths)--
IPT=/sbin/iptables
IFC=/sbin/ifconfig
MPB=/sbin/modprobe
LSM=/sbin/lsmod
RMM=/sbin/rmmod
# --(Extract Network Information)--
# External network interface data
IP=`LANG=C /sbin/ifconfig $IF | grep inet | cut -d : -f 2 | cut -d \ -f 1`
MASK=`LANG=C /sbin/ifconfig $IF | grep inet | cut -d : -f 4`
BCAST=`LANG=C /sbin/ifconfig $IF |grep Bcast: | cut -d : -f 3 | cut -d \ -f 1`
NET=$IP/$MASK
if [ "$NAT" = "on" ]; then
# Internal network interface data
INIP=`LANG=C /sbin/ifconfig $INIF | grep inet | cut -d : -f 2 | cut -d \ -f 1`
INMASK=`LANG=C /sbin/ifconfig $INIF | grep Mas | cut -d : -f 4`
INBCAST=`LANC=C /sbin/ifconfig $INIF |grep Bcast: | cut -d : -f 3 | cut -d \ -f 1`
INNET=$INIP/$INMASK
fi
if [ "$MASK" = "" -a "$1" != "stop" ]; then
echo "External network device $IF is not ready. Aborting.."
exit 2
fi
if [ "$NAT" = "on" ]; then
if [ "$INMASK" = "" -a "$1" != "stop" ]; then
echo "Internal network device $INIF is not ready. Aborting.."
exit 3
fi
fi
# --(Helper Functions)--
# Scrub data parameters before use
scrub_parameters () {
target=`echo $target | sed 's/ //'g`
port=`echo $port | sed 's/ //'g | sed "s/-/:/"`
ext_port=`echo $ext_port | sed 's/ //'g | sed "s/-/:/"`
int_port_dashed=`echo $int_port | sed 's/ //'g | sed "s/:/-/"`
int_port=`echo $int_port | sed 's/ //'g | sed "s/-/:/"`
if [ "$target" == "everyone" ]; then target=0/0
else if [ "$target" == "firewall" ]; then target=$IP
else if [ "$target" == "lan" ]; then target=$INNET
fi fi fi
}
# --(Control Functions)--
# Create Firestarter lock file
lock_firestarter () {
if [ -e /var/lock/subsys ]; then
touch /var/lock/subsys/firestarter
else
touch /var/lock/firestarter
fi
}
# Remove Firestarter lock file
unlock_firestarter () {
if [ -e /var/lock/subsys ]; then
rm -f /var/lock/subsys/firestarter
else
rm -f /var/lock/firestarter
fi
}
# Start system DHCP server
start_dhcp_server () {
if [ "$DHCP_DYNAMIC_DNS" = "on" ]; then
NAMESERVER=
# Load the DNS information into the dhcp configuration
while read keyword value garbage
do
if [ "$keyword" = "nameserver" ]; then
if [ "$NAMESERVER" = "" ]; then
NAMESERVER="$value"
else
NAMESERVER="$NAMESERVER, $value"
fi
fi
done < /etc/resolv.conf if [ "$NAMESERVER" != "" ]; then if [ -f /etc/dhcpd.conf ]; then sed "s/domain-name-servers.*$/domain-name-servers $NAMESERVER;/" /etc/dhcpd.conf > /etc/dhcpd.conf.tmp
mv /etc/dhcpd.conf.tmp /etc/dhcpd.conf
fi
if [ -f /etc/dhcp3/dhcpd.conf ]; then
sed "s/domain-name-servers.*$/domain-name-servers $NAMESERVER;/" /etc/dhcp3/dhcpd.conf > /etc/dhcp3/dhcpd.conf.tmp
mv /etc/dhcp3/dhcpd.conf.tmp /etc/dhcp3/dhcpd.conf
fi
else
echo -e "Warning: Could not determine new DNS settings for DHCP\nKeeping old configuration"
fi
fi
if [ -e /etc/init.d/dhcp3-server ]; then
/etc/init.d/dhcp3-server restart > /dev/null
elif [ -e /etc/init.d/dhcpd ]; then
/etc/init.d/dhcpd restart > /dev/null
elif [ -e /etc/init.d/dnsmasq ]; then
/etc/init.d/dnsmasq restart > /dev/null
else
/usr/sbin/dhcpd 2> /dev/null
fi
if [ $? -ne 0 ]; then
echo Failed to start DHCP server
exit 200
fi
}
# Start the firewall, enforcing traffic policy
start_firewall () {
lock_firestarter
source /etc/firestarter/firewall 2>&1
retval=$?
if [ $retval -eq 0 ]; then
echo "Firewall started"
else
echo "Firewall not started"
unlock_firestarter
exit $retval
fi
}
# Stop the firewall, traffic flows freely
stop_firewall () {
$IPT -F
$IPT -X
$IPT -Z
$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -t mangle -F 2>/dev/null
$IPT -t mangle -X 2>/dev/null
$IPT -t mangle -Z 2>/dev/null
$IPT -t nat -F 2>/dev/null
$IPT -t nat -X 2>/dev/null
$IPT -t nat -Z 2>/dev/null
retval=$?
if [ $retval -eq 0 ]; then
unlock_firestarter
echo "Firewall stopped"
fi
exit $retval
}
# Lock the firewall, blocking all traffic
lock_firewall () {
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
$IPT -F;
$IPT -X
$IPT -Z
retval=$?
if [ $? -eq 0 ]; then
echo "Firewall locked"
fi
exit $retval
}
# Report the status of the firewall
status () {
if [ -e /var/lock/subsys/firestarter -o -e /var/lock/firestarter ]; then
echo "Firestarter is running..."
else
echo "Firestarter is stopped"
fi
}
case "$1" in
start)
start_firewall
if [ "$NAT" = "on" -a "$DHCP_SERVER" = "on" ]; then
start_dhcp_server
fi
;;
stop)
stop_firewall
;;
lock)
lock_firewall
;;
status)
status
;;
reload-inbound-policy)
source /etc/firestarter/inbound/setup 2>&1
;;
reload-outbound-policy)
source /etc/firestarter/outbound/setup 2>&1
;;
*)
echo "usage: $0 {start|stop|lock|status}"
exit 1
esac
exit 0
登録:
投稿 (Atom)