自宅でフグを調理するか、ホームサーバーでOpenBSDを調理する



もちろん、これは有名な日本の珍味を準備することではありません。 そして、彼女は私が定義したいくつかのサービスをセットアップします

必要に応じて、ホームサーバーで自分自身。 どのオペレーティングシステムがOpenBSDになります。

多くの人が叫ぶでしょうが、なぜLinux、FreeBSDがあるので、このあまり知られていないOSが必要なのでしょうか。 はい、確かに、私は他の人に必要なものをすべてセットアップできました

unixは好きですが、OpenBSDの学習と調整を経験したほどの喜びはありません。 そして、私は常に複雑に惹かれています

および非標準ソリューション。

概要を終了して、件名に戻ります。

親愛なる読者の皆さん、メニューをご紹介します。



本日のメニュー:

1.初期セットアップ。

2. DNS(プロバイダーへのリクエストのリダイレクト)。

3.ソフトRAID 1(家族の写真、音楽、旅行ビデオ、その他の重要な情報のアーカイブ)。

4. rtorrent + rutorrent(異なるトレントが必要であり、異なるトレントが重要です)。

5. NFSサーバー(LANコンピューターからアクセスするためのネットワークフォルダー)。

6.作業を伴うVPNトンネル。 FreeBSD(mpd5)OpenBSD(ppp)(私は好きで、時々自宅で仕事をしています)。

7. NUT + UPS Ippon Back power pro 400(予期しない停電を恐れていません)。

8.ファイアウォール(グレートPFパケットフィルター)。



それでは、始めましょう。





1.初期セットアップ。



システムが既にインストールされているという事実に基づいて構成を説明します。

ネットワークインターフェイスの構成についてのみ説明します。 私のシステムには、re0、rl0の2つがあります。

# cat /etc/hostname.re0 inet 192.168.254.1 255.255.255.0 inet alias 192.168.254.10 255.255.255.255 #      # cat /etc/hostname.rl0 inet 10.110.1.103 255.255.255.224
      
      







ソフトウェアをインストールするには、パッケージとポートの両方を使用するため、最初に行うことはポートツリーをダウンロードすることです



 # cd /tmp # ftp http://ftp://ftp.openbsd.org/pub/OpenBSD/4.7/ports.tar.gz # cd /usr # tar -zxvf /tmp/ports.tar.gz
      
      







ポートツリーを更新できるようにするには、cvsupをインストールします。

 # cd /usr/ports # make search key=cvsup Port: cvsup-16.1hp2-no_x11 Path: net/cvsup,-main,no_x11 Info: network file distribution system Maint: The OpenBSD ports mailing-list <ports@openbsd.org> Index: net devel L-deps: B-deps: :lang/ezm3 R-deps: Archs: i386 # cd net/cvsup # make show=FLAVORS no_x11 # env FLAVOR="no_x11" make install
      
      







ポートの作業ディレクトリをクリアします

 # make clean # make clean=depends
      
      







遅延しないように、すぐにポートを更新するためにcvsup configを構成します

 #cat /etc/cvsup-file-ports *default release=cvs *default delete use-rel-suffix *default umask=002 *default host=obsd.cec.mtu.edu *default base=/usr *default prefix=/usr *default tag=OPENBSD_4_7 OpenBSD-ports
      
      







利用可能な匿名cvsサーバーのリストは、 ここで表示できます。

コマンドを使用して更新するだけです

 # cvsup -g -L 2 /etc/cvsup-file-ports
      
      







これでポートを使って、今のところは終了しましょう。

パッケージに移りましょう。このステップでは、パッケージから必要なものをすべてインストールします

 #export PKG_PATH=http://ftp.gamma.ru/pub/OpenBSD/`uname -r`/packages/`machine -a`/ #pkg_add libxml mod_scgi nut p5-XML-Parser php5-core php5-extensions\ php5-xmlrpc pptp screen xmlrpc-c bash
      
      





*サーバーが長時間構成されているため、リストが不完全であることが判明する場合があります。



