作者 主題: 使用VM 練習建立虛擬網路  (閱讀 2245 次)

0 會員 與 1 訪客 正在閱讀本文。

jonathan_lwo

  • 活潑的大學生
  • ***
  • 文章數: 320
    • 檢視個人資料
使用VM 練習建立虛擬網路
« 於: 2010-03-05 21:16 »
host os 使用win xp
只用一張網路卡

下圖是邏輯圖



建立guest os (centos) 當firewall
建立三張網路卡
eth0 對外:設成 BOOTPROTO= dhcp 、 ONBOOT=no ,撥接用這一張
eth1 :192.168.11.254/24 (當dmz網段的gateway)
eth2 :192.168.12.254/24 (當內部網段gateway)

最小安裝(安裝時所有選項都不勾)



安裝後...
/etc/rc.local 內容如下:

#!/bin/bash
IPT=/sbin/iptables

EXTIF="ppp0"
INIF="eth1"
INNET1="192.168.11.0/24" # This is for DMZ network
INNET="192.168.12.0/24"  # This is for Internal network

PATH=/sbin:/bin:/usr/sbin:/usr/bin
export PATH EXTIF INIF INNET INNET1
modprobe ip_tables > /dev/null 2>&1
modprobe iptable_nat > /dev/null 2>&1
modprobe ip_nat_ftp > /dev/null 2>&1
modprobe ip_nat_irc > /dev/null 2>&1
modprobe ip_conntrack > /dev/null 2>&1
modprobe ip_conntrack_ftp > /dev/null 2>&1
modprobe ip_conntrack_irc > /dev/null 2>&1

$IPT -F
$IPT -X
$IPT -Z
$IPT -F -t nat
$IPT -X -t nat
$IPT -Z -t nat
$IPT -P INPUT DROP
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD DROP
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT

$IPT -t filter -A INPUT -i lo -j ACCEPT
$IPT -t filter -A INPUT -p icmp --icmp-type 8 -j DROP
$IPT -t nat -A PREROUTING -i $EXTIF -d $INNET -j DROP
$IPT -t nat -A PREROUTING -i $EXTIF -d 127.0.0.0/8 -j DROP
$IPT -t nat -A PREROUTING -i $EXTIF -s $INNET -j DROP
$IPT -t nat -A PREROUTING -i $EXTIF -s 127.0.0.0/8 -j DROP
$IPT -t nat -A PREROUTING -i $EXTIF -d $INNET1 -j DROP
$IPT -t nat -A PREROUTING -i $EXTIF -s $INNET1 -j DROP
$IPT -t nat -A PREROUTING -i eth1 ! -s $INNET -j DROP

$IPT -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

#內部網路能出去的 port
$IPT -t filter -A FORWARD -i eth2 -o $EXTIF -p TCP -m multiport --dport 21,25,80,110,443 -j ACCEPT
$IPT -t filter -A FORWARD -i eth2 -o $EXTIF -p UDP --dport 53 -j ACCEPT

#把特定的網站導到 特定的ip上
$IPT -t nat -A PREROUTING -d www.atv51.cc -j DNAT --to-destination 192.168.11.253

#記錄內部出去的log
# $IPT -A FORWARD -j LOG --log-level 6

# 先允許信任網域,這包含 lo 這個內部迴圈介面,
# 以及剛剛指定的內部介面網域!
$IPT -A INPUT -i lo -j ACCEPT
if [ "$INIF" != "" ]; then
$IPT -A INPUT -i $INIF -j ACCEPT
echo "1" > /proc/sys/net/ipv4/ip_forward
$IPT -t nat -A POSTROUTING -s $INNET -o $EXTIF -j MASQUERADE
$IPT -t nat -A POSTROUTING -s $INNET1 -o $EXTIF -j MASQUERADE
fi

# 允許 ICMP 封包與允許已建立的連線通過!
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
AICMP="0 3 3/4 4 11 12 14 16 18"
for tyicmp in $AICMP
do
$IPT -A INPUT -i $EXTIF -p icmp --icmp-type $tyicmp -j ACCEPT
done

#不回應ping
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all


用adsl-setup 設定撥接,要使用eth0 …

下圖是實體接線圖



#實際上只需有一台電腦 ,即可完成架構
#rc.local內的設定是拿鳥哥的firewall rule 來用的,我改的不是很高明,有些需要再改進…
#guest os (centos )最小安裝還是需要1.5GB 多,空間就縮不下去了~
#如上圖中的xp可以是host os 也可以是guestos


« 上次編輯: 2010-03-05 21:18 由 jonathan_lwo »