信頼はずっと、挑戦はもっと。

お問い合わせ
TEL:03-3496-3888

BLOG コアテックの社員ブログ (毎週月曜~金曜更新中)

LIST OF ARTICLES

記事一覧

  • イベント

    運動会

    どうもです。夏休みが終わったあとのイベントとして恒例の運動会の時期がやってまいりました。いや、台風のごとく過ぎ去りました。姫も彦も運動会の当日まで台風の影響をもろにうけ、当日まで決行か延期かの瀬戸際でありました。どちらも延期をせずに実施できたので良かったですが、ギリギリまで雨が降っていた影響で場所取りをする者(自分を含め父親)は、たまったもんじゃありませんでした。先生方も開会の2時間ぐらい前から校庭にたまった水たまりを塁ベースぐらいのスポンジを使って吸ってはバケツに絞っての繰り返し。それでも取り切れるはずもなく、、生徒、園児は、頑張って徒競走や玉入れ、演目をこなしていました。小学生が行った組体操は、悲鳴の嵐w姫と彦 の徒競走の結果は、、、姫は、5人中4位彦は、5人中3位の結果となりました。しかも、彦は、スタート直前よそ見をして、、ワンテンポ遅れてスタート、、ちゃんとスタートしてれば1位だったかもしれません、、それに二人とも競争意識がないので、1位にはなれないのかもしれません、、今回は、運動会という大きなイベントありましたので、これにて。
  • イベント

    ロボット

    どもです。リニューアル後の投稿ということで、すべてがまっさらです。ということで新たに書いていきたいと思いますが、今回は特別イベントはありませんので、ざっくりと。とある休日に子供たちと引きこもりをしまして、ロボットになりました。ロボットといっても、ダンボールロボット。そう、「Nintendo Labo ロボットキット」を作りロボットになりきりました。今年8歳と4歳の姫と彦ですので、取り合うこと予想されるため、そもそも、ダンボールだけでも売ってるというのはいい商売ですが、もう1つ追加で購入し、二人分のキットを用意して挑みました。朝9時ぐらいから姫、彦+自分のペアで取り掛かりましたが、お昼ご飯の中断もあり、夕方過ぎまでかかりましたが完成することができました。彦は、途中で作るのが飽きてしまいました。。。完成してからは二人とも、大騒ぎで交互にロボットになって遊んでいました。彦は、姫のやっているときにも同じように手を広げたりして楽しんでました。二人とも楽しんだあとは、色を塗ったり、折り紙を張り付けたりして、デコってました。作成に結構な時間がとられましたが、楽しく過ごせた1日でした。ではまた。
  • テクログ

    ラズパイでVPNアクセスルータを作ってみた

    はい!ムチャぶりおにぃです。とある案件にてVPNアクセスルータが必要になった為、普通に売っているブロードバンドルータではなく技術会社っぽくLinuxを使ってVPNアクセスルータを作ってみた。案件に必要最低限の設定のみしています。といいつつ、先人たちのお知恵を存分に拝借しています。 (1)~機材集め~まず、機材選定をする段階で、Linuxが動くことが前提になったが今となるとどんな機器でも動くので、コストを抑えるためにRaspberry Piを選んでみました。Raspberry Piにもいろいろなバージョンがあり、【Raspberry Pi 3 Model B】で搭載されている無線LANは今回不要なので、あえて【Raspberry Pi 2 Model B】(ラズパイ2)を選択。あと、動かすためのmicroSD(後述のOSイメージが3Gあるので4GB以上を用意)・スマホの充電器・ケースを購入。全部で9千円いかないぐらい(安いね)。 (2)~OS選択~ラズパイで利用できるLinux・Raspbian(Debianベース)・Pidora(Fedoraベース)・Arch Linux・CentOS 7とあり、去年の3月ぐらいから利用できるようになった【CentOS 7】を選択しました。弊社のシステム基盤としては、CentOSをベースとして使っていますので。 (3)~OSインストール~CentOSのオフィシャルサイトからラズパイ2用のイメージファイルをダウンロードして、microSDに書き込みます。ダウンロード先:https://wiki.centos.org/Download └ RaspberryPi2 (img) microSDに書き込むツールは、シリコンリナックス社様が公開している【DD for Windows】を利用しています。ダウンロード先:http://www.si-linux.co.jp/techinfo/index.php?DD%20for%20Windows └ Ver.0.9.9.8【DD for Windows】の使い方は、検索して調べてね。Windows10で作業していますが、「管理者として実行」で実行しないと利用できませんでした。Windows7以降必須らいしいです。 (4)~初期設定~CentOSを書き込んだmicroSDをラズパイ2に差し込んで起動します。この時、minimalでインストールされた状態のCentOSが起動しますので、ログイン画面が表示されたらroot/centosでログインします。とりあえず、LANケーブルを刺せばDHCPでIPが取得できるので、アップデートだったりパッケージのインストールは可能です。ということで、以下の流れで設定しています・・・◆操作しやすいようにコンソールログインをして、ifconfigをしましょう。# ifconfig・インターフェースのIPアドレスをWindows/MacからSSHで接続しましょう。◆microSDをすべて利用できるようにパーティションの拡張# fdisk /dev/mmcblk0・パーティション領域確認します。「p」・拡張するパーティション(最後のパーテ)を一度削除する。「d」「3」・再度パーティション領域を設定する。「n」「p」「入力せずENTER」「入力せずENTER」※First sector/Last sectorは自動で入力されます。・パーティション領域を保存します。「w」# shutdown -r now・変更したパーティションを反映させる# resize2fs /dev/mmcblk0p3・パーティション領域を実際に使えるよう拡張する◆キーボード・タイムゾーンの設定# localectl set-keymap jp# timedatectl set-timezone Asia/Tokyo◆ログインユーザー追加(wheel追加)・公開鍵を作成# adduser hogehoge# usermod -G wheel hogehoge# passwd hogehoge・コンソールでログインするためにパスワードを設定。# su - hogehoge・作成したユーザーにスイッチ。$ mkdir -m 700 ~/.ssh$ ssh-keygen -q -N "" -f ~/.ssh/id_rsa$ cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys$ chmod 600 ~/.ssh/authorized_keys$ cat ~/.ssh/id_rsa・リモート元に転記。$ exit◆sshログインを公開鍵方式に設定変更# sed -i -e "/^root/a\hogehoge ALL=(ALL) NOPASSWD:ALL" /etc/sudoers# sed -i -e 's/^%wheel/# %wheel/g' /etc/sudoers# sed -i -e '/#PermitRootLogin/a\PermitRootLogin no' /etc/ssh/sshd_config# sed -i -e 's/^PasswordAuthentication yes/#PasswordAuthentication no/g' /etc/ssh/sshd_config# service sshd restart・ログインチェック(rootログインできないこと・作成したユーザーで鍵ログインできること)◆rootパスワード削除# sed -i -e 's/^root/#root/g' /etc/shadow# sed -i -e '/root/a\root:*LOCK*:14600::::::' /etc/shadow# sed -i -e '/#root/d' /etc/shadow◆CTRL+ALT+DELETEを無効化# ln -s /dev/null /etc/systemd/system/ctrl-alt-del.target◆IPv6を無効化# cat << EOL > /etc/sysctl.d/disable_ipv6.confnet.ipv6.conf.all.disable_ipv6 = 1net.ipv6.conf.default.disable_ipv6 = 1EOL# sysctl -p /etc/sysctl.d/disable_ipv6.conf◆irqbalanceバグ# cat << EOF > /etc/cron.daily/irqbalance#!/bin/sh/bin/systemctl restart irqbalance.serviceEOF◆キャッシュクリア・パッケージアップデート# yum clean all# yum -y update◆基本パッケージをインストール# yum -y install chrony ntpdate perl bind-utils iptables-services wget# yum -y groupinstall "Development Tools"◆フィルタリングソフトをiptablesに変更# systemctl stop firewalld# systemctl disable firewalld# mv /etc/sysconfig/iptables /etc/sysconfig/iptables.orig# cat << EOL > /etc/sysconfig/iptables*filter:INPUT DROP [0:0]:FORWARD DROP [0:0]:OUTPUT ACCEPT [0:0]-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT-A INPUT -m state --state INVALID -j DROP-A INPUT -p tcp -m tcp --sport 80 --dport 80 -j DROP-A INPUT -i lo -j ACCEPT-A INPUT -s 事務所の固定IP/32 -j ACCEPT-A INPUT -p icmp -j ACCEPT-A INPUT -j DROPCOMMITEOL# systemctl enable iptables# systemctl start iptables◆時刻設定# sed -i -e 's/0.centos.pool.ntp.org/ntp.nict.jp/g' /etc/chrony.conf# sed -i -e 's/1.centos.pool.ntp.org/ntp1.jst.mfeed.ad.jp/g' /etc/chrony.conf# sed -i -e 's/2.centos.pool.ntp.org/ntp2.jst.mfeed.ad.jp/g' /etc/chrony.conf# sed -i -e 's/3.centos.pool.ntp.org/ntp3.jst.mfeed.ad.jp/g' /etc/chrony.conf# ntpdate ntp.nict.jp# systemctl start chronyd# systemctl enable chronyd (5)~ルータ設定~初期設定が完了したらルータにすべく以下の流れで設定しています・・・設定が終わり再起動するタイミングでLANケーブルをONU(光回線終端装置)とつなぎ替えます。◆パッケージインストール# yum -y install rp-pppoe ppp-devel◆PPPoE設定# pppoe-setup・出てくる質問に答えて設定をしていく。Enter your Login Name:ISPの接続IDを入力Enter the Ethernet interface:LANケーブルを刺すインターフェイス名を入力Enter the demand value:常時接続なので「no」Enter the DNS information here:ネームサーバーを固定するので「8.8.8.8」Enter the secondary DNS server address here:ネームサーバーを固定するので「8.8.4.4」Please enter your Password:ISPの接続パスワードnormal user to start or stop DSL connection:rootユーザー以外操作させないので「no」Choose a type of firewall:ルータとして利用するので「2」Please enter no or yes:起動時に有効かするので「yes」※入力確認が表示されたら「y」で保存◆インターフェイス設定・pppoeで使うインターフェースのプライベートIPを固定する# cp /etc/sysconfig/network-scripts/ifcfg-eth0.bak /etc/sysconfig/network-scripts/ifcfg-eth0# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.bak# nmcli c modify eth0 ipv4.addresses "10.10.10.254/24"# nmcli c modify eth0 +ipv4.dns 8.8.8.8# nmcli c modify eth0 ipv4.method manual# nmcli c modify eth0 ipv4.gateway "10.10.10.254"# nmcli c modify eth0 ipv4.never-default yes◆SELinuxを無効化するsed -i -e 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config◆起動時にpppoe接続できない対応・/etc/sysconfig/networkのファイルがないとpppoe接続ができないtouch /etc/sysconfig/network◆再起動してルータになっているかテストをする# shutdown -r now・設定不備がなければpppoe接続できていてログイン画面になる (6)~VPN設定~VPNにも、IPsec, L2TP/IPsec, PPTP, IPIP, L2TPv3と多種多様の方式があります。今回は、セキュリティーレベルを考えると【L2TP/IPsec】なのですが、通信速度が遅くなるので【pptp】を選択しました。ということで、VPN設定についても以下の流れで設定しています・・・◆パッケージインストール・yumでインストールできないのでソースインストールになります。# cd /usr/local/src# wget https://jaist.dl.sourceforge.net/project/poptop/pptpd/pptpd-1.4.0/pptpd-1.4.0.tar.gz# tar xvzf pptpd-1.4.0.tar.gz# cd pptpd-1.4.0# ./configure --prefix=/usr# make# make install# cp samples/pptpd.conf /etc/# cp samples/options.pptpd /etc/ppp/・conf設定# cp /etc/pptpd.conf /etc/pptpd.conf.orig# echo "localip 10.10.10.254" >> /etc/pptpd.conf# echo "remoteip 10.10.10.11-30" >> /etc/pptpd.conf# cp /etc/ppp/options.pptpd /etc/ppp/options.pptpd.orig# sed -i -e '/ms-dns 10.0.0.2/a\ms-dns 8.8.4.4' /etc/ppp/options.pptpd# sed -i -e '/ms-dns 10.0.0.2/a\ms-dns 8.8.8.8' /etc/ppp/options.pptpd# echo "#" >> /etc/ppp/options.pptpd# echo "mtu 1200" >> /etc/ppp/options.pptpd# echo "mru 1200" >> /etc/ppp/options.pptpd・pptp認証ユーザー設定# cp /etc/ppp/chap-secrets /etc/ppp/chap-secrets.orig# echo 'hogeuser pptpd "hogepass" *' >> /etc/ppp/chap-secrets・パケット転送をできるように設定# sed -i -e '/net.ipv4.ip_forward/d' /etc/sysctl.conf# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf# sysctl -p・pptpd起動スクリプト設定と自動起動設定# cat << EOL > /etc/init.d/pptpd#!/bin/sh## Startup script for pptpd## chkconfig: - 85 15# description: PPTP server# processname: pptpd# config: /etc/pptpd.conf# Source function library.. /etc/rc.d/init.d/functions# See how we were called.case "\$1" in start)    echo -n "Starting pptpd: "    /sbin/modprobe nf_conntrack_proto_gre    /sbin/modprobe nf_conntrack_pptp    if [ -f /var/lock/subsys/pptpd ] ; then        echo        exit 1    fi    daemon /usr/sbin/pptpd    echo    touch /var/lock/subsys/pptpd    ;; stop)    echo -n "Shutting down pptpd: "    killproc pptpd    echo    rm -f /var/lock/subsys/pptpd    ;; status)    status pptpd ;; condrestart)    if [ -f /var/lock/subsys/pptpd ]; then        \$0 stop        \$0 start    fi    ;; reload|restart)    \$0 stop    \$0 start    echo "Warning: a pptpd restart does not terminate existing "    echo "connections, so new connections may be assigned the same IP "    echo "address and cause unexpected results. Use restart-kill to "    echo "destroy existing connections during a restart."    ;; restart-kill)    \$0 stop    ps -ef | grep pptpd | grep -v grep | grep -v rc.d | awk '{print \$2}' | uniq | xargs kill 1> /dev/null 2>&1    \$0 start    ;; *)    echo "Usage: \$0 {start|stop|restart|restart-kill|status}"    exit 1esacexit 0EOL# chmod +x /etc/init.d/pptpd# chkconfig pptpd on# /etc/init.d/pptpd start・iptablesにpptpdとパケット転送の許可設定を追加# sed -i '/icmp/a\-A INPUT -p tcp -m state --state NEW -m tcp --dport 1723 -j ACCEPT' /etc/sysconfig/iptables# sed -i '/icmp/a\-A INPUT -p gre -j ACCEPT' /etc/sysconfig/iptables# sed -i '/-A INPUT -j DROP/a\-A FORWARD -o ppp+ -j ACCEPT' /etc/sysconfig/iptables# cat << EOL >> /etc/sysconfig/iptables*nat:PREROUTING ACCEPT [0:0]:INPUT ACCEPT [0:0]:OUTPUT ACCEPT [0:0]:POSTROUTING ACCEPT [0:0]-A POSTROUTING -o ppp+ -j MASQUERADECOMMITEOL# service iptables restart (7)~クライアント設定~WindowsだったりLinuxだったりにpptp認証ユーザー設定で登録したID/PWを使って設定をしてVPN接続しVPNアクセスルータ経由で外部にアクセスできれば設定完了!!あとどのように運用するかは貴方次第!・固定IPのプロバイダを使ってない場合・・・ラズパイを再起動するとIP変わっちゃうよ!なので何かしらの方法でIPを確認する方法を実装しないとです。。。・pppoe接続タイミングの兼ね合いでiptablesがうまく適応できないことがわかっています。現在は/etc/rc.localなどで調整をしています。 そんな感じで設定は完了です。では。
  • テクログ

    負荷分散装置

    ムチャぶりおにぃです。負荷分散装置について、ざっくりと話したいと思います。 負荷分散装置と聞くと、数百万もする鉄の箱をイメージされる方がいらっしゃるかと思いますが、時代の流れでしょうか。。価格も下がり35万で購入できるものまで出てきていますね。 しかし、35万でも高いものは高いです。そこで考えるとなると。。。もっと安くできるのではないかと。。。 まず、負荷分散について話しますと(知っている方は、流してください)、WEBサイトやデータベースで少量のデータの処理であれば、さくっと終わるので気にしなくてもいいですが、膨大なトラフィックやデータとなってくるとかなりの時間がかかってしまいますよね。そこで負荷分散を行い、短時間で終わりにしようというものです。そのまんまですね。 さて、本題。負荷分散を安く抑える方法は、リナックスに負荷分散ができるソフトをインストールして利用しちゃいましょってこと。負荷分散ソフトとしてLVSというものを利用します。 下準備、テスト用として3台のPCを用意し、リナックスをすべてにインストールしておきます。1台が負荷分散用(LB01)、2台がウェブとかメールとかのサービス用(SV01/SV02)として利用します。今回の対象のリナックスは、CentOSになります。 各マシンには、以下のようにそれぞれIPアドレス・ホスト名を設定しておきます。SV01/SV02には、apacheがインストールされていて、ブラウザでアクセスするとSV01・SV02とレスポンスを返す設定になっています。SV01/SV02のデフォルトGWは、LB01からのレスポンスを返答するためにLB01のeth1に向いています。 リナックスのインストール・サービス用マシンの構築・初期設定については、割愛いたします。※CentOSをBASE・Development Tools・Development Librariesのパッケージでインストールした環境で進めております。 LVSは、非常に簡単に設定できます。LB01を起動します。 起動しrootでログインしたら yum -y install ipvsadm を入力。たったこれだけです。Complete!が表示されたらインストール完了です。インストールされているか確認してみましょう。 ipvsadm -v を入力。 ipvsadm v1.25ほにゃららと表示されればインストールされています。 次に、分散処理を行うためのコマンドを実行しましょう。 1.サービス応答用IPアドレスの設定リクエストに答える為のIPアドレスをLB01に設定。LVSにも設定をします。 ifconfig eth0:1 192.168.92.248 netmask 255.255.255.255ipvsadm -Cipvsadm -A -t 192.168.92.248:80 -s rr 2.LVSにサービス応答のサーバー設定実際にサービスを行うサーバーを登録します。 ipvsadm -a -t 192.168.92.248:80 -r 192.168.192.35 -mipvsadm -a -t 192.168.92.248:80 -r 192.168.192.37 -m 3.動作確認ブラウザにてhttp://192.168.92.248へアクセス。とその前に!! 動作確認の前に、もうひと工夫が必要です。 負荷分散で、パケットをほかのサーバーに渡して処理するので、パケットを転送してもいいよっていう設定を許可してあげないといけません。 echo "1" > /proc/sys/net/ipv4/ip_forward これで、設定がOK! ブラウザでチェックしてみよう!正しく設定ができていれば、SV01/SV02が表示されると思います。 これで、負荷分散について、できるようなりました。 高価な負荷分散装置を買うことなく、同じようなことができるようになりますね。 しかし、このままの設定だと問題があります。再起動したら、利用できなくなる。ネットワーク障害・ハード故障などが発生したらそこへのアクセスをさせないように行う。しかもLVSには、その機能が付いていません。 じゃあ、どう解決したらよいのか。。。長くなるため、その話は、また今度、では。