如何用CentOS5.1做NAT
需要封一些和办公无关的东西,又不想买硬件防火墙。我只好用iptables实现了,2。6内核编译内核为IPTABLES添加模块(ipp2p+l7协议),今天就写最近工作需要的吧,技术浅陋,不敢说原创,借鉴了很多前人的东西,还望各位大虾不要笑话。
系统安装CentOS5。1 默认内核 Linux-2。6。18-53。el5 ,默认的iptables版本是1。3。5
需要的安装包,放在/root下吧
kernel-2。6。18-53。el5。 src。rpm //内核的源码包//
iptables-1。3。5。tar。bz2 //iptables-1。3。5的安装源码包//
dhcp-3。...全部
需要封一些和办公无关的东西,又不想买硬件防火墙。我只好用iptables实现了,2。6内核编译内核为IPTABLES添加模块(ipp2p+l7协议),今天就写最近工作需要的吧,技术浅陋,不敢说原创,借鉴了很多前人的东西,还望各位大虾不要笑话。
系统安装CentOS5。1 默认内核 Linux-2。6。18-53。el5 ,默认的iptables版本是1。3。5
需要的安装包,放在/root下吧
kernel-2。6。18-53。el5。
src。rpm //内核的源码包//
iptables-1。3。5。tar。bz2 //iptables-1。3。5的安装源码包//
dhcp-3。0。5-7。el5。i386。rpm //dhcp服务所用的包//
libpcap-0。
9。4-11。el5。i386。rpm //很多网络软件所依附的驱动包//
libpcap-devel-0。9。4-11。el5。i386。rpm //libcap的开发包//
l7-protocols-2008-02-20。
tar。gz //layer7协议的安装包//
netfilter-layer7-v2。17。tar。gz //内核和iptables的补丁//
ipp2p-0。99。15。tar。gz // ip2p2的模块,能限制迅雷。
BT。QQ旋风和主流的网络电视//
tcptrack-1。2。0。tar。gz //一个简单的流量查看工具//
防火墙选择关闭
关闭SELINUX
配好网卡IP
网络配置信息
外网卡:192。
168。0。1 255。255。255。0
内网卡:192。168。3。1 255。255。255。0
默认网关: 192。168。0。1
DNS: 219。141。136。10
211。94。
69。34
以上配置信息你可根据实际需求来配置,不用照搬
系统装完用root登陆
# rpm -qa | grep kernel
把 kernel-smp*。rpm 和 kernel-smp-devel*。
rpm 这两个包卸掉
# rpm -e --nodeps kernel-smp
# rpm -e --nodeps kernel-smp-devel
查看grub。conf 启动项就变成一项啦 否则系统默认启动项是SMP多处理器的,我的机器只有一个CPU,所以就卸掉啦,当然你要是双核或有多个CPU就不要卸载了
#cat /boot/grub/menu。
lst
# grub。conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition。
This means that
# all kernel and initrd paths are relative to /, eg。
# root (hd0,0)
# kernel /boot/vmlinuz-version ro root=/dev/hda1
# initrd /boot/initrd-version。
img
#boot=/dev/hda
default=0
timeout=1
splashimage=(hd0,0)/boot/grub/splash。xpm。gz
hiddenmenu
title CentOS (2。
6。18-53。el5)
root (hd0,0)
kernel /boot/vmlinuz-2。6。18-53。el5 ro root=LABEL=/1
initrd /boot/initrd-2。
6。18-53。el5。img
修改SSH远程启用root登陆
# vi /etc/ssh/sshd_config
#PermitRootLogin yes 找到这句把前面的#注释去掉 保存退出
注意:因为iptables我们以后要配的 所以安装的时候选择不启用,也就是说你现在的机器INPUT、OUTPUT都是ACCEPT 如果你不是选择防火墙使你SSH连接不上,可以停掉,反正我们等下升级完它后还是会自己写脚本的 否则就没升级它的必要啦
现在我们需要关闭些不重要的服务
#ntsysv
只保留以下几个服务就够了,其他都不选
crond
microcode_ctl
network
syslog
sshd
选好后保存退出
重启 #reboot
好,以上步骤都是在主机上做的,以后我们可以终端SSH上去。
开工!!!
解开所有压缩包
# tar zxvf ipp2p-0。99。15。tar。gz -C /usr/src/
# tar zxvf l7-protocols-2008-02-20。tar。
gz -C /usr/src/
# tar zxvf netfilter-layer7-v2。17。tar。gz -C /usr/src/
# tar xvjf iptables-1。3。5。
tar。bz2 -C /usr/src/
修正rpm包安装key警告问题
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
建立内核源码包安装所需用户
# useradd mockbuild
安装源码包 考一份内核到 /usr/src/linux-2。
6。18做编译使用,如果编译失败 可以删除后再考新的 所以不建议做软连接操作
# rpm -ivh kernel-2。6。18-53。el5。src。rpm
# cd /usr/src/redhat/SPECS
# rpmbuild -bp --target=i686 kernel-2。
6。spec
# cp -a /usr/src/redhat/BUILD/kernel-2。6。18/linux-2。6。18。i686 /usr/src/linux-2。6。18
修改拷贝的内核与当前系统内核版本一致(很重要,否则编译出来的模块不能被内核所使用)
# cd /usr/src/linux-2。
6。18
# vi Makefile
修改 EXTRAVERSION = -prep
该成 EXTRAVERSION = -53。el5
保持跟uname -r 的版本一致 检测一下
# uname -r
2。
6。18-53。el5
# head -n4 Makefile
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 18
EXTRAVERSION = -53。el5
# make mrproper
该命令确保源代码目录下没有不正确的。
o文件以及文件的互相依赖。
#make oldconfig
该命令是生成就的内核配置文件,运行完后就会有。config文件了
好了,现在为内核打补丁并添加模块
设置内核和iptables的环境变量。
收起