好的,具体步骤如下:
网络环境: eth0 网通 ; eth1 电信 ; eth2 内网192.168.1.250 ; eth3 内网 192.168.3.250
内网WEB服务器为两个IP: eth0:192.168.1.240 gw:192.168.1.250
eth1:192.168.3.240 gw:192.168.3.250
实现目标: 内网两个IP段均能通过各自的网关实现识别电信\网通出口,达到合理利用线路资源
外部用户均能通过电信\网通IP访问内网提供的web服务
首先在/etc/iproute/rt_tables里面加入以下内容
10 CNCS
20 CNC
30 CTC
第2步 加入以下路由规则
# CNC
CNC_IF="eth0"
CNC_IP="61.181.100.102"
CNC_GW="61.181.100.101"
CNC_NET="61.181.100.100/30"
CNC_T="CNC"
CNCS_T="CNCS"
# CTC
CTC_IF="eth1"
CTC_IP="221.239.200.202"
CTC_GW="221.239.200.201"
CTC_NET="221.239.200.200/30"
CTC_T="CTC"
# LAN
INT1_IF="eth2"
INI2_IF="eth3"
INT1_IP="192.168.1.250"
INT2_IP="192.168.3.250"
INT1_NET="192.168.1.0/24"
INI2_NET="192.168.3.0/24"
LAN_IP="192.168.0.0/16"
# WEB
FWD_TCP_PORT1="80"
# LAN SERVER IP
SERVER_IPCNC1="192.168.1.240"
SERVER_IPCTC1="192.168.3.240"
ip route add $CNC_NET dev $CNC_IF src $CNC_IP table $CNCS_T
ip route add default via $CNC_GW table $CNC_T
ip route add $CNC_NET dev $CNC_IF src $CNC_IP table $CNC_T
ip route add default via $CNC_GW table $CNC_T
ip route add $CTC_NET dev $CTC_IF src $CTC_IP table $CTC_T
ip route add default via $CTC_GW table $CTC_T
ip route replace $CNC_NET dev $CNC_IF src $CNC_IP
ip route replace $CTC_NET dev $CTC_IF src $CTC_IP
ip route replace $INT1_NET dev $INT1_IF src $INT1_IP
ip route replace $INT2_NET dev $INT2_IF src $INT2_IP
ip route replace $INT1_NET dev $INT1_IF src $INT1_IP table $CNCS_T
ip route replace $INT2_NET dev $INT2_IF src $INT2_IP table $CNCS_T
ip route replace $INT1_NET dev $INT1_IF src $INT1_IP table $CNC_T
ip route replace $INT2_NET dev $INT2_IF src $INT2_IP table $CNC_T
ip route replace $INT1_NET dev $INT1_IF src $INT1_IP table $CTC_T
ip route replace $INT2_NET dev $INT2_IF src $INT2_IP table $CTC_T
ip route replace default via $CTC_GW
ip rule add from $CNC_IP table $CNC_T
ip rule add from $CTC_IP table $CTC_T
#注意这里
ip rule add from 192.168.1.240/32 table $CNCS_T
ip rule add from 192.168.3.240/32 table $CTC_T
#添加网通策略路由
ip rule add to $网通IP段 table $CNC_T
ip route flush cache
for PORT in $FWD_TCP_PORT1; do
iptables -A FORWARD -i $CNC_IF -o $INT1_IF -d $SERVER_IPCNC1 -p tcp --dport $PORT -m state --state NEW -j ACCEPT
iptables -A FORWARD -i $CTC_IF -o $INT2_IF -d $SERVER_IPCTC1 -p tcp --dport $PORT -m state --state NEW -j ACCEPT
iptables -t nat -A PREROUTING -d $CNC_IP -p tcp --dport $PORT -j DNAT --to $SERVER_IPCNC1
iptables -t nat -A PREROUTING -d $CTC_IP -p tcp --dport $PORT -j DNAT --to $SERVER_IPCTC1
iptables -t nat -A POSTROUTING -s $LAN_IP -d $SERVER_IPCNC1 -p tcp --dport $PORT -j SNAT --to-source $INT1_IP
iptables -t nat -A POSTROUTING -s $LAN_IP -d $SERVER_IPCTC1 -p tcp --dport $PORT -j SNAT --to-source $INT2_IP
done
#
iptables -t nat -A POSTROUTING -o $CNC_IF -s $LAN_IP -j SNAT --to-source $CNC_IP
iptables -t nat -A POSTROUTING -o $CTC_IF -s $LAN_IP -j SNAT --to-source $CTC_IP
不足之处,白金给看看 :)
[ 本帖最后由 snakebaby 于 2006-10-31 16:46 编辑 ]