乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      CentOS 6下,遠(yuǎn)程安裝KVM虛擬機,并使用apache mod

       浸心閣 2015-05-08
         目錄:
      0. 配置目的及方案簡介
      1. 安裝KVM
      2. 安裝配置VNC遠(yuǎn)程控制
      3. 在KVM虛擬機安裝CentOS 6
      4. NAT網(wǎng)絡(luò)配置
      5. 使用iptables防火墻配置,SSH,F(xiàn)TP
      6. 使用反向代理配置Web server
      7. 虛擬機中的Mysql配置
      8. 后續(xù):iptables規(guī)則優(yōu)化,虛擬機自動快照備份

      0. 配置目的及方案簡介

      使用一臺強勁的服務(wù)器,安裝多個獨立的虛擬機。達(dá)到增加安全性(一臺虛擬機軟故障時,對其他機器沒有影響),每個虛擬機靈活管理,充分利用硬件資源的目的。
      主機雙網(wǎng)卡,有兩個公網(wǎng)IP。因為沒有更多的公網(wǎng)IP,所以使用NAT方式為每個虛擬機配置內(nèi)網(wǎng)IP。理論上以下設(shè)置對單網(wǎng)卡主機也完全適用。

      簡單來說,主要分以下步驟。

      操作系統(tǒng)采用CentOS 6.3,加裝虛擬化組件

      點擊在新窗口中瀏覽此圖片


      使用Apache reverse proxy反向代理,引導(dǎo)分配web訪問

      點擊在新窗口中瀏覽此圖片


      使用iptables建立端口轉(zhuǎn)發(fā),從而幫助外網(wǎng)訪問虛擬機中的ssh、ftp等服務(wù)。




      1. 安裝KVM



      http://blog.csdn.net/samlei/article/details/7576635
      CentOS6.2 x86上安裝KVM功能模塊步驟
      以root用戶進(jìn)行。

      1、檢查CPU信息
      KVM 需要有 CPU 的支持(Intel VT 或 AMD SVM),在安裝 KVM 之前檢查一下 CPU 是否提供了虛擬技術(shù)的支持。
      基于 Intel 處理器的系統(tǒng),運行 grep vmx /proc/cpuinfo 查找 CPU flags 是否包括 vmx 關(guān)鍵詞

      # grep vmx /proc/cpuinfo
      flags : fpu vme de pse tsc msr pae mce
      cx8 apic sep  mtrr pge mca cmov pat
      pse36 clflush dts acpi mmx
      fxsr sse sse2 ss ht tm pbe syscall nx lm
      constant_tsc arch_perfmon pebs bts
      rep_good pni monitor ds_cpl
      vmx est tm2 ssse3 cx16 xtpr lahf_lm ida
      flags : fpu vme de pse tsc msr pae mce
      cx8 apic sep mtrr pge mca cmov pat
      pse36 clflush dts acpi mmx fxsr sse sse2
      ss ht tm pbe syscall nx lm constant_tsc
      arch_perfmon pebs bts rep_good pni
      monitor  ds_cpl vmx est tm2 ssse3 cx16
        xtpr lahf_lm ida


      基于 AMD 處理器的系統(tǒng),運行 grep svm /proc/cpuinfo 查找 CPU flags 是否包括 svm 關(guān)鍵詞
      # grep svm /proc/cpuinfo


      注 : 一些廠商禁止了機器 BIOS 中的 VT 選項 , 這種方式下 VT 不能被重新打開。
      注意:/proc/cpuinfo 僅從 Linux 2.6.15(Intel) 和 Linux 2.6.16(AMD) 開始顯示虛擬化方面的信息。請使用 uname -r 命令查詢您的內(nèi)核版本。如有疑問,請聯(lián)系硬件廠商。
      2、檢查BIOS,確保BIOS里開啟VT選項:
      Intel(R) Virtualization Tech [Enabled]
      如有必要,還需在BIOS中開啟VT并重啟機器。
      3、從本地光盤(把dvd光盤配置為yum本地庫的方法)查詢、安裝軟件包

      查詢:
      yum --disablerepo=\* --enablerepo=c6-media groupinfo Virtualization
      yum --disablerepo=\* --enablerepo=c6-media groupinfo 'Virtualization Client'
      安裝:
      yum --disablerepo=\* --enablerepo=c6-media groupinstall Virtualization
      yum --disablerepo=\* --enablerepo=c6-media groupinstall 'Virtualization Client'

      group的名字不分大小寫。

      Virtualization各工具包內(nèi)容如下表所示:

      點擊在新窗口中瀏覽此圖片



      主機能聯(lián)互聯(lián)網(wǎng)的,直接用指令:

      yum groupinstall Virtualization 'Virtualization  Client'

      來完成安裝。

      較低版本的系統(tǒng),如Redhat/CentOS5.6的,使用指令:
      yum --disablerepo=\* --enablerepo=c5-media groupinstall kvm

      3、安裝api支持

      yum --disablerepo=\* --enablerepo=c6-media install libvirt
      service libvirtd start

      4、驗證是否已經(jīng)載入KVM模塊
      # lsmod | grep kvm
      kvm_intel              50380  3
      kvm                   305081  1 kvm_intel
      #ll /dev/kvm
      crw-rw-rw-+ 1 root kvm 10, 232 May  4 16:06 /dev/kvm

      至此,主機的KVM功能已經(jīng)具備,可以安裝客戶操作系統(tǒng)了。


      安裝客戶機操作系統(tǒng)

      安裝客戶機操作系統(tǒng)兩種方式,一種通過母機GUI的虛擬機管理程序virt-manager,一種通過母機命令行virt-install工具。

      命令行方式:
      #virt-install \
          --name=v1
          --ram=512
          --vcpus=1
          --cdrom=/media/CentOS_6.2_final.iso
          --os-type=rhel6  
          --disk /var/lib/libvirt/imgages/v1.img,size=8,bus=virtio,cache=writeback  
          --network bridge=br0,model=virtio


      下面對上面的命令進(jìn)行解讀

      --name    給虛擬機起個名字
      --ram     分配給虛擬機的內(nèi)存,單位MB
      --vcpus   分配給虛擬機的cpu個數(shù)
      --cdrom   指定安裝文件的全路徑
      --disk    指定虛擬機img文件路徑,如果虛擬機使用lvm分區(qū),這里就指向到lvm的分區(qū)就行
          size      虛擬機文件大小,單位GB
          bus       虛擬機磁盤使用的總線類型,為了使虛擬機達(dá)到好的性能,這里使用virtio
          cache     虛擬機磁盤的cache類型
      --network bridge    指定橋接網(wǎng)卡
          model  網(wǎng)卡模式,這里也是使用性能更好的virtio
      --graphics         圖形參數(shù)

      可以用man virt-install 指令查看幫助,最后有很多示例。

      GUI方式:遠(yuǎn)程操作需要VNC支持,見下文。
      打開菜單Applications->System Tools->Virtual Machine Management
      點擊圖標(biāo)Create a new virtual machine
      按照順序設(shè)置虛擬機名稱、CPU,內(nèi)存,磁盤,網(wǎng)絡(luò)等。
      五個設(shè)置步驟完成后,仍然可以修改虛擬機的配置信息。
      至此,整個虛擬機安裝過程完成。

      基于KVM建立的虛擬機相關(guān)文件默認(rèn)存放位置
      kvm虛擬機配置文件位置:/etc/libvirt/qemu/      
      kvm虛擬機文件位置:var/lib/libvirt/images/  



      2. 安裝配置VNC遠(yuǎn)程控制



      以下信息參考 http://blog./archives/12281 根據(jù)實際情況略做改動。

      首先必須有X-Window和桌面環(huán)境。如果沒有的話,先安裝。

      yum groupinstall "X Window System" "GNOME Desktop Environment"
      yum -y install fonts-chinese firefox


      必須明白:vncserver在調(diào)用的時候,會根據(jù)你的配置來啟用server端的監(jiān)聽端口,
      端口默認(rèn)是從5900開始,再加上你的桌面號。
      比如你的桌面號為1,則vnc的連接端口號為5900+1=5901
      比如你的桌面號為10000,則vnc的連接端口號為5900+10000=15900
      ======================================================================
      下面配置VNC服務(wù)器,使用戶(root)能夠通過vnc客戶端遠(yuǎn)程連接到linux系統(tǒng)的圖形界面(前提是你的服務(wù)器要安裝桌面)

      1、檢查linux系統(tǒng)是否安裝VNC
      在終端窗口輸入命令:

      rpm -q vnc-server


      返回信息如下package vnc-server is not installed 說明vnc服務(wù)器沒有安裝

      2、運行以下命令進(jìn)行安裝:
      [/code]yum install vnc vnc-server[/code]

      3、啟動VNC服務(wù)
      vncserver
      You will require a password to access your desktops.
      Password:
      Verify:


      會提示輸入密碼,這個密碼是遠(yuǎn)程登錄時所需要輸入的密碼,輸入密碼,回車
      4、切換到root賬號:su root然后輸入root賬號的密碼

      vi /etc/sysconfig/vncservers  #vnc配置文件
      VNCSERVERS="10000:root"  # 把前面的#取消了   10000:root (桌面號:用戶)
      # VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -localhost"


      最后保存退出
      5、配置防火墻,允許10000+5900=15900端口通過防火墻(否則遠(yuǎn)程連不上VNC服務(wù)器)

      vi /etc/sysconfig/iptables
      -A INPUT -m state --state NEW -m tcp -p tcp --dport 15900 -j ACCEPT(允許15900端口通過防火墻)

      保存退出
      6、重啟vnc服務(wù)器
      service vncserver restart


      7、重啟防火墻,使剛才的端口配置生效

      /etc/init.d/iptables restart
      或 service iptables restart

      8、 設(shè)置vnc服務(wù)器開機自動啟動
      hkconfig vncserver on
      chkconfig --list vncserver
      vncserver       0:off   1:off   2:on    3:on    4:on    5:on    6:off

      9、更改vnc連接密碼
      vncpasswd
      到此,VNC服務(wù)端設(shè)置完成,用VNC客戶端可以連接了
      vnc服務(wù)器:你的ip:15900

      注意:如果在連接上之后,出現(xiàn)灰屏,可以按照下面的方法設(shè)置
      進(jìn)入用戶的home目錄, cd /home/user
      如果是用root賬號登錄的,那么當(dāng)前目錄就是用戶根目錄

      cd ~/.vnc
      vi xstartup  #編輯
      #twm &    #注釋掉這一行
      gnome-session &   #添加這一行

      保存退出即可正常連接!

      做到這里VNC Server,接下來你可以用http://IP:port的方式來WEB登錄比如說
      http://IP:5801,也可以在vncviewer里用IP:1這種來登錄。
      但我選擇的方式是下載vnc viewer客戶端。下載地十: http://www./download/viewer/


      3. 在KVM虛擬機安裝CentOS 6


      有了VNC遠(yuǎn)程桌面,就可以比較方便的在圖型界面中,為虛擬機安裝操作系統(tǒng)了。
      過程不再詳述,與普通安裝沒什么差異。

      點擊在新窗口中瀏覽此圖片



      4. NAT網(wǎng)絡(luò)配置
      虛擬機中設(shè)置:

      點擊在新窗口中瀏覽此圖片



      回到主機ssh,看到有virbr0接口。默認(rèn)ip 192.168.1.1/24。這主機虛擬機支持模塊安裝時產(chǎn)生的虛擬網(wǎng)絡(luò)接口,也是一個switch和bridge,負(fù)責(zé)把內(nèi)容分發(fā)到各虛擬機。以此作為NAT虛擬接口。


      #virsh net-list --all
      Name State Autostart
      -----------------------------------------
      default active yes #default是宿主機安裝虛擬機支持模塊的時候自動安裝的。


      #ifconfig
      virbr0    Link encap:Ethernet  HWaddr 52:54:00:2A:C3:56
                inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
                UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                RX packets:360864 errors:0 dropped:0 overruns:0 frame:0
                TX packets:429799 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:0
                RX bytes:45356208 (43.2 MiB)  TX bytes:250577187 (238.9 MiB)


      NAT原理。

      點擊在新窗口中瀏覽此圖片



      virbr0是一個橋接器,接收所有到網(wǎng)絡(luò)192.168.1.*的內(nèi)容。從下面命令可以驗證:

      # brctl show
      bridge name     bridge id               STP enabled     interfaces
      virbr0          8000.525400b9b096       yes             virbr0-nic

      # route
      Kernel IP routing table
      Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
      192.168.1.0   *               255.255.255.0   U     0      0        0 virbr0


      同時,虛擬機支持模塊會修改iptables規(guī)則,通過命令可以查看:
      # iptables -t nat -L -nv
      Chain PREROUTING (policy ACCEPT 16924 packets, 2759K bytes)
      pkts bytes target     prot opt in     out     source               destination
      Chain POSTROUTING (policy ACCEPT 2009 packets, 125K bytes)
      pkts bytes target     prot opt in     out     source               destination        
      421 31847 MASQUERADE  all  --  *      *       192.168.1.0/24    !192.168.1.0/24   ----------->這條是關(guān)鍵,它配置了NAT功能。
      Chain OUTPUT (policy ACCEPT 2011 packets, 125K bytes)
      pkts bytes target     prot opt in     out     source               destination        
          
      # iptables -t filter -L -nv
      Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
      pkts bytes target     prot opt in     out     source               destination        
      1    74 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0           udp dpt:53    ---->由libvirt腳本自動寫入
      0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0           tcp dpt:53    ---->由libvirt腳本自動寫入
      3   984 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0           udp dpt:67    ---->由libvirt腳本自動寫入
      0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0           tcp dpt:67    ---->由libvirt腳本自動寫入
      178K  195M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED    ---->iptables的系統(tǒng)預(yù)設(shè)
      2   168 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0                ---->iptables的系統(tǒng)預(yù)設(shè)
      1148  216K ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0                ---->iptables的系統(tǒng)預(yù)設(shè)
      1    60 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22  ---->iptables的系統(tǒng)預(yù)設(shè)
      16564 2721K REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited ---->iptables的系統(tǒng)預(yù)設(shè)
      Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
      pkts bytes target     prot opt in     out     source               destination        
      3726 3485K ACCEPT     all  --  *      virbr0  0.0.0.0/0            192.168.1.0/24    state RELATED,ESTABLISHED  ---->由libvirt腳本自動寫入
      3491  399K ACCEPT     all  --  virbr0 *       192.168.1.0/24     0.0.0.0/0                ---->由libvirt腳本自動寫入
      0     0 ACCEPT     all  --  virbr0 virbr0  0.0.0.0/0            0.0.0.0/0                ---->由libvirt腳本自動寫入
      0     0 REJECT     all  --  *      virbr0  0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable  ---->由libvirt腳本自動寫入
      0     0 REJECT     all  --  virbr0 *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable  ---->由libvirt腳本自動寫入
      0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited  ---->iptables的系統(tǒng)預(yù)設(shè)
      Chain OUTPUT (policy ACCEPT 181K packets, 138M bytes)
      pkts bytes target     prot opt in     out     source               destination


      如果沒有default的話,或者需要擴展自己的虛擬網(wǎng)絡(luò),可以使用命令重新安裝NAT。

      修改/etc/sysctl.conf中參數(shù),允許ip轉(zhuǎn)發(fā):

      [root@VM2CentOS www.]# vim /etc/sysctl.conf
      net.ipv4.ip_forward=1


      進(jìn)入虛擬機,設(shè)置靜態(tài)IP,hostname

      [root@VM2CentOS www.]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

      DEVICE="eth0"
      BOOTPROTO="static"
      HWADDR="52:54:00:**:**:**"
      NM_CONTROLLED="yes"
      ONBOOT="yes"
      TYPE="Ethernet"
      UUID="426b9729-0d2c-41aa-a29c-...."
      IPADDR=192.168.1.3
      NETMASK=255.255.255.0
      GATEWAY=192.168.1.1

      [root@VM2CentOS www.]# vim /etc/sysconfig/network

      NETWORKING=yes
      HOSTNAME=VM2CentOS

      [root@VM2CentOS www.]# ping 8.8.8.8
      PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
      64 bytes from 8.8.8.8: icmp_seq=1 ttl=45 time=34.6 ms
      64 bytes from 8.8.8.8: icmp_seq=2 ttl=45 time=40.1 ms
      64 bytes from 8.8.8.8: icmp_seq=3 ttl=45 time=36.7 ms
      64 bytes from 8.8.8.8: icmp_seq=4 ttl=45 time=38.0 ms

      網(wǎng)絡(luò)已經(jīng)配通。

      更詳細(xì)的參考
      NAT:http://blog.csdn.net/samlei/article/details/7598700
      Bridge:http://blog.csdn.net/samlei/article/details/7598541


      5. 使用iptables防火墻配置,SSH,F(xiàn)TP
      FTP的設(shè)置、安裝見本文

      采用NAT方式,各虛擬機分配地址為192.168.1.2,192.168.1.3等。上文libvirt自動加入腳本規(guī)則后,從虛擬機已經(jīng)可以訪問公網(wǎng)。但因為本機沒有公網(wǎng)IP,所以從公網(wǎng)還無法訪問虛擬機。需要使用IP轉(zhuǎn)發(fā),訪問虛擬內(nèi)網(wǎng)主機。

      iptables的設(shè)置
      這是比較費勁的一步。需要一些iptables和route基礎(chǔ)知識。不多解釋了。
      把我的案例貼出來。這東西不能照抄。也千萬別圖省事用setup之類的圖形界面來配置iptables。
      GUI里做配置,會把原來手工寫的規(guī)則都覆蓋掉。
      我就干過幾次這種傻事。干完了還不知道為啥全亂了。

      # Generated by iptables-save v1.4.7 on Fri Sep 14 17:42:48 2012
      #
      *mangle
      :PREROUTING ACCEPT [1663:135619]
      :INPUT ACCEPT [1649:135083]
      :FORWARD ACCEPT [3:152]
      :OUTPUT ACCEPT [1243:91918]
      :POSTROUTING ACCEPT [1262:96750]
      -A POSTROUTING -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
      COMMIT

      *filter
      :INPUT ACCEPT [0:0]
      :FORWARD ACCEPT [0:0]
      :OUTPUT ACCEPT [81:6315]
      -A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
      -A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
      -A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
      -A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT

      -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
      -A INPUT -p icmp -j ACCEPT
      -A INPUT -i lo -j ACCEPT
      -A INPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT
      -A INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
      -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
      -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
      -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
      -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
      #vnc server
      -A INPUT -p tcp -m state --state NEW -m tcp --dport 33900 -j ACCEPT

      -A INPUT -j REJECT --reject-with icmp-host-prohibited

      -A FORWARD -d 192.168.1.0/24 -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT
      -A FORWARD -s 192.168.1.0/24 -i virbr0 -j ACCEPT
      #-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
      #-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
      #-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable

      -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
      -A FORWARD -p icmp -j ACCEPT
      -A FORWARD -i lo -j ACCEPT
      -A FORWARD -d 192.168.1.2/32 -i eth+ -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
      -A FORWARD -d 192.168.1.3/32 -i eth+ -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
      -A FORWARD -d 192.168.1.2/32 -i eth+ -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
      -A FORWARD -d 192.168.1.3/32 -i eth+ -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT

      -A FORWARD -d 192.168.1.2/32 -i eth+ -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
      -A FORWARD -d 192.168.1.3/32 -i eth+ -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT

      -A FORWARD -d 192.168.1.3/32 -i eth+ -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

      # ftp passive port
      -A FORWARD -d 192.168.1.2/32 -i eth+ -p tcp -m state --state NEW -m tcp --dport 60200:60299 -j ACCEPT
      -A FORWARD -d 192.168.1.3/32 -i eth+ -p tcp -m state --state NEW -m tcp --dport 60300:60399 -j ACCEPT
      -A FORWARD -j REJECT --reject-with icmp-host-prohibited
      COMMIT
      # Completed on Fri Sep 14 17:42:48 2012
      # Generated by iptables-save v1.4.7 on Fri Sep 14 17:42:48 2012
      *nat
      :PREROUTING ACCEPT [11:808]
      :POSTROUTING ACCEPT [8:566]
      :OUTPUT ACCEPT [6:466]
      -A PREROUTING -i eth+ -p tcp -m tcp --dport 11256 -j DNAT --to-destination 192.168.1.2:22
      -A PREROUTING -i eth+ -p tcp -m tcp --dport 11356 -j DNAT --to-destination 192.168.1.3:22
      -A PREROUTING -i eth+ -p tcp -m tcp --dport 11221 -j DNAT --to-destination 192.168.1.2:21
      -A PREROUTING -i eth+ -p tcp -m tcp --dport 11321 -j DNAT --to-destination 192.168.1.3:21
      -A PREROUTING -i eth+ -p tcp -m tcp --dport 11220 -j DNAT --to-destination 192.168.1.2
      -A PREROUTING -i eth+ -p tcp -m tcp --dport 11320 -j DNAT --to-destination 192.168.1.3

      #MySQL
      #-A PREROUTING -i eth+ -p tcp -m tcp --dport 13306 -j DNAT --to-destination 192.168.1.3:3306

      -A PREROUTING -i eth+ -p tcp -m tcp --dport 60200:60299 -j DNAT --to-destination 192.168.1.2
      -A PREROUTING -i eth+ -p tcp -m tcp --dport 60300:60399 -j DNAT --to-destination 192.168.1.3

      -A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
      -A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
      -A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j MASQUERADE


      COMMIT
      # Completed on Fri Sep 14 17:42:48 2012


      FTP設(shè)置
      vi /etc/vsftpd/vsftpd.conf 設(shè)置固定的被動鏈接端口。這樣比較容易配合防火墻打開端口。
      見上文# ftp passive port
      -A FORWARD -d 192.168.1.2/32 -i eth+ -p tcp -m state --state NEW -m tcp --dport 60200:60299 -j ACCEPT
      -A FORWARD -d 192.168.1.3/32 -i eth+ -p tcp -m state --state NEW -m tcp --dport 60300:60399 -j ACCEPT

      pasv_enable=YES
      pasv_min_port=60000
      pasv_max_port=60100
      pasv_address=0.0.0.0



      6. 使用反向代理(reverse proxy)配置Web server
      因為沒有足夠的IP地址分給每個虛擬機,我們只能所有域名都設(shè)成主機的IP地址。再由反向代理來選擇,每個域名訪問,應(yīng)該對應(yīng)哪個虛擬機。原來考慮直接用iptables想辦法檢查域名,然后再轉(zhuǎn)發(fā)到VM的內(nèi)網(wǎng)地址。但因為iptables直接檢查數(shù)據(jù)包,獲得域名似乎有困難。后來改為反向代理的辦法。反向代理常被用于建立web server緩存,或者多服務(wù)器負(fù)載均衡。

      比較流行的反向代理軟件有squid, ngix, apache。因為這里并不需要建立緩存,所以我排除了squid,最終選擇了比較熟悉的apache。

      引用
      http://man./newsoft/Apache2.2_chinese_manual/mod/mod_proxy.html
      Apache可以被配置為正向(forward)和反向(reverse)代理。

      正向代理是一個位于客戶端和原始服務(wù)器(origin server)之間的服務(wù)器,為了從原始服務(wù)器取得內(nèi)容,客戶端向代理發(fā)送一個請求并指定目標(biāo)(原始服務(wù)器),然后代理向原始服務(wù)器轉(zhuǎn)交請求并將獲得的內(nèi)容返回給客戶端??蛻舳吮仨氁M(jìn)行一些特別的設(shè)置才能使用正向代理。

      正向代理的典型用途是為在防火墻內(nèi)的局域網(wǎng)客戶端提供訪問Internet的途徑。正向代理還可以使用緩沖特性(由mod_cache提供)減少網(wǎng)絡(luò)使用率。

      使用ProxyRequests指令即可激活正向代理。因為正向代理允許客戶端通過它訪問任意網(wǎng)站并且隱藏客戶端自身,因此你必須采取安全措施以確保僅為經(jīng)過授權(quán)的客戶端提供服務(wù)。

      反向代理正好相反,對于客戶端而言它就像是原始服務(wù)器,并且客戶端不需要進(jìn)行任何特別的設(shè)置??蛻舳讼蚍聪虼淼拿挚臻g(name-space)中的內(nèi)容發(fā)送普通請求,接著反向代理將判斷向何處(原始服務(wù)器)轉(zhuǎn)交請求,并將獲得的內(nèi)容返回給客戶端,就像這些內(nèi)容原本就是它自己的一樣。

      反向代理的典型用途是將防火墻后面的服務(wù)器提供給Internet用戶訪問。反向代理還可以為后端的多臺服務(wù)器提供負(fù)載平衡,或為后端較慢的服務(wù)器提供緩沖服務(wù)。另外,還可以啟用高級URL策略和管理技術(shù),從而使處于不同web服務(wù)器系統(tǒng)的web頁面同時存在于同一個URL空間下。

      可以使用ProxyPass指令激活反向代理(在RewriteRule指令中使用[P]標(biāo)記也可以)。配置反向代理并不需要打開ProxyRequests指令。


      安裝:

      yum install libxml2-devel.x86_64
      yum install httpd-devel.x86_64

      wget http://apache./mod_proxy_html/mod_proxy_html.tar.bz2
      bunzip2 mod_proxy_html.tar.bz2
      tar -xf mod_proxy_html.tar
      cd mod_proxy_html

      ln -s /usr/include/libxml2/libxml /usr/include/libxml

      apxs -I /usr/include/libxml -I . -i -c mod_proxy_html.c
      chmod 755 /usr/lib64/httpd/modules/mod_proxy_html.so

      apxs -I /usr/include/libxml -I . -i -c mod_xml2enc.c
      chmod 755 /usr/lib64/httpd/modules/mod_xml2enc.so

      原文:http://blog./?p=12

      reverse proxy主機配置。把www.指向http://192.168.1.3/
      <VirtualHost *:80>
          ServerAdmin office@
          ServerName www.
          ErrorLog logs/error_log
          CustomLog logs/access_log common

              ProxyRequests Off
              <Proxy />
              Order deny,allow
              Allow from all
              ProxyPass http://192.168.1.3/
              ProxyPassReverse http://192.168.1.3/
              ProxyPassReverseCookieDomain 192.168.1.3 www.
              </Proxy>
      ProxyHTMLDoctype XHTML  #!!!重要 設(shè)置DocType。

      </VirtualHost>

      關(guān)于ProxyHTMLDoctype設(shè)置,見:http://apache./mod_proxy_html/config.html

      **********這里有個很重要的問題,需要在虛擬機的apache中,啟用mod_rpaf模塊。

      如果不安裝mod_rpaf模塊,會有一系列很麻煩的問題。雖然你是用domain.com訪問服務(wù)器,但是從phpinfo();可以看到,
      Apache Environment里:
      HTTP_HOST  192.168.1.2 #內(nèi)網(wǎng)地址
      SERVER_NAME  192.168.1.2 #內(nèi)網(wǎng)地址
      REMOTE_ADDR  192.168.1.1 #內(nèi)網(wǎng)反向代理地址
      SERVER_SIGNATURE  <address>Apache/2.2.15 (CentOS) Server at 192.168.1.2 Port 80</address>


      當(dāng)然HTTP Headers里也是內(nèi)網(wǎng)地址:
      Host  192.168.1.2


      這會有什么問題呢?首先你會發(fā)現(xiàn)phpMyAdmin安裝不了。然后稍微復(fù)雜一點的框架也會出錯,比如drupal。經(jīng)常運行到某個頁面就跳到內(nèi)網(wǎng)IP上了。這個問題折磨了我好一陣。雖然phpMyAdmin和drupal都針對反向代理的問題,給出了相應(yīng)的修改。但是相信我,別費時間跟著那些信息往下進(jìn)行,都不是什么好辦法。比如drupal,核心修改了,上千個第三方模塊怎么辦?

      問題正解來自Thomas Eibner。他寫的mod_rpaf從apache這一層,解決了這些麻煩事。不必再麻煩一行行修改php代碼了。安裝步驟如下:

      mod_rpaf , 令反向代理后端的 Apache 獲取到互聯(lián)網(wǎng) IP
      wget http:///apache/rpaf/download/mod_rpaf-0.6.tar.gz
      cd mod_rpaf-0.6
      yum install httpd-devel  #沒有apxs的,先安裝httpd-devel
      apxs -i -a -c mod_rpaf.c    Apache 1.3.x 的安裝方式
      apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c   Apache 2.x 的安裝方式


      然后vi /etc/httpd/conf/httpd.conf。
      在LoadModule 區(qū)域加了一行:
      LoadModule rpaf_module        modules/mod_rpaf-2.0.so

      并在下方添加

      RPAFenable On
      RPAFsethostname On
      RPAFproxy_ips 127.0.0.1 192.168.1.1    # 填寫反向代理服務(wù)器內(nèi)網(wǎng)IP。
      RPAFheader X-Forwarded-For

      保存退出后重啟apache

      rpaf官網(wǎng):http:///apache/rpaf/
      一篇中文安裝說明:http://blog.csdn.net/songerzhou/article/details/5142863



      7. 虛擬機中的Mysql配置

      http://space./9240380/viewspace-665719
      在命令行下,可以有兩種大同小異的方法來作此設(shè)置:
      (1)mysql>GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'something' WITH GRANT OPTION;
      mysql>GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY 'something' WITH GRANT OPTION;
      GRANT ALL PRIVILEGES ON *.* TOroot@"%" IDENTIFIED BY '123456'  WITH GRANT OPTION;



      How Do I Enable Remote Access To MySQL Database Server?
      http://www./tips/how-do-i-enable-remote-access-to-mysql-database-server.html


      MYSQL PHPMYADMIN無法鏈接
      setsebool -P httpd_can_network_connect 1


      8. 后續(xù):iptables規(guī)則優(yōu)化,虛擬機自動快照備份
      太長了,分開幾篇文章吧。
      虛擬機自動快照備份:http://www./blog/post/snapshot-to-kvm-qcow2-image.php

      [ 2012-11-09 ] 更新,加入mod_proxy中ProxyHTMLDoctype設(shè)置。


      最后編輯: Sonic 編輯于2012/11/09 14:23
      Tags: , ,

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多