2. DNS(プロバイダーへのリクエストのリダイレクト)。





/etc/rc.conf.localを変更してnamedを実行します

 named_flags="" named_user=named named_chroot=/var/named
      
      







プロバイダーDNSによるリクエストの転送には、以下を行うだけで十分です。

/var/named/etc/named.conf(オプション内)

次の行

  forwarders { 10.5.0.2;};
      
      







/etc/resolv.confには以下が含まれます

 namesrver 127.0.0.1
      
      







3.ソフトRAID 1(家族の写真、音楽、旅行ビデオ、その他の重要な情報のアーカイブ)。





OpenBSDでソフトRAIDを編成するには、次の手順を実行します。

(アレイは2台のWestern Digital 500GB HDDから組み立てられます)

 # dmesg |grep WD wd2 at pciide0 channel 1 drive 0: WDC WD5000AAKS-00UU3A0 wd3 at pciide0 channel 1 drive 1: WDC WD5000AAKS-00UU3A0
      
      







さらに、すべては厳密にman softraidに従っており、ディスクを初期化します(MBRブートコードとMBRパーティションテーブルを上書きします)

 # fdisk -iy wd2 # fdisk -iy wd3
      
      







ディスク上にRAIDパーティションを作成します

 # printf "a\n\n\n\nRAID\nw\nq\n\n" | disklabel -E wd2 # printf "a\n\n\n\nRAID\nw\nq\n\n" | disklabel -E wd3
      
      







配列を収集します

 # bioctl -c 1 -l /dev/wd2a,/dev/wd3a softraid0
      
      







ディスクの最初/タイトルを使用する前にクリーニングすることをお勧めします

 # dd if=/dev/zero of=/dev/rsd0c bs=1m count=1
      
      







配列を初期化してフォーマットする

 # fdisk -iy sd0 # printf "a\n\n\n\n4.2BSD\nw\nq\n\n" | disklabel -E sd0 # newfs /dev/rsd0a
      
      







気配りのある読者は、新しく作成したアレイの先頭をクリーニングするときにrsd0という名前を使用し、ディスクにパーティションを作成するときに指定したことに気付くでしょう。

sd0。 違いを理解するために、Michael Lucasによる素晴らしい本Absolute OpenBSD:UNIX for the Practical Paranoidに目を向けましょう。



ご覧のように、表には2つのタイプのデバイスが示されています-「raw」デバイスとブロックデバイス。 rawで動作するように記述されたプログラムがあります

デバイス。ブロックデバイスでは機能しません。したがって、その逆も同様です。

ブロックデバイスへの書き込み/ブロックデバイスからの読み取りでは、データはバッファリングされ、特定の制限(バッファサイズ)に達すると、ディスクにアクセスします。

rawデバイスへの書き込み/ rawデバイスからの読み取り時には、データはすぐにデバイスに転送されます。

M.ルーカスは、これらのメカニズムの理解を促進するために次の例を示します。



目の前に錠剤を入れる必要のあるボトルがあると想像してください。 あなたは右手で錠剤を取り、それをあなたの左にシフトし、

左手がいっぱいになるまで、左手からすべてのタブレットをボトルに注ぎます-これはブロックデバイスで動作します。 あなたの左手

バッファの役割を果たしました。 次に、各タブレットをボトルに1つずつ入れます。これは未加工のデバイスで機能します。

*私の説明の不器用な翻訳が理解できることを本当に願っています



最後の手順は、アレイをマウントし、ブート時に自動的にマウントするように/ etc / fstabを修正することです。

 #mkdir /raid #mount /deb/sd0a /raid #cat /etc/fstab ---skip--- /dev/sd0a /raid ffs rw,nodev,nosuid 1 2 ---skip---
      
      







4. rtorrent + rutorrent + apache2(異なるトレントが必要であり、異なるトレントが重要です)。





最初の料理(別名初期設定)を準備するときでも、急流ロッキングチェアの作業に必要なコンポーネントをインストールしました。

ポートからインストールします。



