Metaphorical Dream

Squid その2

先日のBlogに書いたことを簡易的に試してみたw
SquidはSiblingで分散処理できるように設定してみる。

PC→DHCP→PC→www(pac取得)→PC→Squid→RT57i(予備機)→Internet上のwww

あとは、PC→Squid→RT57iにNS VPXを咬ませれば概ねOKかなと。

以下、備忘録。

[apache]
yum -y install httpd

vi /etc/httpd/conf/httpd.conf

#ServerName www.example.com:80
 ↓
ServerName squid01.md.jp:80

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
#AllowOverride None
 ↓
AllowOverride All  ← .htaccessの許可

#
#以下2つは不要かも?
#
AddDefaultCharset UTF-8
 ↓
#AddDefaultCharset UTF-8  ← コメントアウト

#AddHandler cgi-script .cgi
 ↓
AddHandler cgi-script .cgi .pl  ← CGIスクリプトに.plを追加

:wq

rm -f /etc/httpd/conf.d/welcome.conf
rm -f /var/www/error/noindex.html

/etc/rc.d/init.d/httpd start
chkconfig httpd on
chkconfig --list httpd


[.htpasswdの設定]
#
#ユーザ名:usr1
#Passwd:test
#
#ユーザ追加は -c無しで実行
#

htpasswd -b -c /etc/httpd/conf/.htpasswd usr1 test

cat /etc/httpd/conf/.htpasswd

/etc/rc.d/init.d/httpd restart


[dhcpd]
yum -y install dhcp

cp /usr/share/doc/dhcp-*/dhcpd.conf.sample /etc/dhcpd.conf

vi /etc/dhcpd.conf

ddns-update-style interim;
ignore client-updates;

#
#以下はOption252の設定
#
authoritative;
option wpad code 252 = string;
option wpad "http://192.168.12.147/proxy.pac";

#
#以下は普通のdhcpdの設定
#各項目の詳細説明は省略。っていうか見れば概ねわかるよね?
#

subnet 192.168.12.0 netmask 255.255.255.0 {

# --- default gateway
option routers192.168.12.7;
option subnet-mask255.255.255.0;

#option nis-domain"domain.org";
option domain-name"md.jp";
option domain-name-servers192.168.12.1;

option time-offset-18000;# Eastern Standard Time
#option ntp-servers192.168.1.1;
#option netbios-name-servers192.168.1.1;

range dynamic-bootp 192.168.12.128 192.168.12.159;
default-lease-time 21600;
max-lease-time 43200;

# we want the nameserver to appear at a fixed address

#host ns {
#next-server marvin.redhat.com;
#hardware ethernet 12:34:56:78:AB:CD;
#fixed-address 207.175.42.254;
#}

}

:wq

/etc/rc.d/init.d/dhcpd start
chkconfig dhcpd on
chkconfig --list dhcpd


[pacファイルの作成]
vi /var/www/html/proxy.pac

function FindProxyForURL(url,host)
{ if(isPlainHostName(host)||
isInNet(host,"192.168.12.0","255.255.0.0")) return "DIRECT";
else return "PROXY 192.168.12.7:8080; DIRECT";
}

#
#【上記スクリプトの説明】
#詳細はMS社IEAK8のヘルプなどを参照
#http://technet.microsoft.com/ja-jp/library/cc817437.aspx
#
#あて先URL=ホスト名のみ(「.」の文字を含まない名前)
# or
#あて先IP=192.168.12.0/24内
#であればDIRECTアクセス
#
#上記以外の場合はPROXYサーバ 192.168.12.7:8080を参照
#


[squid]
#★=追加
#▼=修正&変更

yum -y install squid

vi /etc/squid/squid.conf

(1)
# TAG: auth_param
#This is used to define parameters for the various authentication
#schemes supported by Squid.
#
#★1
#.htpasswdを利用する場合は以下のように設定
#基本はコメントアウトでOK
#以下を注意しないとSquidの起動で失敗する。
#x86の場合/usr/lib/squid/ncsa_auth
#x64の場合/usr/lib64/squid/ncsa_auth
#
#▼1
#コメントアウトのみでOK
#
#auth_param basic program

