1.有一种场景:
该公司只有一个互联网地址,想让内网客户端上网,又想让内网的服务器被外网客户端访问。
想让内网客户端主机上网,就使用SNAT;
想让内网的服务器被外网客户端访问,就使用DNAT;
内网主机是员工用来办公的,有很多的机密资料,是不能被外网访问到的,
但是内网的服务器主机又必须被外网访问,那怎么把它们分开处理呢?
方法1:如果有人攻破了内网的服务器主机,利用它做跳板,去窃取内网客户端的资料,这是非常危险的。
在有公网IP的主机上设置3块网卡,1个面对互联网,1个面对内网客户端,1个面对内网服务器;
这样就可以分开处理它们啦;即使被攻破了服务器也不能去访问内网客户端,除非破解了防火墙。
内网服务器区域叫做:DMZ(非军事化区域),那内网客户端就是军事化区域啦。
但是这种方法有公网IP的主机比较繁忙。
方法2:背靠背方式
两个主机防火墙各有两个网卡,前端主机防火墙有1个公网IP连接外网,另1个IP连接交换机,
交换机连接后端主机防火墙的1个IP,交换机还连接内网服务器,
后端主机防火墙的另1个IP连接内网的客户端。
这就做到了分开处理,并且不繁忙。
---- ----
|防| |防|
内网客户端-- |火| |火|
|墙|-- 交换机--(内网)|墙|---外网
---- | ----
|
服务器
2.小项目:
有一个主机,有3个网卡,1个面对互联网,1个面对内网客户端,1个面对内网服务器;
内网服务器有SMTP,DNS,WEB,3个独立的服务主机。
当外网客户端访问内网WEB服务器时,先需要DNS服务器解析,转换成公网IP,最后转到WEB服务器;
内网的客户端访问内网的WEB就不需要解析成公网IP,
只需要把两个内网网段通过路由转发即可,DNS定义view:内网请求转换成私有IP,外网请求转成公网IP。
3.内核编译:
查看硬件详细信息:
/proc/cpuinfo:cup相关信息
lspci:pci相关信息
lsusb:usb相关信息
hal-device:查看每个硬件的相关详细
记下硬件的型号,在配置的时候选择对应的驱动
配置:保存在.config文件中,也可以在此文件直接配置
make menuconfig
make gconfig
make kconfig
make config:会遍历每一个选项,比较痛苦,时间比较长
make oldconfig
编译:
make:编译全部功能
只编译部分功能:
make SUBDIR=arch/:只编译和内核核心相关功能的
make driver/net/pcnet32.ko:只编译一个驱动,如只编译一个网卡驱动
make dir/:只编译此目录下的所有内核原码
转存编译结果:make O=/path/to/somewhere
安装内核模块:make modules_install
安装内核:make install
清除:make clean
make mrproper
iptables:二(源MAC),三,四层
string:七层过滤,只能实现字符串,过滤七层协议很薄弱
4.layer7【实现七层过滤】
作用:基于应用层协议实现过滤。
应用:xunlei,qq,netfilter<--patch
-m layer7 --17protp xunlei -j DROP
实现步骤:
1.给内核打补丁,并重新编译内核
2.给iptables源码打补丁,并重新编译iptables
3.安装17proto
打补丁:
1.kernel,patch:为了让netfilter提供一个框架接收iptables的相应规则
2.iptables,patch:为了让iptables写相关的规则
(1).kernel patch
#tar zxvf linux-2.6.28.tar.gz -C /usr/src
#tar zxvf netfilter-layer7-v2.22.tar.gz -C /usr/src
#cd /usr/src
#ln -s linux-2.6.28.10 linux
#cd /usr/src/linux
#patch -p1 < ../netfilter-layer1-v2.22/kernel-2.6.25-2.5.28-layer7-2.22.patch
#cp /boot/config-2.6.18-164.el5 /usr/src/linux/.config
#make menuconfig
Networking support > Networking Options-> Network packet filtering framework-> Core Netfilter Configuration
<M> Netfilter Configure tracking support
<M> "layer7" match support
<M> "string" match support
<M> "time" match support
<M> "iprange" match support
<M> "connlimit" match support
<M> "state" match support
<M> "coontrack" connection match support
<M> "mac" address match support
<M> "multiport" match support
Networking support > Networking Options-> Network packet filtering framework-> IP:Netfilter Configuration
<M> IPv4 connection tracking support(required for NAT)
<M> Full NAT
<M> MASQUERADE target support
<M> NETMAP target support
<M> REDIRECT target support
#yum provides */screen
#yum install screen-4.0.3-16.el6.x86_64
#screen 为了防止编译被打断
#make
#make modules_install
#make install
(2).Compiles iptables:
#cp /etc/init.d/iptables ~/iptables
#cp /etc/sysconfig/iptables-config ~/
#rpm -e iptables-ipv6 iptables iptstate --nodeps
#tar jxvf iptables-1.4.6.tar.bz2 -C /usr/src
#cd /usr/src/iptables-1.4.6
#cp ../netfilter-layer1-v2.22/iptables-1.4.3forward-for-kernel-2.6.20forward/libxt_layer7.* ./extensions/
#./configure --prefix=/usr --with-ksource=/usr/src/linux
#make
#make install
#tar zxvf 17-protocols-2009-05-28.tar.gz
#cd 17-protocols-2009-05-28
#make install
#mv ~/iptables /etc/rc.d/init.d/
#/etc/init.d/iptables start
17-filter uses the standard iptables extension synatx
#iptables [specify tables & chain] -m layer7 --17proto [protocol name] -j [action]