rtorrentをrutorrentと連動させるには、configureスクリプトオプション--with-xmlrpc-cを使用してコンパイルする必要があります。このため、ディレクトリに移動します



 # cd /usr/ports/net/rtorrent/
      
      







MakefileのCONFIGURE_ARGSパラメーターを修正します

 CONFIGURE_ARGS= ${CONFIGURE_SHARED} --disable-debug --with-xmlrpc-c
      
      





*小さなヒント、素晴らしいFlavorsメカニズム、configureスクリプトオプション以外はありません。Makefileを見て推測するのは難しくありません

www / php5 / extensionsなど。



rtorrent configは過剰であると考えます。トレントは、/ dataにマウントされた別のディスクに追加され、

NFS フォルダーの権利

 # ls -la /data/ total 16 drwxr-xr-x 4 root wheel 512 Dec 11 18:41 . drwxr-xr-x 16 root wheel 512 Dec 20 13:13 .. drwxr-xr-x 12 p2p p2p 1024 Dec 20 20:19 torrents
      
      







rtorrentが働くユーザーを作成する

 # adduser Use option ``-silent'' if you don't want to see all warnings and questions. Reading /etc/shells Check /etc/master.passwd Check /etc/group Ok, let's go. Don't worry about mistakes. There will be a chance later to correct any input. Enter username []: p2p ---skip---
      
      







rtorrent自動起動、/ etc / rc.localに追加

 if [ -x /etc/rtorrent.sh ]; then echo -n ' rtorrent'; /etc/rtorrent.sh fi
      
      







rtorrent.sh

 # cat /etc/rtorrent.sh su p2p -c '/usr/local/bin/screen -m -d -S rtorrent /usr/local/bin/rtorrent'
      
      







リストの次はrutorrentです

 # cd /var/www/ # mkdir sites/ # cd sites/ # wget http://rutorrent.googlecode.com/files/rutorrent-3.2.tar.gz # tar xzvf rutorrent-3.2.tar.gz # chown -R www:www rutorrent # chmod -R 777 rutorrent/share/
      
      







それでは、システムにすでに存在するapache2の設定に取りかかりましょう。 必要なパラメータを使用したシステム起動時の自動起動は、次のように解決されます

 #cat /etc/rc.conf.local httpd_flags="-u"
      
      





* Apacheのchrootを無効にするために追加した-uフラグ



rutorrentについては、別のエイリアス(最初の段落で説明)とVirtualHostを作成しました

 # cat /var/www/conf/Includes/rutorrent.home.local.conf <VirtualHost 192.168.254.10:80> DocumentRoot /var/www/sites/rutorrent ServerName rutorrent.home.local ServerAlias www.rutorrent.home.local ErrorLog "|/usr/local/sbin/rotatelogs2 /var/log/httpd/http.rutorrent.home.local-error_log.%Y-%m-%d-%H_%M_%S 86400" CustomLog "|/usr/local/sbin/rotatelogs2 /var/log/httpd/http.rutorrent.home.local-access_log.%Y-%m-%d-%H_%M_%S 86400" common VirtualHost <b>!!! - ,      </b> <Directory /> AllowOverride AuthConfig DirectoryIndex index.html Order Deny,Allow Deny from all Allow from 192.168.0.0/16 Directory <b>!!! - ,      </b> SCGIMount /RPC2 127.0.0.1:5000
      
      







この料理の最後の部分は、rutorrent Webインターフェースへのパスワードアクセスのセットアップです。

rutorrentフォルダーで、.htaccessファイルを作成します

 # cat /var/www/sites/rutorrent/.htaccess AuthName "Ololo can be found here!" AuthType Basic AuthUserFile /home/onotole/.htpasswd
      
      







指定されたパスのパスワードファイル

 #htpasswd -c /home/onotole/.htpasswd admin
      
      







Apacheを起動し、作業の成果を確認します

 #apachectl start
      
      







いくつかのスクリーンショット=)







5. NFSサーバー(LANコンピューターからアクセスするためのネットワークフォルダー)。