auth_param basic program /usr/lib64/squid/ncsa_auth /etc/httpd/conf/.htpasswd  ←★1
auth_param basic children 5  ←▼1コメントアウト
auth_param basic realm Squid proxy-caching web server  ←▼1コメントアウト
auth_param basic credentialsttl 2 hours  ←▼1コメントアウト


(2)
# TAG: acl
#Defining an Access List
#
#★2-1
#.htpasswdを利用する場合の設定(利用しない場合には不要)
#利用する場合は順番に注意!★2-2より下にすると認証掛からない
#
#★2-2
#192.168.12.0/255.255.255.0からプロキシサーバーへのアクセスを許可する
#
#Recommended minimum configuration:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443
acl Safe_ports port 80# http
acl Safe_ports port 21# ftp
acl Safe_ports port 443# https
acl Safe_ports port 70# gopher
acl Safe_ports port 210# wais
acl Safe_ports port 1025-65535# unregistered ports
acl Safe_ports port 280# http-mgmt
acl Safe_ports port 488# gss-http
acl Safe_ports port 591# filemaker
acl Safe_ports port 777# multiling http
acl CONNECT method CONNECT
acl password proxy_auth REQUIRED  ←★2-1
acl lan src 192.168.12.0/255.255.255.0  ←★2-2


(3)
# TAG: http_access
#Allowing or Denying access based on defined access lists
#
#★3-1
#.htpasswdを利用する場合の設定(利用しない場合には不要)
#利用する場合は順番に注意!★3-2より下にすると認証掛からない
#
#★3-2
#192.168.12.0/255.255.255.0からプロキシサーバーへのアクセスを許可する
#上記(2)の★2のACLをallowする設定です。
#注意「http_access deny all」よりも前の行で設定すること!
#CiscoのAccess-listと同様に上から順に読み取るので。
#
#Recommended minimum configuration:
#
# Only allow cachemgr access from localhost
http_access allow manager localhost
http_access deny manager
# Deny requests to unknown ports
http_access deny !Safe_ports
# Deny CONNECT to other than SSL ports
http_access deny CONNECT !SSL_ports

# And finally deny all other access to this proxy
http_access allow localhost
http_access allow password  ←★3-1
http_access allow lan  ←★3-2
http_access deny all


(4)
#
# TAG: http_port
# Usage: port [options]
# hostname:port [options]
# 1.2.3.4:port [options]
#
#▼2
#Proxyサービスの待ちうけポートを変更
#Default=TCP3128をTCP8080に変更します。
#個人的にはICPとの絡みを考慮すると、TCP3128で良い気がするけど。
#
# Squid normally listens to port 3128
http_port 8080  ←▼2


(5)
#
# TAG: cache_peer
#
#★4
#Squid分散処理のため追加
#とりあえず、Squid1台のみで試すときは不要な設定。
#
#恐らく相手だけ追加すればOKなハズ(自分=.147、相手=.148とする)
#その他、sibling,Parent,MulticastやOptionについては、
#/etc/squid/squid.confに詳細が記載されている(英語だけどさッ)
#
#hostname=FQDNが定石なのでDNSへのlookupが必須
#でも、IPアドレス直打ちでもサービスは正常起動したw
#
# # proxy icp
# # hostname type port port options
# # -------------------- -------- ----- ----- -----------
# cache_peer parent.foo.net parent 3128 3130 proxy-only default
# cache_peer sib1.foo.net sibling 3128 3130 proxy-only
# cache_peer sib2.foo.net sibling 3128 3130 proxy-only
cache_peer192.168.12.147sibling80803130proxy-only  ←★4
cache_peer192.168.12.148sibling80803130proxy-only  ←★4


(6)
# TAG: header_access
# Usage: header_access header_name allow|deny [!]aclname ...
#
#★5
#以下を追加
#Proxy経由でアクセスしていることを相手先にわからないようにする。
#
#Default:
# none
header_access X-Forwarded-For deny all  ←★5
header_access Via deny all  ←★5
header_access Cache-Control deny all  ←★5


