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