由于我们实验室本科生来作毕业设计,ip地址不够用,我的SuSE就暂时做了router。
eth0原来的配置如下:
[code]IP:      211.71.6.144
MASK:    255.255.255.192
ROUTER:  211.71.6.190
DNS:     202.112.128.73[/code]
第一步:
为了使用nat必须给eth0再配置另外一个ip,192.168.3.1/255.255.255.0
在suse10下,使用命令yast2 lan来添加另外一个ip
在/etc/dhcpd.conf文件中添加如下配置:
[code]subnet 192.168.3.0 netmask 255.255.255.0 {
  range 192.168.3.2 192.168.3.254;
  option routers 192.168.3.1;
  option domain-name "vrlab.buaa.edu.cn";
  option domain-name-servers 202.112.128.73;
}[/code]
然后启动dhcp服务
[code]chkconfig dhcpd on
/etc/init.d/dhcpd start[/code]
第二步:
然后编写脚本/etc/init.d/nat,内容如下:
[code]#!/bin/bash
IPTABLES='/usr/sbin/iptables'
EXTERNAL='eth0'
EXTERNIP='211.71.6.144' 
INTERNAL='eth0' 
INTERNIP='192.168.3.0/24' 
# reset the three default ipchains
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
# reset the nat talbe
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT
# flush the ipchains and nat table
$IPTABLES -F
$IPTABLES -F -t nat
# delete non-default rules of ipchains and nat table 
# only the flushed user-defined chains can be deleted
$IPTABLES -X
$IPTABLES -t nat -X
#reset zero
#$IPTABLES -Z -t nat
$IPTABLES -Z
$IPTABLES -t nat -Z
start(){
    #load necessary modules
    echo "Starting modprobe necessary modules for iptables"
 
    modprobe ip_tables 1> /dev/null
    modprobe ip_nat_ftp 2> /dev/null
    modprobe ip_nat_irc 2> /dev/null
    modprobe ip_conntrack 2> /dev/null
    modprobe ip_conntrack_ftp 2> /dev/null
    modprobe ip_conntrack_irc 2> /dev/null
    # enable communication inside local domain
    $IPTABLES -A INPUT -i $INTERNAL -s $INTERNIP -j ACCEPT
    $IPTABLES -A OUTPUT -o $INTERNAL -d $INTERNIP -j ACCEPT
 
    # enable ip masquerade
    echo "1" >/proc/sys/net/ipv4/ip_forward
    $IPTABLES -t nat -A POSTROUTING -o $EXTERNAL -s $INTERNIP -j MASQUERADE
}
 
stop(){
    echo "Stopping firewall"
    $IPTABLES -P INPUT DROP
    $IPTABLES -P OUTPUT DROP
    $IPTABLES -P FORWARD DROP
    echo "0" >/proc/sys/net/ipv4/ip_forward
}
 
restart(){
    stop
    start
}
# see how we were called
case $1 in
start)
    start
    ;;
stop)
    stop
    ;;
restart)
    restart
    ;;
*)
    echo $"Usage:$0 { start | stop | restart }"
    exit 1
esac[/code]
最后使用如下命令启动nat
[code]chkconfig nat on
/etc/init.d/nat start[/code]
在同一个局域网中的主机通过运行dhcp客户端就可以得到192.168.3.*的内网IP地址。额外的好处是vmware虚拟的所有操作系统只要设置为bridged,通过dhcp客户端也可以得到一个IP地址。
                  	
				