NFSマウント用にクライアントが使用できるフォルダー

 # sed '/ *#/d; /^$/d' /etc/exports /data -alldirs -mapall=nobody -network=192.168.254 -mask=255.255.255.0 /raid -alldirs -mapall=nobody -network=192.168.254 -mask=255.255.255.0
      
      







アクセス権

 #chmod 777 /raid
      
      







システムの起動時にnfsdを起動する

 # grep nfs /etc/rc.conf.local nfs_server=YES
      
      







デスクトップにFreeBSDをインストールし、/ etc / fstabマウントフォルダーを編集しています

 #grep gateway /etc/fstab gateway:/data /home/onotole/data nfs ro 0 0 gateway:/raid /home/onotole/share nfs rw 0 0 #mount ~/data #mount ~/share
      
      







6.作業を伴うVPNトンネル。 FreeBSD(mpd5)OpenBSD(ppp)(ご存知のように、時々自宅で仕事をしています)。





職場では常にローカルネットワークにアクセスする必要があるため、職場のサーバーとホームサーバーの間にVPNトンネルを編成しました。



mpd5の構成は次のようになります

 startup: set user onotole ololo admin set console self 127.0.0.1 5005 set console open set web self 192.168.0.1 5006 set web open default: load pptp_vpn pptp_vpn: create bundle static pptp1 set ipcp ranges 10.255.255.1/32 10.255.255.2/32 set iface route 192.168.254.0/24 set iface enable proxy-arp set iface enable on-demand set bundle enable compression set bundle enable crypt-reqd set ccp yes mppc set mppc yes compress set mppc yes e128 set mppc yes stateless create link static lpptp1 pptp set link action bundle pptp1 set link no pap set link yes chap set auth authname "ololo" set auth password "123" set link mtu 1460 set link keep-alive 0 0 set link max-redial -1 set pptp self 1.2.3.4 set pptp peer 0.0.0.0/0 set link enable incoming
      
      







OpenBSDで、次のことを行います。

パラメーターnet.inet.gre.allowを変更します

 # sysctl -w net.inet.gre.allow=1 net.inet.gre.allow: 0 -> 1
      
      







/etc/sysctl.confのパラメーターの値も変更します

 # grep gre /etc/sysctl.conf net.inet.gre.allow=1
      
      







pppデーモン、メイン構成

 # sed '/ *#/d; /^$/d' /etc/ppp/ppp.conf default: set log Phase Chat LCP IPCP CCP tun command disable ipv6cp vpn: set device "!/usr/local/sbin/pptp --nolaunchpppd work-onotole.com" set timeout 0 set lqrperiod 600 set redial 30 set authname ololo set authkey 123 set dial set login set mppe 128 stateless accept chap enable mssfixup disable acfcomp protocomp deny acfcom #
      
      







リンクを上げるとき(ルートを追加してpf.confを歪める)

 # cat /etc/ppp/ppp.linkup vpn: add work-onotole.com 10.110.1.97 add 192.168.0.0 255.255.255.0 10.255.255.1 ! sh -c "/sbin/pfctl -f /etc/pf.conf"
      
      







落下するとき(ルートを削除してpf.confを歪める)

 # cat /etc/ppp/ppp.linkdown vpn: delete 192.168.0.0/24 delete work-onotole.com ! sh -c "/sbin/pfctl -f /etc/pf.conf"
      
      







システムの起動時にリンクを上げる

 # cat /etc/hostname.tun0 !/usr/sbin/ppp -ddial vpn >/dev/null 2>&1
      
      







7. NUT + UPS Ippon Back power pro 400(予期しない停電を恐れていません)。





デーモン用の設定を作成します。

ups.conf

 # cat /etc/nut/ups.conf [myups] driver = megatec port = /dev/tty00 #   com1 desc = "Server"
      
      







upsd.users

 # cat /etc/nut/upsd.users [admin] password = ups123 allowfrom = localhost actions = SET instcmds = ALL [monuser] password = mon123 allowfrom = localhost upsmon master
      
      







upsd.conf

 # cat /etc/nut/upsd.conf LISTEN 127.0.0.1 3493
      
      







