Linuxを極める5
自宅で立てているLinuxサーバのS/W側の話である。現状Windows7のホスト上にVirtualBoxでCentOS6を動かしている。
LinuxではSSHでリモート管理、外からhttptunnelで秘密のポートでSSH接続してホストのWindows側へリモートデスクトップ接続を行え、もちろんSCPでファイル転送も可能、SambaでWindowsからファイル共有できている。
- Oracle Virtual Box
VirtualBoxはここからfor
Windows hostをダウンロードしてインストール。
そこに適当な仮想マシンを作ってLinuxをインストールする。
- CentOSインストール
CentOSのISOをダウンロードして仮想マシンにセットしてブートする。今回はCentOS6.6のMinimalを使用。あとは普通にインストールすれば終了。
- LAN設定
VirtualBoxのゲストOS設定で、ネットワークアダプターの割り当てをブリッジアダプターに変更。
Linuxで以下の設定
/etc/sysconfig/network-scripts
ONBOOT=yes
BOOTPROTO=static
IPADDR=
NETMASK=
GATEWAY=
/etc/resolve.conf
nameserver
/etc/sysconfig/network
HOSTNAME=
service network restart
- ユーザー追加
useradd user名
passwd user名
- SSHD
/etc/ssh/sshd_config
Port
LoginGraceTime
PermitRootLogin
MaxAuthTries
AllowUsers
service sshd restart
ポートを変更したらFirewall設定
- SAMBA
yum install samba
/etc/samba/smb.conf
workgroup =
netbios name =
hosts allow =
localmaster = no
load printers = no
wins support = yes
パスワード設定
pdbedit -a username
SE Linux設定
chcon -t samba_share_t /home/user
起動と自動起動設定
service smb start
service nmb start
chkconfig smb on
chkconfig nmb on
Firewall設定
- httptunnel
コンパイラインストール
yum groupinstall "Development Tools"
httptunnelをダウンロード
展開
tar -xzf http....tar.gz
コンパイル&インストール
./configure
make
make install
Firewall設定
/etc/rc.d/rc3.dに次の起動コマンドを追加。ポート8888に来たバケットをlocalhostのportに送る。
/usr/local/bin/hts -F localhost:port 8888
クライアント側
portに来た要求をproxy経由でserverの8888ポートに送る。serverはFQDNで指定。
htc -F port -P proxy:proxy_port server:8888
使いたいツールでlocalhost:portに接続する。
ちなみにSSHはポート22、RDCはポート3389である。
- ダイナミックDNSの更新(ddo)
wgetのインストール
yum install wget
更新するスクリプトを作成する。
/usr/bin/wget --no-check-certificate -O $HOME/http/dds.html 'https://free.ddo.jp/dnsupdate.php?dn=name&pw=password'
これをcrondで定刻に起動する。
crontab -e
03 * * * * /home/user/bin/ddns.up
- ダイナミックDNSの更新(mydns)
更新するスクリプトを作成する。
/usr/bin/wget -O $HOME/http/mydns.html --http-user=name --http-password=password 'http://www.mydns.jp/login.html'
これをcrondで定刻に起動する。
crontab -e
33 * * * * /home/user/bin/mydns.up
- トンネル経由でホストOSにリモートデスクトップ接続する
Windowsクライアント側ではPUTTYを使う。ホスト名を入れ、プロトコルをSSHにし、Connection-SSHでSSH2を選択し、TunnelsでL3389 フォワード先ホスト:3389に設定して、Openする。ユーザ名、パスワードを入れると普通にシェルが立ち上がる。だが裏では3389ポートでLISTENしている。リモートデスクトップ接続でlocalhost:3389につなぐと、そのまま接続できる。
またputtyはstored sessionとして設定を保存でき、PUTTY.EXE @labelで自動的にロード・接続ができるのだが、@の関係でショートカットに入れてもうまくいかない。バッチファイルに記述する。
- stone
実行モジュールの作成
tar zxvf stone-2.3d-...tar.gz
make linux-ssl
サーバ側の起動 - sportでの接続をhost:portに転送
stone host:port sport
クライアント側起動 - portへの接続をproxy経由でserver:sportに転送
stone proxy:8080/http port "CONNECT server:sport HTTP/1.0"
- stoneのSSL暗号化
秘密キーと証明書の作成
#openssl req -new -outform pem -out stone.cert -newkey rsa:1024 -keyout stone.key -nodes
-rand ./rand.pat -x509 -batch -days 356
#cat stone.cert stone.key > /usr/share/ssl/certs/stone.pem
サーバ側起動
#stone host:22 443/ssl
クライアント側起動 - 10022への接続をssl暗号化して10443に出し、10443で受けたものをproxy経由でserver:443に転送する
#stone localhost:10443/ssl 10022 -- proxy:8080/http 10443 "CONNECT server:443 HTTP/1.0"
Windowsの場合もオプションは同様だが、デフォルトのキーファイルがないと言われる。c:\usr\local\ssl\certs\stone.pemとそれっぽい場所を作って置くか、次のようにオプションでファイルを指定する。
C:\> stone -z key=c:\stone\stone.key -z cert=c:\stone\stone.cert
localhost:10443/ssl 11022 -- proxy:8080/http 10443 "CONNECT server:443 HTTP/1.0"
- 時刻合わせ
ゲストOSの時計はそれほど狂うわけではないが、ゲストをサスペンドしていると再開したときには止めた時刻からの再開となるので激しく遅れる。
Guest Additionsで時刻同期させる。
コンパイル環境を用意
yum groupinstall "Development Tools"
uname -rとソースのディレクトリを合わせる。
cd /usr/src/kernels
ln -dns 2.6.32-504.16.2.el6... `uname -r`
export KERN_DIR=/usr/src/kernel/`uname -r`
デバイス-Guest AdditionsのCDイメージを挿入
mount /dev/cdrom /mnt
インストール(コンパイル)
/mnt/VBoxLinuxAdditions.run install
同期間隔を60秒に設定
VBoxControl guestproperty set "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold"
6000
- iptables
フィルタリングにはiptablesを使う。
今の設定を見る
#iptables -L
入力フィルタを追加する
/etc/sysconfig/iptables
#samba
-A INPUT -p udp --dport 137 -j ACCEPT
-A INPUT -p udp --dport 138 -j ACCEPT
-A INPUT -p tcp --dport 139 -j ACCEPT
-A INPUT -p tcp --dport 445 -j ACCEPT
#tcp port
-A INPUT -p tcp --dport 2222 -j ACCEPT
再起動してみる
#service iptables restart
- VirtualBoxのサービス化
ホストOSの起動時に自動的にゲストOSも起動させる
VBoxVmServiceをインストール
インストール先のVBoxVmService.iniを編集
VmNameを変更
AutoStart=yes
ShutdownMethod=savestate
サービス登録
VmServiceControl -i
VmServiceTrayを使うと通知領域からゲストOSの停止・開始が行える
これでサービス化すると仮想マシンのコンソールが使えなくなる。ゲストOSを一時停止してVirtualBoxで再開するとよい。逆にVirtualBoxのコンソールを閉じるときに状態を保存して、TrayでゲストOSをStartすると再開できる。
→ゲストOSがWindowsだとうまくいかない。サービスとトレイを終了してからVirtualBoxアプリを起動することで可能となる。
あるいは下のRDP接続を使う。
ゲストOSをシャットダウンしてメモリやCPUの設定を変えてVBoxVmServiceで起動しても、設定が反映されないことがある。
シャットダウンしてVirtualBoxで設定変更した後、一度ゲストOSをVirtualBoxで起動すると反映される。
- ゲストOSのコンソール
リモートデスクトップクライアントを使ってゲストOSのコンソールを出せる。
Extention Packをダウンロードする
環境設定の機能拡張でパッケージを追加
ゲストOS設定のディスプレイのリモートディスプレイで有効化とポート番号設定
※3389だとホストWindowsのリモートデスクトップとぶつかってつながらなくなるので別の番号にする。
リモートデスクトップ接続でホストOSのコンピューター名:設定したポート番号で接続する
認証で外部にすると認証が働きそうだが、うまくいかない
VirtualBox状態の更新 (2016/1/14)
VirtualBox (2015/7/6)
VirtualBox+CentOS7 (2015/4/24)
・2015年4月24日
-
VirtualBox + CentOS7.1
常時起動マシンには仮想マシンとしてLinuxも動かしていた。VMware ServerにCentOS4というとても古いシステムのまま10年近く経つ。さすがに古いのが気になってきたことと、いろいろと変わったらしいCentOSを試してみようといこうとでCentOS7に更新することにした。
まずVMwareServer2に入れようとするとインストーラのブートでクラッシュして起動しない。なぜかゲストOSのメモリが増やせない辺りがまずいようだが、Server自体がとっくの昔にサポート終了している。ということで他の仮想化機能に変えることにする。ここは適当にOracle VirtualBox(4.3.26)にする。これならばCentOS7.1は普通にインストールができた。
するとVMware Serverの仮想マシンにネットワークがつながらなくなった。どうやらネットワークアダプタにVirtualBox Host-Only Networkが追加されたことで、VMwareの使うアダプタがおかしくなったもよう。VMnetcfg.exeを使ってブリッジ用アダプタを本物のNICに固定することで、通信できるようになった。
結局CentOS7はサービス関連がsystemdになったこと、起動がGrub2になったこと、ネットワーク関連コマンドがipになったこと、iptablesからfirewalldになったこと辺りが大きな変化だった。
しかしhttptunnelもstoneもなぜかうまく動かなかった。というわけで結局CentOS6.6で動かすことにした。詳細はここに。
-
ファイル転送が遅い
VirtualServer+CentOS4を使っているときはホストWindowsとゲストLinux間のSAMBA共有ファイル転送が異常に遅かった。しかしVirtualBox+CentOS6では問題ない速さになった。
一方でVirtualBoxのゲストOSが動いていると、外部PCとホストWindows間のファイル転送がとても遅い...転送が必要なときはゲストOSをサスペンドして転送している。NAT接続では問題ないが、ブリッジ接続だと発生するもよう。
・2015年4月25日
-
CentOS6運用開始
常時起動マシンにVirtualBoxを使ってCentOS6.6を入れて常時稼働Linuxとして運用開始。
・2015年7月6日
・2015年9月1日
-
Dynamic DO!(ddo DDNS)
ダイナミックDNSとして使ってきたddoが使えなくなった。無料サービスの規定が変わって使用できる期間が限られるようになっていたのが、ついに期限を迎えた。まあmydnsが使えるからいいけど。。。
・2015年9月10日
-
Windows10
今までVMware Serverを使ってWindowsXPを動かしてきたが、VirtualBox4.3.30+Windows10に更新した。GuestAddtionsを入れるとドライバ類もきれいになったのだが、スリープを使える状態にならない。ゲスト一時停止でのVBoxサービスからVirtualBoxアプリとの受け渡しができない。サービスとトレイを終了してからVirtualBoxアプリを起動することで回避できる。
・2016年1月14日
http://www10.plala.or.jp/p205tb16/linux6.html
坂井瑞穂