PepoLinux(ぴぽりなっくす)はXWindowを捨てネットワークとサーバーに徹した軽量コンパクトな約250MBの1CDLinuxです。 初期設定でdns,web,mail,snmp,mrtg,webalizer等々が立ち上がっていますので、直ぐにサーバーの実験が出来ます。
NTTdocomoのFOMA携帯でUSB接続ケーブルさえあればインターネットを経由しない高セキュリティの64kデジタル通信によるリモートハンドが実現できます。
これは通信モードが選択できるFOMA携帯電話で機種を選ばない仕様で当サイトが開発している、Linux USB Driver acm-FOMAを利用したものです。
サーバー構築やネットワークの検証などで、ちょっと話の分かるサーバーが欲しい時もFDやUSBメモリに設定をちょこと書いて立ち上げるだけで、色々なサーバーを建てれます。
ネットワークの勉強やSEの方にも大変便利CDROMやUSBメモリから起動出来るPCがあればどこでも自前のサーバーが建てれますし、WindowsXPのHDDやUSBメモリにインストールも出来ます。
CentOS5をベースに開発環境も構築しています、Vmplayerを利用したDriver開発用のVmware appliance(Remote-Hand-v0.2)やシリアルDIOとgmail経由でやり取り出来る applianceRemote-Hand_DIO も用意しています。
Linux USB Driver acm-FOMAとKernel makeを合わせてインストールすれば、Kernel makeやDriverのDebugなどの実験もできます。


メモリが256M以下の場合自動的にスモールモードを選択、必要最低限のサービスとdhclientを起動して表示するIPアドレスへsshでログインする事が出来ます。

