`
brucectl
  • 浏览: 177859 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

LINUX 下基于路由策略的IP地址控制实例

阅读更多




一、背景描述

如图,LINUX是一台网关服务器,内有3块网卡
eth1绑定172.17.0.0/16的IP,该网段IP可以通过172.17.1.1上网
eth0绑定192.168.10.0/24的IP,该网段IP可以通过192.168.10.1上网
eth2绑定192.168.1.1,是内网用户的网关



二、需求分析

内网用户应该走172.17.1.1这个路由上网
但由于工作需要,部分用户应该有访问图中“专用网络”的权限
也就是说,应该走192.168.10.1这个路由

另外一点,所有人应该可以访问FTP服务器,这个服务器的IP是192.168.10.96
也就是说,走172.17.1.1路由的人,也应该能访问192.168.10.96,且可以上网

三、解决方案

要解决这个问题,用到了一下几个命令,具体使用方法需要另查资料
ip route
ip rule
arp
注:关于ip命令的用法,请查阅ip中文手册,www.google.com上有

1、绑定IP
ifconfig eth1 172.17.3.x netmask 255.255.0.0
ifconfig eth0 192.168.10.2 netmask 255.255.255.0
ifconfig eth2 192.168.1.1 netmask 255.255.255.0
然后分别修改/etc/sysconfig/network-script/ifcfg-ethx文件,以使计算机启动自动设置IP地址

2、创建特殊路由表
vi /etc/iproute2/rt_table
代码:

#
# reserved values
#
255     local
254     main
253     default
0       unspec

200     NET10
#
# local
#
#1      inr.ruhep
 

上面那个200 NET10为新添加,自定义编号为200,名字为NET10

3、向NET10路由中添加它自己的默认路由

代码:

ip route add default via 192.168.10.1 table NET10


注意,这个table NET10一定不要忘了写,否则写到了主路由表中

4、创建特殊路由规则

用ip rule可以看到计算机当前的路由规则
引用:

0: from all lookup local
32766: from all lookup main
32767: from all lookup default
 

可以看到,规则中走了3个路由表,local、main、default
我们平常用route看到的,实际是路由表main
这些规则是按序号大小顺序走的,一个不同,则走下一个,知道通路或走完为止

开始添加我们自己的路由NET10到路由表中
代码:

ip rule add from 192.168.1.222 pref 10000 table NET10
 

这个意思是说,如果来自IP地址为192.168.1.222的访问,则启用NET10的路由表中的路由规则
而NET10的路由规则是什么呢?上面已经设置了,走的是192.168.10.1的网段
接下来,使LINUX可以NAT(这里不再细说HOW TO了)

5、让所有人可以访问192.168.10.xx(这个IP不便说出来)

因为其余人都走了172.17.1.1这个路由,所以他们是无法访问192.168.10.xx的
怎么才能实现呢?再添加个策略就可以了!
代码:

ip rule add to 192.168.10.xx pref 10001 table NET10
 

这句话的意思是说,所有人,如果目的IP是192.168.10.xx,则临时使用NET10的路由表
这样做,安全会不会有安全问题呢?路由变了,他们会不会访问到专用网络呢?
不会的,因为路由规则是to 192.168.10.xx,也就是目标是96时,才该路由的,访问别的网站还是走原来的路由。
如果说访问到专用网络的机器,也就只有10.xx这一台而已。
这里,我们还可以做一个小技巧,不告诉别人192.168.10.xx的地址,只告诉他们网关192.168.1.1上有这个服务
iptables -t nat -A PREROUTING -d 192.168.1.1/32 --dport 21 -j DNAT --to 192.168.10.xx:21

6、防止其他人篡改IP地址而获得特殊权限

arp有个静态功能CM,不是C,大家可能知道
如果给一个IP地址强行绑定一个非他自己的MAC,会怎么样呢?双方会话将会失败!
好,我们来利用这一点!

首先,我写了一个文件iproute.c
代码:

#include <stdlib.h>
#include <stdio.h>
main ()
{
        int i;
        for(i=2;i<255;i++)
                printf("192.168.1.%d\t\t00:00:00:00:00:00\n",i);
}
 

gcc iproute.c -o iproute
将编译出一个可执行文件
注:不应该包括主机IP地址本身,所以从2循环到254(255是广播)

其次,生成一个C的IP地址和全为00的MAC地址
代码:

./iproute > /etc/ethers
 


再次,修改IP-MAC匹配列表
vi /etc/ethers
具体怎么该我就不用细说了,相信大家都会

最后,做静态IP-MAC绑定
arp -f

7、为了安全,建立防火墙,修改main路由表

默认的路由表应该有192.168.10.0/24和172.17.0.0/16网段的内容,为了安全,可以去掉
另外,如果是AS3的话,还会有169.254.0.0/16的路由,具体为什么我不知道,去掉
然后写一个防火墙脚本,利用iptables,把你的机器变得更加坚固!
  • 大小: 14.7 KB
分享到:
评论

相关推荐

    Linux下基于路由策略的IP地址控制实例

    Linux 下基于路由策略的 IP 地址控制实例 在 Linux 系统中,基于路由策略的 IP 地址控制实例是一个非常重要的知识点。本文将详细介绍如何使用路由策略来控制 IP 地址,以满足不同的网络需求。 一、背景描述 在 ...

    Linux策略路由的分析及其应用.pdf

    Linux 策略路由是指基于策略的路由选择机制,它允许管理员根据 IP 包的源地址、目的地址或其他信息来选择路由。Linux 作为一个开源的操作系统,具有强大的功能,包括策略路由功能。 Linux 策略路由的实现原理是基于...

    Linux环境下基于策略路由实现多线路负载均衡.pdf

    【Linux环境下基于策略路由实现多线路负载均衡】 随着互联网的快速发展,越来越多的企业和个人需要通过多个网络出口接入Internet,以提高网络带宽和效率。在Linux操作系统中,利用策略路由(Policy Routing)可以...

    linux高级路由和流量控制HOWTO中文版(牛老师译)

    2. **默认路由**:默认路由是当系统无法根据目标IP地址找到特定路由时采取的策略,通常指向Internet网关。 3. **静态路由**:静态路由是由管理员手动配置的,它们不会随网络环境变化而自动更新。使用`ip route add`...

    基于Linux IP 策略路由的多路由分配技术

    ### 基于Linux IP策略路由的多路由分配技术 #### 一、多路由分配问题的背景 随着互联网技术的迅速发展以及网络服务商提供的多样化服务,很多组织或机构拥有多条通往互联网的不同路径。例如,某实验室可能同时接入...

    在Linux下配置基于策略的路由

    基于策略的路由比传统路由更强大,使用更灵活,它使网络管理者不仅能够根据目的地址 而且能够根据报文大小、应用或IP源地址来选择转发路径。在现实的网络应用中,这种选择的自由性还是很需要的。

    linux高级路由和流量控制.zip

    本文将深入探讨这两个主题,帮助你更好地理解Linux环境下的网络优化。 一、Linux高级路由 1. 路由基础:路由是指导网络数据包从源到目的地的过程。在Linux中,路由表是核心组件,它包含一系列规则,用于决定数据包...

    用Qt实现在linux下获得路由器公网IP

    在IT领域,尤其是在嵌入式开发中,有时我们需要获取设备的公网IP地址,这在远程访问、物联网设备通信等场景非常常见。本教程将聚焦于如何利用Qt框架在Linux环境下实现这一功能,特别针对友善之臂Tiny6410开发板进行...

    基于linux的网络配置及应用实例

    DHCP允许网络管理员集中管理并动态分配IP地址、子网掩码、默认网关等网络参数,大大简化了网络管理。在"Linux_DHCP详细说明配置文档.pdf"和"Linux简单的DHCP服务器配置.pdf"中,你可以找到详细的步骤和实例。通常,...

    Linux软路由在校园网中的应用实例.pdf

    【Linux软路由在校园网中的应用实例】 随着互联网应用的普及,学校教育对网络的依赖度日益增强。本文主要探讨如何利用免费的网络操作系统Linux搭建软路由,以满足校园网中光纤接入的需求,同时降低设备成本。软路由...

    LinuxTCP/IP通信实例

    - 服务器首先创建一个socket,然后绑定到指定的IP地址和端口,等待客户端的连接。 - 当有客户端连接时,服务器调用`accept()`来接受连接,并为每个连接创建一个新的套接字。 - 接下来,服务器可以使用新的套接字...

    linux 网络通信实例

    在实际应用中,Linux网络编程还需要考虑错误处理、多线程或异步处理来应对多个并发连接,以及网络层的其他复杂问题,如IP包路由、网络拥塞控制等。同时,还可以利用套接字选项和协议族中的其他功能,如设置超时、...

    1-01 IP地址配置

    文件中提供了多个实例,包括配置接口的主从IP地址、通过协商获取IP地址、配置接口借用IP地址等,这些实例有助于更好地理解和掌握IP地址配置的相关操作。 通过以上详细解析,我们不仅了解了IP地址的基本概念和分类,...

    在Linux下(VRRP)虚拟路由冗余协议介绍

    7. **Owner**:当前控制虚拟IP地址的路由器。 8. **Authentication**:用于同一VRID中路由器间通信的安全验证,通常基于简单的密码机制。 VRRP的数据包结构包括头信息,其中包含VRID、优先级、状态等,详细信息可...

    基于linux的网络通信系统

    Linux提供了丰富的API供开发者使用,如`socket()`用于创建套接字,`bind()`将套接字绑定到特定的IP地址和端口,`listen()`使服务器进入监听状态,等待客户端的连接请求,`accept()`接收并处理连接请求,`connect()`...

    实例101 Linux下编程实现服务器与客户端的连接.rar_linux 编程_linux 服务器_linux下编程_服务器

    本实例"实例101 Linux下编程实现服务器与客户端的连接"主要涵盖了网络编程的基础知识,以及如何在Linux系统中应用这些知识来创建服务端和客户端程序。下面我们将深入探讨相关知识点。 首先,我们要了解的是TCP/IP...

    基于linux下nginx的安装及项目部署

    【标题】:“基于Linux下Nginx的安装与项目部署详解” 【描述】:本文将详细介绍如何在Linux系统中安装Nginx,并探讨其主要功能,包括反向代理、负载均衡以及项目部署的具体操作。 【标签】:“Nginx”,“Nginx...

    计算机软件-商业源码-实例99 获得主机名和IP地址.zip

    这个“实例99 获得主机名和IP地址”的压缩包文件显然包含了一个或多个源码示例,用于演示如何在不同的编程环境中实现这一功能。在本文中,我们将深入探讨这些知识点,包括网络基础、TCP/IP协议、主机名与IP地址的...

    Linux下路由器的配置.pdf

    在Linux系统中,ifconfig命令可以用来查看和配置网络接口的IP地址、子网掩码、广播地址等。 ### TCP/IP协议栈 Linux路由器配置文档涉及了多种网络协议,包括IP、TCP、ICMP、ARP等。IP协议用于数据包的传输,而TCP...

Global site tag (gtag.js) - Google Analytics