(7)
# TAG: visible_hostname
#
#★6
#以下を追加
#自サーバのFQDNを記載
#IPアドレス直打ちでもエラーは出ないw
#
#Squidのサービス起動時、以下のエラーの対処のため。
#[root@squid01 ~]# /etc/rc.d/init.d/squid start
#init_cache_dir /var/spool/squid...
#/etc/rc.d/init.d/squid: line 62: 3144 アボートしました$SQUID -z -F -D >> /var/log/squid/squid.out 2>&1
#/etc/rc.d/init.d/squid: line 42: 3145 アボートしました$SQUID $SQUID_OPTS >> /var/log/squid/squid.out 2>&1
#squid を起動中: [失敗]
#
#Default:
# none
visible_hostname squid01.md.jp  ←★6


(8)
# TAG: forwarded_for on|off
# If set, Squid will include your system's IP address or name
# in the HTTP requests it forwards. By default it looks like
# this:
#
#▼7
#Proxyを使用しているPCのLocalIPアドレスを隠蔽化する設定
#
#Default:
forwarded_for off  ←▼7

:wq

/etc/rc.d/init.d/squid start
chkconfig squid on
chkconfig --list squid

[動作確認]
いわずもがな?なので詳細は省略。
動作原理を理解していればわかるハズ。

ProxyサーバとクライアントPCで
netstatを叩けばわかる。

The Internetを閲覧するのであれば、
ProxyサーバはGlobalアドレスに対してSessionを張る。
クライアントPCはProxyサーバのみに対してSessionを張る。
別な言い方をすれば、
クライアントPCはGlobalアドレスに対してSessionを張らない。

もしくは、dhcpdの「option routers」で指定するGatewayアドレスを
ルータではなくProxyサーバに設定しても、
クライアントPCにてWeb閲覧できているのであれば、
それはProxy経由であることの証明です。
 ※
 前提としてDNSは別途LAN内で名前解決してくれる鯖が居ること。

[PR]
# by mdesign21 | 2010-05-16 16:34 | IT系

Squid


どんなに考えても2台のSquidをバランサーで負荷分散する意味がわからん。

なので、とりあえず、SquidでProxyサービスを動かしてみようと思う。

最初はノーマルで作って、その後、透過型もやってみて。

外部からWebサービスなどを叩かせたりするわけじゃないようなので、
ReverseProxyはとりあえず不要かなと。

んで、wwwサービス稼動させつつ、DHCP option252やDNSで
pacやwpad.datを取得できるようにして。

あとは、NS VPXのVIPがSrcIPとなってFW(ASA)を抜けられるようにしてみると。

少々手間は掛かるけど、実環境の通信フローを見てみれば、気付くことがあると思うから。

DNSはちょっと置いておいて。

変な絵を描いちゃうけど。
PC→DHCP→PC→www(pac取得)→PC→NSVPX→Squid→NSVPX→ASA→Internet上のwww

しんどいのは、SquidとASAか。
いや、Squidは大丈夫そうだね。

今の社内リソースで仕込んどいて!と依頼しても、
誰からのResponseも期待できないので(涙)