MS_Windowsのテキストエディタで簡単にPepoLnuxの設定ファイルを変更してUSBメモリや、C:\Windows\pepolinux\startup.sへ保存します。
#!/bin/sh
#
# PepoLinux Main Configuration Scripts. This startup.s scripts change by your idea.
# note! (This file is a copy of startup.s.org. When correcting it, it is a thing of the edit as for startup.s.org of the original.)
# Copyright pepolinux.com pepolinux@users.sourceforge.jp
# Written by IZAMUKARERA 2001.4.12 last-update 2010.6.13
# この startup.s スクリプトを自分の環境に合うように編集して下さい。
# #を消すだけで dhcp、dns、http、mail等のサーバー機能がすぐ使える様にしています。
# デフォルトでdns、http、mailサーバが立ち上がります。
# 使用するIPが、かぶらないようにAPIPA(Automatic Private IP Addressing 169.254.0.0 - 169.254.255.255)が
# デフォルトで設定しています。先ずはIPアドレスを実環境に設定しましょう。それだけ設定して
# C:\peplinux\startup.s へ置いてCDROMやUSBメモリから起動すればPepoLinuxのネットワーク・ワールドが開けます。
# バージョン情報です。
export Ver=Ver0.47
# 1番目の eth カードのIPアドレスの設定です、前述のCLIENTの数を足して254以上にならないようにする。
# IPADDRだけは最低限設定して下さい。dhcpdを起動させる時はGATEWAYを必ず設定しコメントを外す事。
export IPADD=168.254.100.100/16
# デフォルトゲートウェイの設定です。
export GATEWAY=168.254.100.100
# 2番目の eth カードのIPアドレスを記述する。
export IPADD1=169.254.200.100/16
# ホスト名を変更する場合 # を削除して hostname XXXX とします、初期値のホスト名は epicon です。
#hostname epicon
#これはコメントアウトしないで下さい。
export HOSTNAME=`hostname`
# DHCP、DNSのクライアント数を指定、これから自動で設定ファイルを作成します。
export CLIENT=10
# DHCP、DNSで使うホスト名を設定します。初期値はホスト名の先頭4文字とクライアント数20で epic1?epic10 です。
export HOST=`hostname | cut -c 1-4`
# ドメインの設定です。
export DOMAIN=pepolinux.local
# ホストネームとドメインを合わせたFQDN(Fully Qualified Domain Name)です、触らないで下さい。
export HOSTNAME_TDL=$HOSTNAME.$DOMAIN
# ネームサーバの設定です。DNS_1の初期値は、自分自身のIPADDをネームサーバーに設定します。
# DNS_2 はプロバイダのDNSです、"202.234.232.6" はOCN西日本のDNSへフォワードする設定です。
export DNS_1=`echo $IPADD|awk 'BEGIN{FS="/"};{print $1}'`
export DNS_2=$GATEWAY
# 外部宛てのメールを内部サーバーへリレーするホストをFQDN "mail.pepolinux.local" などで設定します。
export RELAYHOST=
# 自動認識出来ないドライバのモジュールを設定します。
#modprobe e1000 #Intel(R) PRO/1000
#modprobe bcm5700 #Broadcom Gigabit ethernet driver
#modprobe dm9601 #Corega FEther USB-TXC
# ここからはIPアドレスの詳細情報を自動作成するので触らない下さい。
export IF_PORT=10baseT
export NETMASK=`ipcalc -m $IPADD|awk 'BEGIN{FS="="};{print $2}'`
export BROADCAST=`ipcalc -b $IPADD|awk 'BEGIN{FS="="};{print $2}'`
export NETWORK=`ipcalc -n $IPADD|awk 'BEGIN{FS="="};{print $2}'`
export MASK=`echo $IPADD|awk 'BEGIN{FS="/"};{print $2}'`
export IPADDR=`echo $IPADD|awk 'BEGIN{FS="/"};{print $1}'`
export NETMASK1=`ipcalc -m $IPADD1|awk 'BEGIN{FS="="};{print $2}'`
export BROADCAST1=`ipcalc -b $IPADD1|awk 'BEGIN{FS="="};{print $2}'`
export NETWORK1=`ipcalc -n $IPADD1|awk 'BEGIN{FS="="};{print $2}'`
export IPADDR1=`echo $IPADD1|awk 'BEGIN{FS="/"};{print $1}'`
# ここまではIPアドレスの詳細情報を自動作成するので触らない下さい。
# MRTG(Multi Router Traffic Grapher)で監視するSNMPエージェントのIPアドレスを設定します。(初期設定ではepiconです。)
MRTG_IP=$IPADDR
# Registration No 設定をします。
# pepolinuxの#を消すと定期的な登録を促すメッセージが解除されます。
cd /etc
cat>SERIAL<<Z
pepolinux
Z
# #を外すとWELCOMEメッセージがシンプルになります。
#rm /etc/WELCOME
# PPPのIPアドレスの設定
export PPPSERVER=169.254.198.1
export PPPCLIENT=169.254.198.2
# VTun(Virtual Tunnel over TCP/IP network)用のアドレスを設定します。
export TUNSERVER=169.254.197.1
export TUNCLIENT=169.254.197.2
# VTunの相手LANのネットワーク設定をします。
export TUNHOST=169.254.200.100
export TUNNETWORK=169.254.200.0
export TUNMASK=255.255.255.0
domainname $DOMAIN
# PCMCIA 設定をします。
cat>/etc/pcmcia.conf<<Z
PCMCIA=yes
# Should be either i82365 or tcic
PCIC=i82365
# Put socket driver timing parameters here
#PCIC_OPTS=poll_interval=100 pci_csc=1 irq_list=3,9,10
# Put pcmcia_core options here
CORE_OPTS=
# Put cardmgr options here
CARDMGR_OPTS=
# To set the PCMCIA scheme at startup...
SCHEME=
Z
#service hotplug start
# PCMCIAの無いPCはコメントアウトして下さい。
if grep -vq pcmcia /proc/devices ;then `service pcmcia start >/dev/null 2>&1`;fi
sleep 3
# ネットワークの初期化をします。
# 1番目スロットのethカードの設定をします。
ifconfig lo 127.0.0.1 up
ifconfig eth0 $IPADDR broadcast $BROADCAST netmask $NETMASK up
route add -net $NETWORK netmask $NETMASK eth0
route add -net default gw $GATEWAY netmask 0.0.0.0 metric 1
# デフォルトゲートウェイが2つある場合(下記の設定は1番目が2番目に比べ10倍早い時
#ip route add default nexthop via $GATEWAY weight 100 nexthop via $GATEWAY1 weight 10
# 必要であれば、ethカードのMACアドレスを変更します。
#ip link set eth0 down ; ip link set eth0 address 00:01:02:03:04:05 ; ip link set eth0 up
# ダイヤルUPクライアントで起動する場合下記行の設定は#でコメントアウトして下さい。
#route add -net default gw $GATEWAY netmask 0.0.0.0 metric 1
route add -net 127.0.0.0 netmask 255.0.0.0 lo
#route add default dev ppp0
# 2番目スロットのethカードの設定をします。
if grep -q eth1 /proc/net/dev; then
ifconfig eth1 $IPADDR1 broadcast $BROADCAST1 netmask $NETMASK1 up
fi
#route add -net $NETWORK1 netmask $NETMASK1 eth1
# route コマンドにてネットワークアドレスを参照する時に使用する。
cat>networks<<Z
loopback 127.0.0.0
$DOMAIN $NETWORK
Z
# ホストファイルの設定です、知っている ip アドレスとホスト名を列記します。
cat>hosts<<Z
127.0.0.1 localhost
#$IPADDR $HOSTNAME
#$DNS_1 dns
Z
# ppp サーバーの為の設定です、IPアドレス部分は使用するネットワークアドレスを書いて下さい。
# 左辺($PPPSERVER)がサーバー側、右辺($PPPCLIENT)がクライアント側のIPとなります。
cat>ppp/ppplogin<<Z
#!/bin/sh
mesg n
stty -echo
exec /usr/sbin/pppd passive -detach $PPPSERVER:$PPPCLIENT
Z
chmod 755 /etc/ppp/ppplogin
chmod +s /etc/ppp/ppplogin
# 64K接続用のpppdサーバーのオプションを設定します
cat>ppp/options.ttyACM0<<Z
lock
modem
kdebug 1
crtscts
$PPPSERVER:$PPPCLIENT
defaultroute
ms-dns $DNS_1
ms-wins $DNS_1
idle 120
Z
# パケット接続用のpppdサーバーのオプションを設定します
cat>ppp/options<<Z
debug 7
kdebug 6
updetach
115200
usepeerdns
defaultroute
lock
Z
# 携帯電話を使った、ダイヤルイン・サーバーのスクリプトを設定します。
# 起動方法は→ /etc/ppp/ppp-in
cat>ppp/ppp-in<<Z
#!/bin/sh
/usr/local/bin/epicon -l /dev/ttyACM0 -s 115200 -c /usr/local/bin/pepop2pchat
Z
chmod +x ppp/ppp-in
# ppp クライアント側の設定です、TELEPHONE=ダイヤルUP先の電話番号を書いて下さい。
# 相手サーバー側がpepolinuxを想定していますがクライアントはwin95,98の方が便利の
# 為あまり使う事は無いでしょう、又/etc/inittabのc50、c51の#でコメントアウトが必要
# です、 ppp-on でダイヤルUPを開始し ppp-off でダイヤルアウトします。
cat>ppp/ppp-on<<Z
#!/bin/sh
export TELEPHONE=09012345678
export PPPACCOUNT=ppp
export PPPPASSWORD=fradfrad
LOCAL_IP=0.0.0.0
REMOTE_IP=0.0.0.0
PPPNETMASK=255.255.255.0
DIALER_SCRIPT=/etc/ppp/pppscript
exec /usr/sbin/pppd debug lock modem crtscts /dev/ttyUSB0 19200 \\
idle 120 \\
asyncmap 20A0000 escape FF kdebug 0 \$LOCAL_IP:\$REMOTE_IP \\
noipdefault netmask \$PPPNETMASK defaultroute connect \$DIALER_SCRIPT
Z
chmod 777 /etc/ppp/ppp-on
chmod +s /etc/ppp/ppp-on
# pppのダイレクト接続の設定、COMポートに事前にクロスケーブルで相手
# シリアルポートを接続しておきます。
# サーバー側の設定です。
#pppd -detach crtscts lock $PPPSERVER:$PPPCLIENT /dev/ttyS0 115200 &
# クラインと側の設定です。
#pppd -detach crtscts lock noipdefault /dev/ttyS0 115200 &
# slipのダイレクト接続の設定、COMポートに事前にクロスケーブルで相手
# シリアルポートを接続しておきます。
#slattach -p cslip -s 19200 /dev/ttyS0 &
# サーバー側の設定です。
#ifconfig sl0 $PPPSERVER pointopoint $PPPCLIENT up
# クラインと側の設定です。
#ifconfig sl0 $PPPCLIENT pointopoint $PPPSERVER up
# pppoe-serverの設定をします。(設定は、pppoeクライアントも同じです。)
cat>/etc/ppp/pap-secrets<<Z
# Secrets for authentication using PAP for FOMA packet
* pepolinux "" *
Z
cat>/etc/ppp/chap-secrets<<Z
# Secrets for authentication using CHAP for FOMA 64k
"ppp" * "fradfrad" *
Z
# pppoe-serverの起動をします。(pppoeクライアントは、adsl-startで起動します。)
#pppoe-server -L $PPPSERVER -R $PPPCLIENT
# pptp-serverの設定をします。
cat>/etc/pptpd.conf<<Z
option /etc/ppp/options.pptpd
localip $PPPSERVER
remoteip `echo $PPPCLIENT.$CLIENT|awk 'BEGIN{FS="."};\
{print $1"."$2"."$3"."$4"-"$4+$5}'`
Z
# pptp-serverのoptions設定をします。
cat>/etc/ppp/options.pptpd<<Z
lock
# debug
name $HOSTNAME
domain $DOMAIN
nodefaultroute
proxyarp
auth
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns $DNS_1
ms-wins $DNS_1
Z
# pptp-serverを起動します。
#/usr/sbin/pptpd
# ipsecの設定をします。(OpenSwanV2.Xを使いKernel2.6.Xのみ対応)
# 起動と停止は→ service ipsec start ; service ipsec stop
cat>/etc/ipsec.conf<<Z
#/etc/ipsec.conf - Openswan IPsec configuration file
#RCSID $Id: ipsec.conf.in,v 1.13 2004/03/24 04:14:39 ken Exp $
#This file: /usr/local/share/doc/openswan/ipsec.conf-sample
#
#Manual: ipsec.conf.5
version 2.0 # conforms to second version of ipsec.conf specification
#basic configuration
config setup
# Debug-logging controls: "none" for (almost) none, "all" for lots.
# klipsdebug=none
# plutodebug="control parsing"
#Add connections here
conn net-to-net
authby=secret # Key exchange method
left=$PPPSERVER # Public Internet IP address of the
# LEFT VPN device is myself(自サイト)
#leftsubnet=192.168.0.0/24 # Subnet protected by the LEFT VPN device
#leftnexthop=%defaultroute # correct in many situations
#
right=$PPPCLIENT # Public Internet IP address of the
# RIGHT VPN device is Other party(相手サイト)
#rightsubnet=10.0.0.0/24 # Subnet protected by the RIGHT VPN device
#rightnexthop=192.168.0.200 # correct in many situations
auto=start # authorizes and starts this connection on booting
#Disable Opportunistic Encryption
include /etc/ipsec.d/examples/no_oe.conf
Z
# ipsecの事前共有鍵を設定します。
cat>/etc/ipsec.secrets<<Z
#vpn-ip-address vpn2-ip-address : PSK "key in quotations"
$PPPSERVER $PPPCLIENT : PSK "pepopa@pepolinux.com"
Z
# iptablesを使ったFirewallを設定します。
cat>/etc/sysconfig/iptables<<Z
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:Pepo-Firewall - [0:0]
-A INPUT -j Pepo-Firewall
-A FORWARD -j Pepo-Firewall
-A OUTPUT -j Pepo-Firewall
-A Pepo-Firewall -p icmp --icmp-type any -j ACCEPT
-A Pepo-Firewall -p 50 -j ACCEPT
-A Pepo-Firewall -p 51 -j ACCEPT
-A Pepo-Firewall -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A Pepo-Firewall -p udp -m udp --dport 631 -j ACCEPT
-A Pepo-Firewall -m state --state ESTABLISHED,RELATED -j ACCEPT
-A Pepo-Firewall -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
-A Pepo-Firewall -m state --state NEW -m tcp -p tcp --sport 20 -j ACCEPT
-A Pepo-Firewall -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A Pepo-Firewall -m state --state NEW -m tcp -p tcp --sport 21 -j ACCEPT
-A Pepo-Firewall -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A Pepo-Firewall -m state --state NEW -m tcp -p tcp --dport 23 -j ACCEPT
-A Pepo-Firewall -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A Pepo-Firewall -p udp --dport 53 -j ACCEPT
-A Pepo-Firewall -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT
-A Pepo-Firewall -m state --state NEW -m tcp -p tcp --dport 143 -j ACCEPT
-A Pepo-Firewall -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A Pepo-Firewall -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A Pepo-Firewall -m state --state NEW -m tcp -p tcp --dport 587 -j ACCEPT
-A Pepo-Firewall -m state --state NEW -m tcp -p tcp --dport 3128 -j ACCEPT
-A Pepo-Firewall -m state --state NEW -m tcp -p tcp --dport 8022 -j ACCEPT
-A Pepo-Firewall -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT
-A Pepo-Firewall -p udp --dport 67 -j ACCEPT
-A Pepo-Firewall -p udp --dport 123 -j ACCEPT
-A Pepo-Firewall -p udp --dport 161 -j ACCEPT
-A Pepo-Firewall -m state --state NEW -m tcp -p tcp --dport 137 -j ACCEPT
-A Pepo-Firewall -p udp --dport 138 -j ACCEPT
-A Pepo-Firewall -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
-A Pepo-Firewall -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
-A Pepo-Firewall -p udp --dport 389 -j ACCEPT
-A Pepo-Firewall -m state --state NEW -m tcp -p tcp --dport 389 -j ACCEPT
-A Pepo-Firewall -m state --state NEW -m tcp -p tcp --dport 1723 -j ACCEPT
-A Pepo-Firewall -p gre -j ACCEPT
-A Pepo-Firewall -i ppp+ -m state --state NEW -m tcp -p tcp -j ACCEPT
-A Pepo-Firewall -i lo -m state --state NEW -m tcp -p tcp -j ACCEPT
-A Pepo-Firewall -j REJECT --reject-with icmp-host-prohibited
COMMIT
Z
# Firewallを有効にします。
service iptables start
# 以下はiptablesを使ったip マスカレードの設定です。
# PepoLinuxがPPPでダイヤルUPしクライアントがPepoLinuxへデフォルトゲートを
# 向ければマスカレードルータの出来上がり。
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# 以下はネットワークカードを2枚挿しでrouterとして動作させた場合のマスカレード
#iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to $IPADDR
#iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to $IPADDR1
# もし$NETWORK1から$NETWORKを経由インターネットへ接続する必要がある時は以下の
# 設定で接続出来ます。(勿論DNS、デフォルトゲート等は手動で設定する必要がありますが)
#iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to $IPADDR
# 色々なiptablesの設定をテストした後の設定をセーブする時は以下コマンド実行
#iptables-save >settei
# 設定をsetteiに戻す時は以下コマンド実行
#iptables-restore <settei
# 以下はPPPサーバーとして動作させた場合のマスカレードの設定。クライアントからダイヤル
# UPすればイントラネット内のアクセスが出来る。
#iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to $IPADDR
# ブリッジの起動を行います。イーサネットカードを2枚挿入され認識している時の設定です。
#pepobrct eth1 start
# ブリッジの起動が終わっている場合、brouterの設定を行います。
# ebtables(Ethernet bridge tables)はMACレイヤで高度なフィルタリングが機能
# するものです、ここではブルータ機能のみ設定をしています。
cat>/etc/brouter.sh<<Z
#!/bin/sh
#This script making brouter,a precondtion is enabled pepobrctl.
MAC_OF_ETH0=`ifconfig eth0 2>/dev/null|awk '/HWaddr/ {print $5}'`
MAC_OF_ETH1=`ifconfig eth1 2>/dev/null|awk '/HWaddr/ {print $5}'`
ifconfig br0 0.0.0.0
ifconfig eth0 $IPADDR netmask $NETMASK
ifconfig eth1 $IPADDR1 netmask $NETMASK1
ebtables -t broute -A BROUTING -p ipv4 -i eth0 --ip-dst $IPADDR -j DROP
ebtables -t broute -A BROUTING -p ipv4 -i eth1 --ip-dst $IPADDR1 -j DROP
ebtables -t broute -A BROUTING -p arp -i eth0 -d \$MAC_OF_ETH0 -j DROP
ebtables -t broute -A BROUTING -p arp -i eth1 -d \$MAC_OF_ETH1 -j DROP
Z
chmod 755 /etc/brouter.sh
# brouterの起動をします。(ブリッジの起動をさせた後に起動させて下さい)
#/etc/brouter.sh;echo brouter start!
# VTun(Virtual Tunnel over TCP/IP network⇒トンネルデバイス)を設定します。
# VTunはC/S間で仮想IPネットワークを構築しデータの暗号化と圧縮をするものです。
# 相手Vtunホストのルーティングの設定、ネットワーク単位やデフォルトゲートの設定はしない事。
#route del default gw $GATEWAY ; route add -host $TUNHOST gw $GATEWAY
# サーバー側のIPアドレスの設定
sed -e "s/TUNSERVER/$TUNSERVER/" -e "s/TUNCLIENT/$TUNCLIENT/" /etc/vtund.conf.server >/etc/vtund.conf.new
# クライアント側のIPアドレスの設定
#sed -e "s/TUNSERVER/$TUNSERVER/" -e "s/TUNCLIENT/$TUNCLIENT/" /etc/vtund.conf.client >/etc/vtund.conf.new
# 相手VtunのLANネットワークを設定します。(ここは触らない)
sed "s/IPADDR/$IPADDR/" /etc/vtund.conf.new >/etc/vtund.conf.tmp
sed -e "s/TUNNETWORK/$TUNNETWORK/" -e "s/TUNMASK/$TUNMASK/" /etc/vtund.conf.tmp >/etc/vtund.conf.new
# サーバー側の起動です。(IPトンネル、ブリッジもサーバー側の起動は変わらない)
#modprobe tun ; vtund -f /etc/vtund.conf.new -s
# IPのトンネリングを行う。
# サーバー側のIPアドレスが$TUNHOSTに設定されているものとする。
# クライアント側の起動です。
#modprobe tun ; vtund cobra -f /etc/vtund.conf.new $TUNHOST
# イーサーネットトンネリング(リモートブリッジ)の設定。
# クライアント側の起動です。
#modprobe tun ; vtund lion -f /etc/vtund.conf.new $TUNHOST
# VLANの設定です。設定例ではeth0に3番のVLANを設定しIPアドレスをTUNSERVER又
# はTUNCLIENTのアドレスを設定します。
# サーバー側の起動です。(VLANにクライアント&サーバーの概念はありません)
#vconfig add eth0 3 ; ifconfig eth0.3 $TUNSERVER network $TUNNETWORK
# クライン側の起動です。(VLANにクライアント&サーバーの概念はありません)
#vconfig add eth0 3 ; ifconfig eth0.3 $TUNCLIENT network $TUNNETWORK
# サブインターフェースの設定、1つのethに1つ以上のIPアドレスを設定しましす。
#ifconfig eth0:0 192.168.1.1
#ifconfig eth0:1 192.168.2.1
# etc/inittab の設定です、ここへ登録すると殺(kill)されても不死鳥の如く蘇ります
# 以下の設定は run レベル 5 で常に dos で言うcom1、com2のダイヤルイン監視してい
# ます、もしダイヤルアウトする必要がある場合 # でコメントアウトして下さい。
# 一度ダイヤルイン監視で立ち上げた場合#でコメントアウト後モデムをダイヤルアウト
# 用に設定変更をして下さい。(epicon でモデムへ at&f コマンドを書く)
# もし respawming to fast :disable for 5 minutes が煩ければ#でコメントアウトして下
# さい又モデムが無ければやはり同様のメッセージが出力されます。
# pcmciaのモデムカードがttyS2で認識される時はc51の#を外してc50を#でコメントアウト
# 後に再起動して下さい。
# Winmodemでダイヤルインさせる場合はc53を#でコメントアウトします。(2003.8.10動作せず)
# USBモデム(SUNTAC・U-Cable・TypeD2-V)を認識している場合c55を#でコメントアウトします。
# com1にクロスケーブルでコンソールを接続する場合はc54を#でコメントアウトします。
# Docomo FOMA携帯電話を接続してダイヤルインする場合はc58を有効にします。
cat>>inittab<<Z
#c50:5:respawn:/sbin/agetty -I 'at&fe0q1&d2&c1s0=1\015' 38400 ttyS1
#c51:5:respawn:/sbin/agetty -I 'at&fe0q1&d2&c1s0=1\015' 38400 ttyS2
#c52:5:respawn:/sbin/agetty -I 'at&fe0q1&d2&c1s0=1\015' 38400 /dev/ttyACM0
#c53:5:respawn:/sbin/agetty -I 'at&fe0q1&d2&c1s0=1\015' 38400 /dev/ttyS15
#c54:5:respawn:/sbin/agetty 38400 ttyS0
#c55:5:respawn:/sbin/agetty -I 'at&fe0q1&d2&c1s0=1\015' 38400 /dev/ttyUSB0
#c56:5:respawn:/usr/local/bin/peporemote
#c57:5:respawn:/usr/local/bin/epicon -l /dev/ttyACM0 -c /usr/local/bin/pepop2pchat
#c58:5:respawn:/usr/bin/svscanboot
Z
# レゾルバを設定します dhcp クライアント時の設定はサーバーよりドメインとネーム
# サーバー情報を取得します、この為#でコメントアウトする必要があります。
# DNSサーバーで起動する時は二つとも#を削除します。
cat>resolv.conf<<Z
domain $DOMAIN # DNSサーバーで起動する時は#を削除します。
nameserver $DNS_1 # DNSサーバーで起動する時は#を削除します。
Z
# 以下 DNS サーバーの設定をします、まずはこれで動かして色々設定を試し下さい。
cat>/var/named/chroot/etc/named.conf<<Z
options {
directory "/var/named";
forward only;
forwarders {
$DNS_2;
};
listen-on port 53 { any; };
};
controls {
inet 127.0.0.1 port 953 allow { localhost; } keys { rndckey; };
};
zone "$DOMAIN" IN {
type master;
file "named.hosts";
allow-update {
$IPADD;
};
};
zone "`echo $IPADDR|awk 'BEGIN{FS="."};{print $3"."$2"."$1".in-addr.arpa"}'`" IN {
type master;
file "named.rev";
allow-update {
$IPADD;
};
};
zone "localdomain" IN {
type master;
file "localdomain.zone";
allow-update { none; };
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "127.0.0.rev";
allow-update { none; };
};
#zone "." IN {
# type hint;
# file "named.ca";
#};
include "/etc/rndc.key";
Z
cat>/var/named/chroot/var/named/named.hosts<<Z
\$TTL 600
@ IN SOA $DOMAIN. $HOSTNAME.$DOMAIN. (
20070101 ;Serial
10800 ;Refresh after 3 hours
3600 ;Retry after 1 hours
604800 ;Expire after 1 week
86400) ;Minimum TTL of 1 day
IN NS $HOSTNAME.$DOMAIN.
IN MX 10 mail.$DOMAIN.
ftp IN A $IPADDR
dns IN A $IPADDR
www IN A $IPADDR
mail IN A $IPADDR
_ldap._tcp.$DOMAIN. SRV 0 100 389 $HOSTNAME.$DOMAIN.
_kerberos._tcp.$DOMAIN. SRV 0 100 88 $HOSTNAME.$DOMAIN.
_ldap._tcp.dc._msdcs.$DOMAIN. SRV 0 100 389 $HOSTNAME.$DOMAIN.
_kerberos._tcp.dc._msdcs.$DOMAIN. SRV 0 100 88 $HOSTNAME.$DOMAIN.
`echo $IPADDR.$HOSTNAME|\
awk 'BEGIN{FS="."};\
{printf ("%s\tIN\tA\t%d.%d.%d.%d\n",$5,$1,$2,$3,$4)}'`
`echo $IPADDR.$CLIENT.$HOST|\
awk 'BEGIN{FS="."};\
{for (i=1; i<=$5 ;i++) \
printf ("%s\tIN\tA\t%d.%d.%d.%d\n",$6i,$1,$2,$3,$4+i)}'`
gw IN A $GATEWAY
HINFO "PepoLinux" "IZAMUKARERA"
TXT "Router"
Z
cat>/var/named/chroot/var/named/named.rev<<Z
\$TTL 86400
@ IN SOA $DOMAIN. $HOSTNAME.$DOMAIN. (
20070101 ;Serial
10800 ;Refresh after 3 hours
3600 ;Retry after 1 hours
604800 ;Expire after 1 week
86400) ;Minimum TTL of 1 day
IN NS $HOSTNAME.$DOMAIN.
`echo $IPADDR,$HOSTNAME,$DOMAIN|\
awk 'BEGIN{FS=","};\
{split($1,IP,".");\
IP4=IP[4];\
printf ("%d\tIN\tPTR\t%s.%s.\n",IP4,$2,$3)}'`
`echo $IPADDR,$DOMAIN|\
awk 'BEGIN{FS=","};\
{split($1,IP,".");\
IP4=IP[4];\
printf ("%d\tIN\tPTR\tmail.%s.\n",IP4,$2)}'`
`echo $IPADDR,$CLIENT,$HOST,$DOMAIN|\
awk 'BEGIN{FS=","};\
{split($1,IP,".");\
IP4=IP[4];
for (i=1; i<=$2 ;i++) \
printf ("%d\tIN\tPTR\t%s.%s.\n",IP4+i,$3i,$4)}'`
Z
cat>/var/named/chroot/var/named/localdomain.zone<<Z
\$TTL 86400
@ IN SOA localhost. root.localhost. (
20070101 ;Serial
10800 ;Refresh after 3 hours
3600 ;Retry after 1 hours
604800 ;Expire after 1 week
86400) ;Minimum TTL of 1 day
IN NS localhost.
localhost IN A 127.0.0.1
Z
cat>/var/named/chroot/var/named/localhost.zone<<Z
\$TTL 86400
@ IN SOA localhost. root.localhost. (
20070101 ;Serial
10800 ;Refresh after 3 hours
3600 ;Retry after 1 hours
604800 ;Expire after 1 week
86400) ;Minimum TTL of 1 day
IN NS localhost.
IN A 127.0.0.1
Z
cat>/var/named/chroot/var/named/127.0.0.rev<<Z
\$TTL 86400
@ IN SOA localhost. root.localhost. (
20070101 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.
1 IN PTR localhost.
Z
touch /var/named/chroot/var/named/named.root;chmod 644 /var/named/chroot/var/named/named.root
chown named.named /var/named/chroot/var/named/*
# named コントロール用のkeyを生成します。
#rndc-confgen -a
# dhcp サーバーの設定を設定します。
# dhcp
#/bin/sh
cat>/etc/dhcpd.conf<<Z
ddns-update-style none;
server-identifier $HOSTNAME.$DOMAIN;
option domain-name "$DOMAIN";
option domain-name-servers $DNS_1,$DNS_2;
shared-network $HOSTNAME{
option subnet-mask $NETMASK;
default-lease-time 3600;
max-lease-time 7200;
subnet $NETWORK netmask $NETMASK {
range `echo $IPADDR.$CLIENT|awk 'BEGIN{FS="."};
{print $1"."$2"."$3"."$4+1" "$1"."$2"."$3"."$4+$5";"}'`
option routers $GATEWAY;
}
}
Z
#システムの安定を待ちます。
sync
sleep 5
# デバイス検出の為にメッセージ・バスデーモンを起動します。
service messagebus start
# dns サーバーを起動させます。
service named start #echo Starting named
# dhcp サーバーを起動させます。
#service dhcpd start
# dhcp クライアントを起動させます、他の pc にdhcpサーバーが必要です。
#dhclient eth0;echo Starting dhcpcd
# routed ルーティングデーモンを起動させます。(RIP-1によるルーティングを行う)
#routed ;echo Starting routed
# MOUSEのコピー&ペーストユーティリテを起動させます。
service gpm start
# USB MOUSEのコピー&ペーストユーティリテを起動させます。
#gpm -m /dev/input/mice -t ps2;echo starting usb_mouse_gpm
# snmp デーモンの起動させます。
sed -e "s/_HOSTNAME/$HOSTNAME_TDL/" -e "s/_DOMAIN/$DOMAIN/" /etc/snmp/snmpd.conf.org >/etc/snmp/snmpd.conf
service snmpd start # echo Starting snmpd
# 「ntp3.jst.mfeed.ad.jp」と時刻を同期させます。
/usr/sbin/ntpdate ntp3.jst.mfeed.ad.jp
# ntp サーバーの起動させます。
#service ntpd start
# portmap サーバーを起動します。(RPCサービスやnfsを使う時に必要です)
#service portmap start
# nfs サーバーを起動します。(公開するディレクトリは予めメモリディスク以外をマウントしてから /etc/exportfs を編集します)
#service nfs start
# ssh サーバーの起動させます。
service sshd start
# proxy サーバーの起動させます。
sed -e "s/IPADDR/$NETWORK\/$MASK/" /etc/squid/squid.conf.org >/etc/squid/squid.conf
#mkdir -p /var/log/squid ; chown squid.squid /var/log/squid ; service squid start
# mail デーモンを起動させます。
sed -e "s/_HOSTNAME/$HOSTNAME_TDL/" -e "s/_DOMAIN/$DOMAIN/" -e "s/_RELAYHOST/$RELAYHOST/" /etc/postfix/main.cf.org >/etc/postfix/main.cf
sed "s/localhost.localdomain/$DOMAIN/" /etc/mail/sendmail.mc >/etc/mail/sendmail.mc.bak;cp /etc/mail/sendmail.mc.bak /etc/mail/sendmail.mc
if [ -n $RELAYHOST ];then
echo "define(\`SMART_HOST', \`$RELAYHOST')dnl" >>/etc/mail/sendmail.mc
fi
#service sendmail start
service postfix start
# pop,imap (dovecot)デーモンを起動します。
#service dovecot start
# www サーバーの設定です。ホームページデータの転送と、 www (Apache)サーバーを
# 動作させます、 ssi、cgi 、perlスクリプトもOK。
# /tftpboot/home/~xxxx/public_html/ に各ユーザーがホームページを作成出来ます。
sed -e "s/IPADDR/$NETWORK\/$MASK/" -e "s/_HOSTNAME/$HOSTNAME_TDL/" /etc/httpd/conf/httpd.conf.org >/etc/httpd/conf/httpd.conf
sed -e "s/_HOSTNAME/$HOSTNAME_TDL/" -e "s/_DOMAIN/$DOMAIN/" -e "s/Ver0.47/Ver$Ver/" /var/www/html/index.html.org >/var/www/html/index.html
PE=/dos/peplinux
T=/var/www
if [ -d "$PE" ]; then
cd $PE
cp -ap *.html *.htm *.shtml *.dat *.php $T/html >/dev/null 2>&1
cp -ap *.png *.gif *.jpg $T/html/img >/dev/null 2>&1
if [ -f counter.pl ];then
lfcut.s counter.pl $T/cgi-bin/counter.pl
fi
cd /
fi
chmod 777 $T $T/* $T/cgi-bin/* $T/html/* $T/html/img/* >/dev/null 2>&1
# www サーバーの起動です
service httpd start
# mrtgとanalogの設定です。ルーターとWWWサーバーの統計データーを定期的に集計しWEBで公開します。
MEM_T=`free |awk -F" " '/Mem/{print $2}'`
COMMUNITY=public
#MRTG_IP=$IPADDR
/usr/bin/cfgmaker --global 'WorkDir: /var/www/mrtg' --global 'Language: eucjp' \
--global 'options[_]: growright,bits' --output=/etc/mrtg/mrtg.cfg.old $COMMUNITY@$MRTG_IP
cat>>/etc/mrtg/mrtg.cfg.old<<Z
#
# httpdプロセス数の数 # httpdプロセス数
#
Target[httpd]: .1.3.6.1.4.1.2021.2.1.5.1&.1.3.6.1.4.1.2021.2.1.4.1:$COMMUNITY@$MRTG_IP
ThreshMaxI[httpd]: 20
SetEnv[httpd]: EMAIL="root@$DOMAIN"
URL="http://$MRTG_IP/mrtg/httpd.html"
MaxBytes[httpd]: 100
Title[httpd]: Number of httpd
PageTop[httpd]: <H1> Number of httpd on WebServer</H1>
YLegend[httpd]: Number of httpd
ShortLegend[httpd]: httpd
LegendI[httpd]: 起動中のhttpd
LegendO[httpd]: 起動中のhttpd
#
# CPUのロードアベレージ# 1分間平均の%および15分平均の%
#
Target[la]: .1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.3:$COMMUNITY@$MRTG_IP
ThreshMaxI[la]: 50
SetEnv[la]: EMAIL="root@$DOMAIN"
URL="http://$MRTG_IP/mrtg/la.html"
MaxBytes[la]: 100
Title[la]: Load Average
PageTop[la]: <H1> Load Average on WebServer</H1>
YLegend[la]: Load Average
ShortLegend[la]: %
LegendI[la]: 1分平均
LegendO[la]: 15分平均
#
# メモリ使用状況 # MaxByteには非試験機のトータルメモリを指定
#
Target[mem]: .1.3.6.1.4.1.2021.4.4.0&.1.3.6.1.4.1.2021.4.6.0:$COMMUNITY@$MRTG_IP
ThreshMaxI[mem]: 80
SetEnv[mem]: EMAIL="root@$DOMAIN"
URL="http://$MRTG_IP/mrtg/mem.html"
MaxBytes[mem]: $MEM_T
Title[mem]: Memory Usage "real" and "swap"
PageTop[mem]: <H1>Memory Usage "real" and "swap" on WebServer</H1>
YLegend[mem]: Memory Usage
ShortLegend[mem]: kbyte
LegendI[mem]: Swap使用量
LegendO[mem]: 実メモリ使用量
Z
# mrtgの設定ファイルをeucへ変換します。
nkf -e /etc/mrtg/mrtg.cfg.old >/etc/mrtg/mrtg.cfg
# mrtgの各統計用のHTMLファイルを一つのindex.htmlにまとめます。
/usr/bin/indexmaker /etc/mrtg/mrtg.cfg > /var/www/mrtg/pepolinux.html
#WEBサーバの解析ソフトwebalizerの設定をしてcronに登録します。
sed -e "s/_HOSTNAME/$HOSTNAME_TDL/" /etc/webalizer.conf.org >/etc/webalizer.conf
# 定期的に収集出来るようにと2時間毎に時刻同期をcronに設定します。
cat>/etc/mrtg.sh<<Z
LANG=C
/usr/bin/mrtg /etc/mrtg/mrtg.cfg
Z
chmod 755 /etc/mrtg.sh
cat>/etc/cronpepo<<Z
0-59/5 * * * * /etc/mrtg.sh
0-59/5 * * * * /usr/bin/webalizer -c /etc/webalizer.conf
00 0-23/2 * * * /usr/sbin/ntpdate gpsntp.miz.nao.ac.jp
Z
crontab /etc/cronpepo
# Disable kernel messages. If you wish to verbose mode please comment out.
echo "0" > /proc/sys/kernel/printk
# インターネット・スーパーデーモン xinetd 様の起動です、これを起動さないとFTP、TELNET等が不可。
service xinetd start
# デバイス検出デーモンを起動します。
service haldaemon start
# WindowsXPが起動出来なくなった時、DISKをマウントして共有フォルダで公開します。
#pepomsrescue
#Kernel Debugger(i386系CPUのKernelデバッガ。Pauseキーで起動します。)を無効にします。有効→ echo "1" >/proc/sys/kernel/kdb
#echo "0" >/proc/sys/kernel/kdb
# 透過プロキシの設定をします。・・この前にsquidの起動がされ、eth1へDHCPサーバーからIPが取得されている事。
# eth1のdhcpサーバーから取得したIPアドレスをゲットします。
#DHCPCLIENT_IP=`ifconfig eth1|awk '/inet addr:/{gsub(/addr:/,"");print $2}'`
# dhcpサーバーから取得したIPアドレスでeth1を外向きNATを設定します。
#iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to $DHCPCLIENT_IP
# 内部の自IPアドレス以外の80番portをsquidのportへリダイレクトの設定をします。
#iptables -t nat -A PREROUTING -i eth0 -s ! $IPADDR -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:3128
# eth0の80番portをsquidのportへリダイレクトの設定をします。
#iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
# Passwordの再設定をします。
#echo 'pepolinux' |passwd root --stdin
# SSHのログインオプションの設定をします。
# FDよりsshdの公開鍵を読み込み、公開鍵のみで認証するようにします。
#mount /dev/fd0 /mnt/fd
#cat /mnt/fd/peplinux/*.pub >/root/.ssh/authorized_keys
#umount /mnt/fd
#cat /etc/ssh/sshd_config |sed "s/PasswordAuthentication yes/PasswordAuthentication no/" > /etc/ssh/sshd_config
#service sshd restart
# OpenVPNのServe用の設定をします。
# server xx.xx.xx.xx ← serverの内部ネットワークを定義
cat >/etc/openvpn/server.conf<<Z
# Server port 443,protocol tcp
port 443
proto tcp
dev tun
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
# OpeVPNで使用するDHCPのアドレスプールを指定します。サーバがx.x.x.1、VPNゲートゲートウェイがx.x.x.2になります。
server 192.168.10.0 255.255.255.0
# OpenVPN側のサーバー側のIPアドレスを固定する場合に指定します。(クライアントのデフォルトゲートウェイになります。)
#ifconfig 192.168.10.199 255.255.255.0
ifconfig-pool-persist ipp.txt
# クライアントへ通知するサーバー側のネットワークアドレスを指定します。(サーバー側では適切なルーティングが必要です。)
push "route 192.168.0.0 255.255.255.0"
# push "route 192.168.1.0 255.255.255.0"
# push "route 192.168.2.0 255.255.255.0"
# DHCPクライアントとして接続してきたとき、DNSサーバのアドレスを通知します。
# push "dhcp-option DNS 192.168.0.123"
# DHCPクライアントとして接続してきたとき、WINSサーバのアドレスを通知します。
# push "dhcp-option WINS 192.168.0.124"
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
mute 20
client-to-client
up /etc/openvpn/openvpn_up.sh
Z
# OpenVPNサーバー側で事前に必要なUPスクリプトを設定します。
cat >/etc/openvpn/openvpn_up.sh<<Z
#!/bin/sh
# eth0へもう一つIPアドレスを設定し、OpenVPNクライアントからのソースアドレスをこれに書き換えます。
ifconfig eth0:1 192.168.0.254
# OpenVPNの為のNATを設定します。(OpenVPNクライアントがサーバIPのフリをしてサーバネットワークにアクセスします。)
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -d 192.168.0.0/24 -j SNAT --to-source 192.168.0.254
# 接続してくるクライアントのLAN側のルーティングを設定します。(クライアントのネットワーク数必要)
ip route add 192.168.1.0/24 via 192.168.10.2
Z
chmod +x /etc/openvpn/openvpn_up.sh
# OpenVPNのClient、WindowsXP用の設定ファイルを作成します。
# remote xx.xx.xx.xx ← serverのグローバルアドレスを指定
# serveで作成された各ファイルをコピー client1.crt client1.key ca.crt と共に client_xp.ovpnを
# WindowsXPのClientの C:\Program Files\OpenVPN\config\ へコピーします。
cat>/etc/openvpn/client_xp.ovpn<<Z
client
port 443
proto tcp
dev tun
ca ca.crt
cert client1.crt
key client1.key
dh dh1024.pem
# remoteでOpenVPNサーバのグローバルアドレスを指定します。
remote 192.168.0.1
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
mute 20
# OpenVPNサーバのIPアドレスがデフォルトゲートウェイになります。
redirect-gateway def1
Z
# OpenVPN起動します。
#servie openvpn start
# WebShellを起動します。
#/var/www/html/WebShell-0.9.5/webshell.py &
# PepoLinux world の始まり始まり楽しんでね。
# Have a fun PepoLinux.