http://www.freepbx.org/support/documentation/howtos/howto-resolving-audio-problems


Resolving Audio Problems

One of the most common issues to plague new users is the lack of audio. Calls appear to complete, and show up in the call detail, etc. but nothing is heard by one or both of the parties on the conversation. This section of the wiki will be devoted to such problems and their solutions, and I encourage others to add to it as you encounter problems and then discover the solution, particularly if it's not posted here already.

NAT issues

Perhaps the most common problem encountered is one-way audio and 99% of the time this is caused by a NAT firewall. So here are the steps you must take to configure FreePBX to work behind a NAT firewall.

Make sure you have a resolvable address on the Internet.

If you don't want to pay a few bucks to get a static IP address, and are served by an ISP that periodically changes your IP address, then get a free account with DynDNS(link is external) or some similar service. Your router may already have built-in support for one or more of these services, if so, use one that your router supports and then configure your router to automatically update your dynamic address when your ISP changes your IP address. Failing that, you can set up an updater program such as inadyn, there are instructions for doing that at this blog page(link is external).

Make use that your system knows its own name.

Once you get a DynDNS or other address that identifies your system on the Internet, put it in your etc/hosts file. For example, if you are assigned foo.dyndns.net, then open etc/hosts in your favorite text editor (nano, or Midnight Commander's editor will do - use mc -a from the command prompt to access Midnight Commander) and look for this line:

127.0.0.1 localhost

DO NOT REMOVE OR CHANGE THAT LINE. On a NEW line directly underneath it, place this line:

127.0.0.1 foo.dyndns.net

But substitute YOUR address, of course.

Add some information to your /etc/asterisk/sip_nat.conf file

If this file doesn't exist you'll have to create it, but make sure that the ownership and permissions match those of sip.conf and other files in that directory. You can use the command

touch /etc/asterisk/sip_nat.conf

To create the file. I personally use Midnight Commander's "Advanced CHOWN" feature to check and change permissions; if you are a true Linux geek you probably already have a preferred method.

Now edit the file and insert AT LEAST these two lines:

externip=your.external.dotted.IPaddess

localnet=192.168.0.0/255.255.255.0

The above localnet line assumes that your local network uses 192.168.0.x addresses, but if it uses something else, make the appropriate substitution.

Personally I use four lines, as follows:

nat=yes

externip=your.external.dotted.IPaddess

fromdomain=foo.dyndns.com

localnet=192.168.0.0/255.255.255.0

The "fromdomain" line would contain your public address, while "externip" contains the numeric IP address your ISP has assigned you (which hopefully doesn't change often).

If your ISP does change IP addresses on you frequently, and for some reason you can't/won't change ISP's or get a static IP address, and you are running at least Asterisk 1.2.x then there is an alternative way to specify your address to the system (however, note that some users find that this simply does not work as expected):

externhost=foo.dyndns.net

externrefresh=10

These are used IN PLACE OF the "externip" (and "fromdomain", if you have included that) lines. DO NOT use both "externhost" and "externip." Supposedly, "externhost" will cause Asterisk to perform DNS queries periodically, but they say it is "Not recommended for production environments!" and suggest using "externip" instead. "externrefresh" tells the system how often to refresh "externhost". If this method does not work for you, see the Addendum at the bottom of this document for another approach.

Reload SIP

After you have added whichever lines you need in sip_nat.conf, go to the Command Line Interface and type

sip reload

And hit enter. Alternately you could restart Asterisk, but that will interrupt any calls that are in progress.

Open the SIP and RTP ports to your Asterisk server

You must make sure that you open the correct UDP ports in your router's firewall and pointed at your Asterisk server. For SIP protocol, open UDP (NOT TCP) port 5060 (SIP) AND ports 10001-20000 (RTP, which must also be defined in /etc/asterisk/rtp.conf, see below). All these ports are UDP, opening the TCP ports will NOT help anything and may expose your system needlessly. While you are in your firewall configuration, you may as well also open UDP port 4569 (IAX), since sooner or later you'll probably want to accept IAX connections.

Check your /etc/asterisk/rtp.conf file

It should contain these two lines:

rtpstart=10001

rtpend=20000

If the port values are any different, change them. N.B. These MUST match what you opened in your firewall, and DO NOT start with port 10000, because it conflicts with usage in Webmin (and despite what anyone may tell you, Webmin does use UDP port 10000 in addition to TCP port 10000 - it uses the UDP port in an attempt to discover and communicate with other Webmin servers running on your network. So don't believe anyone who tells you that Webmin only uses TCP port 10000 and therefore there is no conflict).

Some people feel the need to open fewer than 10,000 ports. I don't recommend this because six months from now when you start having audio problems you may not remember that you opened fewer than the recommended number of ports, and may spend hours troubleshooting the issue. But if you are simply obsessive about open ports, remember that each open SIP connection may require as many as FOUR concurrent ports, so don't cut it down to some ridiculously small number. For the non-paranoid, I suggest sticking with the recommendations above (and remember, if a hacker is looking at ports on your system, he's going to scan ALL of them, so having fewer UDP ports open really doesn't make you any more secure).

CODEC issues

Whenever a call is placed, both ends of the call must agree on the codecs they want to use. If one end speaks only ulaw and the other end refuses to communicate using anything other than gsm, no communication is going to take place. This is why I would recommend that beginners always allow ulaw (also known as g.711u) and alaw (also known as g.711a) unless specifically instructed not to but whomever you are connecting to. There are actually five different places that codecs can be specified:

  • At an endpoint/device (phone or ATA), typically in the device's configuration.
  • In a FreePBX EXTENSION configuration, however it's best to leave those settings blank in most cases.
  • In a FreePBX TRUNK configuration, using allow= statements coupled with disallow=all. If these are omitted, then the defaults in sip.conf and iax.conf are used.
  • In sip.conf, using allow= statements coupled with disallow=all. These are the system defaults for SIP calls but can be overridden by trunk or extension settings.
  • In iax.conf, using allow= statements coupled with disallow=all. These are the system defaults for IAX calls but can be overridden by trunk or extension settings.

Note that as of Asterisk 1.4, the order of allow and disallow statements is important. If you use a disallow=all statement, it must be placed before any allow statements, because if it is placed after any allow statements it will negate them. This was not the case in Asterisk 1.2 and earlier versions.

Asterisk will attempt to translate formats if the codecs are available on the system and allowed for that leg of the call. So if you have a trunk that only allows gsm but your extensions will only communicate in ulaw, that's not a problem as long as you have allowed gsm in the trunk configuration. To see the available codecs and translations, type core show translation (or just show translation in Asterisk 1.2 and earlier) from the Command Line Interface - if there is a number showing between two codecs in the grid then translations are possible, if a single line (and it's not to the same codec) then translations are not possible, usually because one of the codecs isn't installed on the system.

Missing files/incorrect paths

If calling into an IVR or voicemail box, and the expected recording isn't played, it's possible that it's missing or not in the expected location. Did you use the System Recordings module to import the recording? If not, are you sure it's in the correct location?

Permissions/ownership issues

This most commonly occurs when people copy audio files directly onto the system and forget that it's a Linux box and that Linux is finicky about file permissions and ownership. If permissions or ownership aren't correct, Asterisk will be unable to access the file, and therefore can't play it. One thing you can try to resolve this is to run the following from the Linux command prompt:

amportal chown

This is supposed to set appropriate permissions on files used by Asterisk

Incorrect audio format

Sometimes people create system audio files using an external sound file editor, such asAudacity(link is external), in order to get better sound quality. What they don't realize is that Asterisk is very picky about the format of audio files it will play back. For example, if the file is .wav file format, Asterisk wants a file recorded at 8000 Hz, 16 bit, monaural (a.k.a. single channel) format and if you directly upload a file in any other format, the CLI may show that the file is being played, but callers hear nothing. If normal system files play correctly but the files you've created do not, check the format, especially if you've directly copied it to a particular location on the system instead of importing it with the System Recordings module.

Hardware issues

Yes, even a hardware problem can cause audio failures. In one case, a T1 card had been installed in the system but not configured, and that stopped all recorded audio from being played. So if all else fails, look for any unconfigured or misconfigured hardware device, particularly if it's a zaptel card (it appears that having ANY non-configured zaptel card in a system may cause problems with audio output).

Addendum: A Perl script to rewrite sip_nat.conf when your IP address changes

The following is a Perl script that checks your IP address using whatismyip.com, and rewrites /etc/asterisk/sip_nat.conf if the external IP address has changed. Note that you may have to install additional Perl modules, and you WILL need to modify one line in the script:

#!/usr/bin/perl

#
# This program gets the current IP address (as assigned by the ISP) from
# whatismyip.org and modifies /etc/asterisk/sip_nat.conf if the external IP
# address has changed. You can Use Webmin to install any missing Perl
# modules, and to invoke the script as cron job that runs every 5 minutes
#
use strict;
use warnings;
use WWW::Mechanize;
use Tie::IxHash;
use Data::Validate::IP qw(is_public_ipv4);
my $s_filepath = "/etc/asterisk/sip_nat.conf";
my $mech = WWW::Mechanize->new( autocheck => 1 );
$mech->get('http://whatismyip.com/automation/n09230945.asp');
$mech->success or die 'Cannot connect to http://whatismyip.com/automation/n09230945.asp (link is external)';
my ($ip) = ($mech->content() =~ /(\d+\.\d+\.\d+\.\d+)/);
if (is_public_ipv4($ip)) {
	tie my %configvars, 'Tie::IxHash';
# The 'fromdomain' (& possibly 'localnet') values in the next line MUST be changed
	%configvars = ('nat' => 'yes', 'externip' => '0.0.0.0','fromdomain' => 'foo.dyndns.com','localnet' => '192.168.0.0/255.255.255.0') ;
	open IN,"<$s_filepath";
	while (my $i = ) {
		chop $i;
		if ($i =~ /=/) {
			$i =~ s/\s//g;
			my ($key,$value) = split /=/,$i;
			$configvars{$key} = $value;
		}
	}
	close IN;
	if ($configvars{'externip'} ne $ip) {
		$configvars{'externip'} = $ip;
		open OUT,">$s_filepath";
		while (my ($key, $value) = each %configvars) {
			select OUT;
			print "$key=$value\n";
		};
		select STDOUT;
		close OUT;
		`/usr/sbin/asterisk -rx reload`;
	};
};

Please be sure to change foo.dyndns.com to YOUR dynamic IP address, and192.168.0.0/255.255.255.0 to a value consistent with your local network address range (if you are not using addresses in the 192.168.0.x range).

It is suggested that you place the above script in your /var/lib/asterisk/agi-bin/ directory, make sure the permissions and ownership are set correctly (make the script executable!), backup your existing /etc/asterisk/sip_nat.conf file, and then as a test invoke the script from a command prompt, e.g. (assuming you name the script checkip.pl):

cd /var/lib/asterisk/agi-bin
perl checkip.pl

If the script exits without printing any error messages, check /etc/asterisk/sip_nat.conf to make sure that the all of the lines in it contain correct values. If all looks as it should, you can can then set up a cron job to run the script every five minutes. I did this using Webmin'sSystem|Scheduled Cron Jobs page, but you may prefer to do it from the command line. If you get any errors about missing Perl modules when you run the script, these will have to be installed (there are Webmin modules that can do this also - look for one called "Perl Modules" or "CPAN").

One other note - if this script is running and sip_nat.conf gets deleted for any reason, the script will probably recreate it but with the wrong ownership and permissions - so if you ever accidentally delete that file, and after that Asterisk acts like it isn't there, check the permissions and ownership to make sure it is the same as for the other sip_*.conf files in /etc/asterisk.

php.ini에서  session.save_path 항목에 권한을 제대로 주거나 위치를 수정 합니다.


아래 webpage 링크에 가면 무료로 다운로드 할 수 있습니다!


Support:
Windows 7 , Windows 7 SP1 , Windows Server 2008 R2 , Windows Server 2008 R2 SP1 - [X64 (64Bit)] - [All Language]
Note : In windows server make sure theme service is runing .

Program: 8 Skin Pack
Version: 3.0
License: Freeware
Autor: Hamed
Email: Hamed_s1987@yahoo.com
Webpage: http://www.hameddanger.deviantart.com
Donate: http://www.bigseekpro.com/donate/lionskin
FaceBook: https://www.facebook.com/hamed.s1987
Twitter: http://www.twitter.com/hamed_s
YouTube: http://www.youtube.com/hameddanger1987
Softpedia: http://www.softpedia.com/developer/Hamed-78171.html
Location: Persian
Mobile : (+989359899543)

Programs:
Note : Some Program Need to install .Net FrameWork 4.0 For Runnig

Resource Hacker
http://www.askvg.com/tutorial-all-about-resource-hacker-in-a-brief-tutorial/

Moveex 1.0 by Alexander Frink
http://wwwthep.physik.uni-mainz.de/~frink/nt.html

Universal Theme Patcher 1.5.0.22 by deepxw
http://www.deepxw.blogspot.com

Win7BootUpdater v0 Beta 1 by jeff
http://www.coderforlife.com/

Mosaic Alpha build 281
http://mosaicproject.codeplex.com/

Taskbar UserTile alpha 7.1 By angelwzr
http://angelwzr.deviantart.com/

Aura Beta 3 By Stealth2010
http://aura.codeplex.com/

MetroClock Lock ScreenSaver by dejco
http://dejco.deviantart.com/

Metro Theme By jaycee13
http://jaycee13.deviantart.com/

Aero Lite Glass Theme By shelkadom
http://shelkadom.deviantart.com/

Aero Lite Full Glass Theme By velix94 Refresh by Me
http://velix94.deviantart.com/

Skin Pack Toolbar by bigseekpro
http://www.bigseekpro.com/lionskin

Special thanks to:
Laurent Solomon (laurent@somotoinc.com)
Eyal Yaakov (eyal@somoto.net)
http://www.askvg.com/
http://www.winmatrix.com/
http://www.somotoinc.com/
http://www.bigseekpro.com/
http://www.software.informer.com/

For more information,support,source files and report Bugs for fix just send mail to me.
This license applies to everything in the Skin Pack package, except where otherwise noted.
This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose, excluding any commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.

Copyright ?2011 All rights reserved.

http://toolbox.krcert.or.kr/MMBF/MMBFBBS_S.aspx?MENU_CODE=37&BOARD_ID=8&BOARD_NUMBER=15&SEARCH_TYPE=&SEARCH_WORD=&PAGE_INDEX=0

IIS 7.5 + PHP + MySQL을 운영중이며 Web Knight 2.4의 설치 및 설정으로 SQL Injection을 막을 수 있습니다.

다운로드 (http://www.aqtronix.com/?PageID=136)

  • WebKnight 2.4 (Release date: 2010.12.29) Changelog
    • This is a bugfix release. Improved scanning engine and fixed one major bug that resulted in possible bypass of WebKnight scanning and thus allowing requests that should have been blocked.
    • Added syslog functionality to forward alerts.
    • Improved installer package: better support for IIS 7.5 and set NTFS permissions during setup.
    • An updated robots database and updated logreader is also included in this release.

    편의상 동영상 메뉴얼,pdf메뉴얼,웹나이트 2.4, 2.3용 설정 셈플파일을 첨부합니다.
  • 2.3용 설정 셈플파일은 2.4에 적용이 가능합니다.


  • phpMyAdmin 에 오셨습니다

    Language

    오류

    The configuration file now needs a secret passphrase (blowfish_secret).



    위와 같은 에러가 발생한다면..
    config.inc.php파일을 open합니다.
    아래 항목을 찾아서..
    <기존>
    $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
    <변경>
    $cfg['blowfish_secret'] = 'abcd'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
    로 변경합니다. abcd로 넣든지 원하시는 아무 문자나 입력하시고 저장하세요.

    새로고침해보시면..

    phpMyAdmin 에 오셨습니다

    Language

    mcrypt 확장모듈을 불러올 수 없습니다.<br />PHP 환경설정을 검사하십시오.


    위처럼 로그인 창이 뜹니다...


    참 설치 방법은 

    config.sample.inc.php파일을 config.inc.php로 변경 후 open합니다.

    $cfg['Servers'][$i]['auth_type'] = 'cookie';
    로 수정합니다.


    출처 : http://www.living114.net/tech_info/linux/apache.html

     

    << 아파치 웹 서버 설정
     
    4.1 아파치 웹 서버의 시작과 종료 방법
    시작 => /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf
    종료 => kill - TERM `cat /var/run/httpd.pid`
     
    4.2 아파치 웹 서버의 설정
     
    4.2.1 매우 중요한 3개의 conf 파일의 값을 설정한다.
     
    httpd.conf : 웹서버 설정 관련 파일 (srm.conf와 access.conf를 함께 작성해도
    상관없다.)
    srm.conf : 웹서버 자원 관련 파일
    access.conf : 웹서버 보안 접근제어 관련 파일
     
     4.2.2 httpd.conf
     
    내용 예약어 설정값
    서버실행방법 Servertype standalone
    포트번호 Port 80
    client machine name HostnameLookups 보안을 위한 웹서버 실행자 변경
    서버관리자의 전자우편 주소 ServerAdmin root@localhost
    서버의 루트 디렉토리 ServerRoot /etc/httpd
    각종기록파일 위치지정(서버의 루트디렉토리를 기준으로 한다.) Errorlog logs/error-log
    Transferlog logs/access-log
    Refererlog logs/referer-log
    Agentlog logs/agent-log
    서버의 프로세스 id 기록 파일 PidFile /var/run/httpd.pid
    서버 내부상황 보고 ScoreBoardFile /var/run/apache-status
    서버명(일반적으로 설정안함, DNS에 등록된 경우에 정의) #ServerName www.tiger.co.kr
    Timeout 시간설정 TimeOut 400
    서버 프로세스의 갯수설정 MinSpareServers 5
    MaxSpareServers 10
    StartServer 5
    동시에 서비스 할 클라이언트의 최대 갯수 MaxClient 150
    프로세스당 처리건수 MaxRequestsPerChild 30
    프록시 서버 기능 여부 (프록시를 설정했을 때 on) #ProxyRequests on
     
     4.2.3 srm.conf
     
    내용 예약어 설정값
    문서 루트 디렉토리 DocumentRoot /home/httpd/html
    사용자 각자의 홈페이지 디렉토리 
    (각자의 계정밑에 public_html 디렉토리를 만들고 거기에 html을 두면 된다) 
    예)- 계정 : hwyoo 
        - 디렉토리 : /home/hwyoo/public_html/index.html 
       - browser 요청 : http://www.tiger.co.kr/~hwyoo
    UserDir public_html
    디렉토리에서 기본문서 찾는 순서 DirectoryIndex index.html homepage.html index.shtml
    디렉토리 파일 인덱스 표시방법 FancyIndexing FancyIndexing
    각 파일에 맞는 icon 파일 설정 AddIconByEncoding .
    AddIconByType .
    ..... .
    DefaultIcon /icons/unknown.gif
    파일에 대한 설명 달기 AddDescription string" file1 file2 ....
    ReadmeName README
    HeaderName HEADER
    인덱스에서 제외한 파일 IndexIgnore .....
    각 디렉토리에 대한 접근 제한 파일 AccessFileName .htaccess
    기본 문서 유형 편집 DefaultType text/plain
    전송중 압축 자료 풀기 AddEncording x-compress z
    AddEncording x-gzip gz
    알리아스 기능 Alias /icons/ /home/httpd/icon/
    기타 SSI CGI 실행 #AddHandler cgi-script .cgi
    #AddHandler imap-file map
    서버 스크립트 별칭기능 
    (지정한 곳 이외에서 cgi의 실행을 막는다. 보안상 중요하다)
    ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/
    SSI (Server Side Include) 기능 사용 Addtype text/html .shtml
    에러 페이지 설정 
    (예 : erroe 404 : 문서를 찾을 수 없다.)
    ErrorDocument 404 /missing.html 또는
    ErrorDocument 404 http://localhost/missing.html
     
    4.2.3 access.conf
     
    access.conf : 전체적인 기본설정
    .htaccess : 각 디렉토리 별로 자세히 결정
    가. access.conf 설정
     
    내용 예약어 및 설정값
    문서 이렉토리에 대한 설정 <Directory /home/httpd/html>
    Options Index Include ExecCGI
    AllowOverride None
    Order allow, deny
    Allow from all
    </Directory>
    ※ 보통 인트라넷인 경우에는 Order deny, allow Deny from all,Allow kgi, admin, webmaster 로 기술해 주어 접근제어에 중점을 둔다.
    CGI 디렉토리에 대한 설정 <Directory /home/httpd/cgi-bin>
    AllowOverride none
    Options none
    </Directory>
    인증 매카니즘 설정하기 
    (.htaccess)
    <Directory /home/httpd/html>
    AuthType Basic
    AuthName Yoo hyun woo
    AuthUserFile /etc/httpd/conf/.htpasswd
    AuthGroupFile /etc/httpd/conf/.htgroup
    Order allow,deny
    Allow from all
    Require user admin
    Require group admin
    </Directory>
     
    나. 암호파일 만들기
      - passwd
     
     #htpasswd -c /etc/httpd/conf/.htpasswd admin
     ※ -c (create) : 맨처음 .htpasswd를 생성할 때만 사용, 두번째 등록시는 생략한다.
     #htpasswd /etc/httpd/conf/.htpasswd webmaster
     
     - group
     vi 에디터를 사용해서 .htgroup 파일을 만든다.
     
    .htgroup admin : admin webmaster
     
     4.2.4 MIME 파일 관련 설정 : srm.conf에 추가
     - MIME : Multipupose Internet Mail Extensions
     - 웹서버와 웹브라우저 사이에 오가는 자료가 어떤형태의 자료인지 지칭하기 위해 사용
     - Mime.types에 설정 : 거의 손볼 필요 없슴
     ※ 만약 어떤값을 정할 필요가 있을 때는 mine.types에 추가하지 말고
    srm.conf에 AddType 지시자로 추가하여 관리
     
    내용 예약어 설정값
    오디오 mp3추가 AddType audio/mpeg mpga mp2 mp3
     
     4.2.5 Log files
     
    파일 파일의 역할
    access_log 웹서버가 어떤 파일을 읽어 클라이언트에게 전달했는지 보여준다.
    agent_log 사용자가 어떤 브라우저를 통해 웹서버에 접속했는지 그이름을 나열
    error_log 에러상황 기록
    referer_log 각 페이지들이 어떻게 무엇을 참조했는지 기록
     
     4.2.6 실시간 웹서버 상황보기
     
     가. access.conf에 다음내용 추가
     
    내용 예약어 및 설정값
    실시간 웹서버 상황보기 관련 <Location /status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from your_admin_hostl
    </Location>
     
     나. 웹브라우저에서 보기
     - URL에 다음과 같이 넣고 살행한다.
     - your.server.name/status
     - your.server.name/status?refresh=n
     ※ n : 갱신주기 초단위
     
     
     4.2.7 프록시(Proxy) 기능
     - httpd.conf 파일에 프록시 기능 설정
     
    내용 예약어 설정값
    proxy 기능 여부 ProxyRequests ON
    cache 루트 CacheRoot /var/httpd/proxy
    cache 크기 CacheSize 1024
    cache garbage collection interval CacheGcUnterval 4 (시간)
     
     4.2.8 가상 호스트(Virtual Host)
     
     가. 정의 : 한대의 컴퓨터와 하나의 아파치 서버 프로세스를 가지고 한개 이상의 웹 
    사이트를 동시에 운영하는 기능 IP 별칭 기능으로 ISP 업체들이 제공하고
    있는 서비스로 "Web Hostiong" 서비스라 부른다.
     나. 방법 : Only one conputer(server) but multiple web site(domain name) IP 별칭
    기능을 사용하여 하나의 네트워크 인터페이스에 여러개의 주소를 부여
    도메인 네임서버에 하나의 IP 주소에 대하여 여러개의 서로 다른 이름을 부여
    아파치 웹서버는 서로 다른 IP주소 또는 서로 다른 호스트 이름에 대하여 한번의
    실행을 통해서도 동시 서비스를 해 낼수 있다.
     
    다. 구현
     
    IP 주소는 다르고 도메인 이름이 다른경우 #ifconfig eth0:0 172.20..7.203
    #ifconfig eth0:1 172.20..7.204
    #ifconfig eth0:2 172.20..7.205
    IP 주소는 하나인데 도메인 이름이 다른경우 도메인 네임서버에 요청하여 서로다른 이름이라 할지라도 같은 IP 주소를 가리키게 할 수있다.
    (1) IP 주소가 하나뿐이므로 IP 별칭 기능을 사용할 때 처럼 네트워 크 인터페이스를 설정할 필요는 없다. 
    단지 도메인 네임 서버(/etc/resolve.conf /etc/host.conf)에 제대로 이름을 등록하면 된다.
    (2) httpd.conf에 가상 호스트 환경을 설정한다.
    <VirtualHost www.lion.co.kr>
    ServerAdmin lion@localhost
    DocumentRoot /home/lion/html
    ServerName your.server.name 
    ErrorLog logs/lion-error-log
    TransferLog logs/lion-access-log
    </VirtualHost>
    (3) 설정하고자 하는 가상호스트 갯수 만큼 (2)번의 내용을 선언한다.
     
     4.2.9 옵션(Options)에서 사용할 수 있는 지시자들
     
     가. All : MultiViews, IncludesNOEXEC, SymLinksOwneMatch를 제외한
    모든 옵션들을 활성화합니다.
     
     나. ExecCGI : CGI 스크립트를 사용할 수 있도록 한다.
     
     다. FollowSymLinks : 서버에서 사용하는 심볼릭 링크를 사용한다.
     
     라. Includes : 서버측 포함 기능(SSI)을 사용할 수 있으며 SSI를 사용하려면 
    이 옵션을 활성화합니다.
     
    마. IncludesNOEXEC : 서버측 포함 기능은 사용할 수 있으나 #exec, #include를
    이용한 CGI 스크립트는 사용할 수 없도록 한다.
     
     바. Indexes : 고객의 디렉토리를 지정하는 URL로 접속했을 때 index.html 파일이
    없다면 디렉토리의 내용을 보여준다.
     
     사. MultiViews : 컨텐트 협상 기능을 사용할 수 있도록 한다.
     
     아. SymLinksIfOwnerMatch : 동일한 사용자의 소유로 설정된 심볼릭 링크만 허가한다.
     
     
    - 각각의 인자들은 "+" 혹은 "-"를 붙여 그 기능을 더하거나 뺄 수 있다.
    - 만약 아무런 옵션도 부여되지 않았고 <Limit>지시자도 없다면 All이 적용된 것과
    같은 효과를 가진다.

    + Recent posts