CentOS6
NAT+DHCP服务共享客户机上网
操作系统:CentOS6.2dhcp版本:dhcp-common-4.1.1-25.P1.el6_2.1.i686
dhcpdump-1.7-1.el6.rf.i686
dhcp-4.1.1-25.P1.el6_2.1.i686
dhcping-1.2-4.el6.i686
dhcp-devel-4.1.1-25.P1.el6_2.1.i686
一

我的实体机为CentOS-6.2,学校迁的是校园网,IP我是这样设的:
$ vi /etc/sysconfig/network-scrips/ifcfg-eth0
输入以下内容:
DEVICE="eth0"
HWADDR="00:24:54:5E:5D:39"
NM_CONTROLLED="yes"
BOOTPROTO=static
IPADDR=58.195.172.229
NETMASK=255.255.255.192
GATEWAY=58.195.172.254
DNS1=58.195.1.1
DNS2=202.103.24.68
设好后,重启网络服务:service network restart 或 /etc/init.d/network restart
如果启不来,试试ifup eth0 或者ifconfig eth0 up
若还不行,没办法,重启下看看,呵呵。

查看一下IP设置:ifconfig
eth0 Link encap:Ethernet HWaddr 00:24:54:5E:5D:39
inet addr:58.195.172.229 Bcast:58.195.172.255 Mask:255.255.255.192
inet6 addr: fe80::224:54ff:fe5e:5d39/64 Scopeink
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:108823 errors:0 dropped:0 overruns:0 frame:0
TX packets:97379 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:62428078 (59.5 MiB) TX bytes:61038111 (58.2 MiB)
Interrupt:18
好的,以经设置好了,接下来查看IP转发功能是否开启:
cat /proc/sys/net/ipv4/ip_forward
结果为0,则表示未开。
echo "1" > /proc/sys/net/ipv4/ip_forward
临时开启IP转发功能。
永久开启则需编辑/etc/sysctl.conf文件,将其中的net/ipv4/ip_forward=0换成net/ipv4/ip_forward=1(有的是需将net/ipv4/ip_forward=1前的#删除即可)。

最后设定iptables,允许nat进行IP映射,使数据能重定向到指定主机。
#先清除已有规则
iptables -F
iptables -X
iptables -Z
#设定预设规则
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
#nat转发
iptables -t nat -A POSTROUTING -s 58.195.172.0/24 -j MASQUERADE
iptables -A INPUT -i eth0 -p tcp --sport 80 -j ACCEPT
以上iptables规则只是作了很简陋的设置,更为科学合理的设置还请各位前辈朋友们多指点,哈

小提示:若要长期使用的话,可以将上述iptables规则写到shell脚本里面,每次开机运行一下就OK,或者直接通过~/.bashrc或~/.bash_profile或/etc/rc.local添加一句运行该脚本的语句即可,还或者将脚本放在/etc/rc*.d/中,这里的*指启动时所对应的启动级别,这样就可以顺利实现开机自动运行喽!
好的,现在客户机只要作一下简单的设置。
客户机只需把网关改为主机的IP(我这里设的是58.195.172.229,也就是linux主机的IP)即可,DNS等保持不变。
处在58.195.172.0/24网段的的IP就可以上网了
二 配置DHCP服务器
如上面所说,如果纯粹只想实现nat共享上网的话上面的步骤就可以实现了,当然,要是还想让“客户”朋友们在“舒服”点的话就再配个DHCP喽!呵呵

首先,当然还是安装啦!
对于rpm系列的linux如果用的是yum包管理器的话,可以在配好yum源后直接
yum install dhcp*
呵呵,简单吧!
麻烦点的话,在rpmfind等或者google找一下相关的软件包即可
最后是配置喽!
vi /etc/dhcp/dhcpd.conf
下面是我的配置文件
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
# see 'man 5 dhcpd.conf'
#
ddns-update-style interim;#DHCP-DNS互动更新模式
ignore client-updates;#允许客户机更新DNS记录
allow booting;#响应使用者查询
allow bootp;#响应激活查询
allow unknown-clients;#是否动态分配IP给未知的使用者
#定义作用域
subnet 58.195.172.0 netmask 255.255.255.0 {
option routers 58.192.172.229; #指定默认网关
option subnet-mask 255.255.255.0; #指定子网掩码
#option domain-name "jlive.org"; #DNS名字
option domain-name-servers 58.195.1.1,202.103.24.68; #指定DNS的IP地址
option time-offset -18000; #指定和格林尼治时间的偏移差,单位是秒
range dynamic-bootp 58.195.172.100 58.195.172.254; #提供动态分配IP的范围
default-lease-time 21600; #默认租赁时间的长度,单位是秒
max-lease-time 43200; #最大租赁时间的长度,单位是秒
#为固定机器绑定固定IP,指定多个主机--IP绑定时用group{}将主机扩起来
group{
host lei {
hardware ethernet 98:4b:e1:a2:f7:fd; #客户机网卡的MAC地址
fixed-address 58.195.172.230; #给定固定IP给该客户机
# option host-name ct6.example.com;
}
host ang {
hardware ethernet 00:21:70:93:87:c1;
fixed-address 58.195.172.231;
# option host-name ubuntu.example.com;
}
host yue {
hardware ethernet 00:30:67:57:4b:a1;
fixed-address 58.195.172.232;
# option host-name ubuntu.example.com;
}
#与group{ 相对应
}
#与subnet{ 相对应,哈,有始有终么!
}
好的,到此就全部配置安装完成,重启一下服务看看。
service dhcpd restart
如果没有报错则说明成功,如有问题很可能是配置上出了点岔子,可以通过

查看日志,用以下命令
tail -f /var/log/messages
实时监视出错及运行情况也方便找出错误点。
开机运行dhcp通过以下命令来实现:
chkconfig --level 35 dhcpd on #在启动级别3和5开启dhcp
有兴趣的同学们可以尝试尝试,有错误的地方还望不吝指教噢!呵呵,

下面是dhcpd.conf配置的参数对照表
######################################################
######################################################
参数
ddns-update-style 配置DHCP-DNS互动更新模式(必选)
allow/ignore client-updates 允许或忽略客户机更新DNS记录
default-lease-time 默认租赁时间的长度,单位是秒
max-lease-time 最大租赁时间的长度,单位是秒
hardware 网卡接口类型和MAC地址
server-name 通知DHCP客户机服务器名称
get-lease-hostnames flag 检查客户端使用的IP地址
fixed-address ip 分配给客户端一个固定的地址
authritative 拒绝不正确的IP地址的要求
声明
shared-network{} 定义超级作用域,告知哪些子网分享相同网络
subnet{} 定义作用域,描述一个IP地址是否属于该子网
range 提供动态分配IP的范围
host 主机名{} 特别主机
group{} 一组主机
allow/deny unknown-clients 是否动态分配IP给未知的使用者
allow/deny bootp 是否响应激活查询
allow/deny booting 是否响应使用者查询
filename 开始启动文件的名称,应用于无盘工作站
next-server 设置服务器从引导文件装入主机名,应用于无盘工作站
选项
subnet-mask 为客户端指定子网掩码
domain-name 为客户端指定DNS名字
domain-name-server 为客户端指定DNS的IP地址
host-name 为客户端指定主机名
routers 为客户端指定默认网关
broadcast-address 为客户端指定广播地址
netbios-name-servers 为客户端指定WINS服务器的IP地址
netbios-node-type 为客户端指定节点类型
ntp-server 为客户端指定网络时间服务器IP地址
nis-server 为客户端指定NIS域服务器IP地址
nis-domain 为客户端指定NIS域服务器的名称
time-offset 为客户端指定和格林尼治时间的偏移差,单位是秒
################################################################
################################################################