新人じゃあ難しいし、もう一人は頭が固過ぎるし┐('~`;)┌

例えばオレが学ラン着てた頃なら、
「寝ながら徹夜して頑張る!」
とかって、ほざいてると思う(笑)

[PR]
# by mdesign21 | 2010-05-15 04:11 | IT系

瓦礫 その2

瓦礫っていうか廃墟ですな!

さらに、すんごいことになってるのでアップ!
e0113173_18134895.jpg


わざわざオレがアップすることも無いか?と思いつつですが。

タイトルと関係ありませんが、NortonISからKasperskyISに変更しました。

理由は、2009のとき、KasperskyISは1ライセンス1アカウントだったのですが、
今は1ライセンス2アカウントがOKとなったので。

これでメインとサブをまかないつつ、
ネットブックはMS社の無償ソフトとWindowsFirewallに(格下げ?)しました。

それと、諸般の事情で、
 EXPI9301CT*2
 WHG-AGDN/CB*1
を発注。

あと、802.11n&EAP対応の無線APがちょっと欲しいかも。
そんでもって、IPv4とIPv6を混ぜて使ってみると。

対応プロトコルIPv4と仕様に書かれちゃってるけど、
NICってそもそも802.3(Ether)や802.11(無線)の制御がメインと思われる。

IPの制御はそれよりも上位(OS)で行われていると想定してるので、
メーカサポート有無は度外視しても、実際のところどれくらいまで
やれちゃうのか?が気になるところ。

っていうところにもリソースを割かないといけないのに、
Solaris10に足を引っ張られつつある(^^;

Solaris10のみならまだしも、Solaris9以前との比較だったり、
x86とSPARCの起動プロセスの相違とかが必要になることを想定すると、
今度こそ終わったかもしれんと思うのです。

そんでもって、さりげなくNetScalerも絡んでくると(笑)

頼むから一匹づつ、かかってこいよ!と思う次第です。

[PR]
# by mdesign21 | 2010-05-09 18:21 | Diary

VMWarePlayer3 その2

できたw

VMWarePlayer3.0.1(以下、VMWP) on CentOS5.4 x86_64 
にて、
vmnet2やvmnet3を追加してCentOSの物理NICやVlan InterfaceにBridgeする方法。

別な言い方をすると、
Linux版VMWarePlayer3.0.1で、
 ・vmnet2、vmnet3とかDefault以外のvmnetを追加
 ・追加したvmnetとLinuxの物理NICやVlan InterfaceをBridge
する方法かなと。

かなり邪道というか、それはズルイよぉ~的な方法ですができたので以下に記載。

1.
適当なLinuxにVMware-Workstation-Full-7.0.1-227600.x86_64をインスト。
 ※
 既に邪道ですw
 Workstationは評価版でOKです。
 
 インストする理由は、以下3.で記載する2つのファイルを
 抽出したいだけなので、どんなLinuxでも良いです。
 また、何かの仮想マシン上で動作するLinuxに
 WorkstationをインストしちゃってもOKです。

2.
WorkstationをインストしたLinuxで以下を実施
vi /usr/bin/vmware-netcfg

以下のように修正

#export PRODUCT_NAME="VMware Workstation"
 ↓
export PRODUCT_NAME="VMware Player"

3.
WorkstationをインストしたLinuxから、
以下2つのファイルをローカルPCに一時保存
 ※
 ファイル名が同じなので、ローカル保存時は一時的にファイル名を変更してね。
 (1)
 /usr/bin/vmware-netcfg
 (2)
 /usr/lib/vmware/bin/vmware-netcfg

 (1)は、スクリプト
 (2)は、バイナリ

4.
CentOSにVMWPをインスト
 ※
 本来VMWPを稼動させたいCentOSなどのLinuxマシンに
 本番用としてVMWPをインストします。

5.
上記3.でローカルに保存した2つのファイルを
同パスに同ファイル名でアップする。
必要に応じて、chmodで755など実行権限を付与してね。

6.
CentOSのデスクトップ上で、GNOME端末を起動
 アプリケーション→アクセサリ→GNOME端末

以下のスクリプトを実行
# /usr/bin/vmware-netcfg

 ※
 CentOSにsshでログイン後、
 CLI上で上記のスクリプトを実行してもダメっぽい。
 デスクトップ上のGNOME端末で実行しないと、
 DisplayがOpenできないぜ!と怒られます。

7.
VM Editorの画面が表示
e0113173_17124017.jpg

GNOME端末上にて、WarningとErrorが
表示されていますが全然気にしてません。
所詮は邪道な方法なので。

8.
Defautでは、vmnet0がAutomaticになっているので、
明示的にeth0などNICを指定する。

9.
Add Networkをクリックして、vmnet2やvmnet3を追加
e0113173_17152371.jpg


10.
上記8.と同様にvmnet2やvmnet3にeth1などNICを指定する。
最後にsaveをクリックして保存

11.
VMWPを起動
アプリケーション→システムツール→VMWare Player

12.
Create a New Virtual Machineをクリックして新規仮想マシンを作成する。
 ※
 ゲストOSは何でもOK。
 作成後のvmxファイルを編集したいだけなので。

作成の最後にCustomize HardwareをクリックしてNICを追加。
この時点ではBridged、NAT、Host-onlyしか表示されないけど問題なし。
e0113173_17472949.jpg

なお、仮想マシンは起動せずにおいておく。

13.
vmxファイルを修正

vi ~/vmware/仮想マシン名/仮想マシン名.vmx

ethernet0.present = "TRUE"
ethernet0.virtualDev = "e1000"
ethernet0.wakeOnPcktRcv = "FALSE"
ethernet0.addressType = "generated"
以下の2行を追加
 ethernet0.connectionType = "custom"
 ethernet0.vnet = "vmnet0"

ethernet1.present = "TRUE"
ethernet1.virtualDev = "e1000"
ethernet1.wakeOnPcktRcv = "FALSE"
ethernet1.addressType = "generated"
以下の2行を追加
 ethernet1.connectionType = "custom"
 ethernet1.vnet = "vmnet2"

14.
上記12.で作成した仮想マシンのEdit virtual machine settings画面を表示
e0113173_17403178.jpg

Customの項目が追加されていれば、おつけ~!

15.
仮想マシンの起動
e0113173_17413198.jpg

vmnet0=eth0=192.168.11.26(DHCPで外部からアドレス取得してる)
vmnet2=eth1=192.168.12.145(固定でIP設定)

16.
上記の状態で、eth0ð1共に外部のPCからICMPによる疎通がOKでした。


本当はもっとスマートな方法がある気がしてならないけど(^^;

ひとしきりやってみて思うことは、
ここまで頑張ってVMWarePlayer3を使う必要性を
あまり感じないので、当面はVMWareServer2で、けっぱるぜ!

ただ、今後VerUpして、VMWarePlayerでしかと使えない機能などがあり、
どうしても必要な機能ということであれば、もう一度検討しようと思う。

っていうか、「Workstation買えよ!」っていう所まで
来ちゃってる気がしてならない。

んまぁ、VCPでも取れたら、考えてみまっす。

っていうか、関係ないけど、海行きてぇ~。

[PR]
# by mdesign21 | 2010-05-08 17:44 | IT系

VMWarePlayer3

う~ん、オレはやっぱり我侭だ!

現在、現役でバリバリ使ってるのは、
 VMWareServer2.0.2(以下、VMWS) on CentOS5.4 x86_64
なんだけど、
VMSのEoLが発表されたので、
 VMWarePlayer3.0.1(以下、VMWP) on CentOS5.4 x86_64
を試してみたw

CentOS5.4 x86_64にX window入れないとやっぱダメかなぁ(涙)

VMWSの場合、ブラウザで管理できるから、
VMWS関連のchkconfigをonにしておけば、
inittab:3でOKだった=電源Onして後はブラウザでゴリゴリだったのに。
場合によって、VMWS用の足(NIC)がたくさん必要なときは、
sshでCentOSに入ってVlanInterfaceの設定と、
VMWSの設定Perl(/usr/bin/vmware-config.pl)を走らせれば、
いくらでも足出せたのに。。。

VMWPの場合は、デスクトップ画面出さないと結構厳しい感じ。
もちろん、X windowを入れておけば、inittab:3でも
VNC経由でデスクトップ開けるから、ゴリゴリできるんだけどさ。
ちなみに、未だにVMWSの設定Perlに相当するものが見当たらない。
自主トレ不足なのは認めるけど、これでゴリゴリ足の設定が
できないのであれば、オレ的にはかなり致命的だよ。

ちなみに、VMWS1.x系→VMWS2.x系になったとき、
「ブラウザなんか使えね~」とか散々わめいてたんだけど、
いざVMWS2.x系+ブラウザに慣れちゃうと、
CentOSのデスクトップ画面なんか見たくない!と
我侭を言いたくなってしまう、しょ~もないヤツです。

せめて、vSphereClientでVMWPを動かせるようにならないだろうか?

[PR]
# by mdesign21 | 2010-05-06 23:50 | IT系