upsmon.conf

 # cat /etc/nut/upsmon.conf MONITOR myups@localhost 1 monuser mon123 master MINSUPPLIES 1 #      SHUTDOWNCMD "/sbin/shutdown -h now" #  POLLFREQALERT 5 #       DEADTIME 15 #  ,        POWERDOWNFLAG /etc/killpower #     FINALDELAY 60 # ,      
      
      







正しい権利をtty00に設定し、ドライバーをロードします

 # chown _ups:wheel /dev/tty00 # chmod 600 /dev/tty00 # /usr/local/bin/upsdrvctl start
      
      







悪魔を実行する

 # /usr/local/sbin/upsd # /usr/local/sbin/upsmon
      
      







UPSのステータスを確認する

 # upsc myups@localhost battery.charge: 97.5 battery.voltage: 13.60 battery.voltage.nominal: 12.0 driver.name: megatec driver.parameter.pollinterval: 2 driver.parameter.port: /dev/tty00 driver.version: 2.4.1 driver.version.internal: 1.6 input.frequency: 50.1 input.frequency.nominal: 50.0 input.voltage: 221.5 input.voltage.fault: 221.5 input.voltage.maximum: 245.0 input.voltage.minimum: 206.8 input.voltage.nominal: 220.0 output.voltage: 221.5 ups.beeper.status: enabled ups.delay.shutdown: 0 ups.delay.start: 2 ups.load: 19.0 ups.mfr: unknown ups.model: unknown ups.serial: unknown ups.status: OL #   ,     OB -    LB -   ups.temperature: 25.0 ups.type: standby
      
      







自動実行に追加

/etc/rc.localで自動実行ナットを設定します

 if [ -x /usr/local/bin/upsdrvctl ]; then echo -n ' nut' chown _ups:wheel /dev/tty00 chmod 600 /dev/tty00 /usr/local/bin/upsdrvctl start > /dev/null 2>&1 /usr/local/sbin/upsd > /dev/null 2>&1 /usr/local/sbin/upsmon > /dev/null 2>&1 fi
      
      







ディスク上のデータが同期された後に電源をオフにし、次をrc.shutdownに追加します

 if [ -f /etc/killpower ]; then /usr/local/bin/upsdrvctl shutdown sleep 60 fi
      
      







8.ファイアウォール(グレートPFパケットフィルター)。





パケット転送をオンにする

 #sysctl -w net.inet.ip.forwarding=1
      
      







/etc/sysctl.confで適切な変更を行います

 #grep ip.forwarding /etc/sysctl.conf net.inet.ip.forwarding=1 # 1=Permit forwarding (routing) of IPv4 packets
      
      







PF configは単純ではありません

 # sed '/ *#/d; /^$/d' /etc/pf.conf ext_if="rl0" int_if="re0" vpn_if="tun0" set block-policy return set skip on lo0 match in all scrub (no-df) block all pass on $int_if pass on $vpn_if pass out on $ext_if #    pass out on $ext_if from $int_if:network to any nat-to ($ext_if) #  3333(tcp,udp)  dc++ pass in on $ext_if proto {tcp,udp} from any port 3333 rdr-to 192.168.254.2 synproxy state
      
      







それだけです! OpenBSDが装備されている=)



これは私が私の家のservochkaを手に入れた方法です。

私はOpenBSDでの作業が大好きで、妥協、単純さ、信頼性に出くわします。 ところで、私はmanコマンドの価値に本当に感謝しています。

このOSのおかげで今だけ。 システムのドキュメントは賞賛に値しません。 開発者への深い弓と深い感謝。



準備では、次のソースを使用しました。

1.男性)

2.http//openbsd.org/faq/index.html

3. http://unixadmins.su/index.php/topic,196.0.html

4. www.openbsd.ru/docs/steps/nut.html

5. mpd.sourceforge.net/doc5/mpd.html

6.絶対OpenBSD:実用的な妄想のためのUnix

間違いなく傑作のマイケル・ルーカスに感謝します!



All Articles