论坛风格切换切换到宽版
  • 3569阅读
  • 0回复

[问题求助](原创)双网卡在同一网段的解决办法 [复制链接]

上一主题 下一主题
 
发帖
1876
C币
-235812
威望
366
贡献值
1
银元
-3
铜钱
4235
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-05-01
e.th0: ip 192.168.0.1 ; eth1: ip 192.168.0.2   g.ateway:192.168.0.254.


/sbin/r.oute add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.0.254 dev. eth0.
/sbin/r.oute add -net .0.0.0.0 netmask 0.0.0.0 gw 192.168.0.254 dev eth1             汽车

/sbin/ip rou.te add to 0.0.0.0/0 via .192.168.0.254 dev eth0 table 10虚拟主机
/sb.in/ip rule add. from 192.168.0.1/32 table 10<性病>

/sbin/ip route add. to 0.0.0.0/0 via 192.168.0.254 dev eth1 table .20--------------彩票
/sbin/ip rule ad.d from. 192.168.0.2/32 table 20教育





仅供参考!





------------..-------------------------.------------------------------------------------           女人
介绍 iproute2
3.1 为什么使用 .iproute2? .
现在,绝大多数 Linux 发行版和绝大多数 UNIX.都使用古老的arp, ifconfig和route命令。虽.然这些工具能够工作,但它们在Linux2.2和.更高版本的内核上显得有一些落伍。比如,现在GRE隧道已经成为了路由的一个主要概念.,但却不能通过上述工具来配置。               乙肝
使用了ipr.oute2,隧道的配置与其他部分完全.集成了。              汽车
2.2 和更高版本的Linux 内核包含了一个经过彻底重新设计的网络子系统。这..些新的代码让Linu.x在操作系统的竞争中取得了功能和性能上的优势。实际上,Linux新的路由、.过滤和分类代码,从功能和性能上都不弱于现有的那些专业的路由器、防火墙和流量整形产品。 .
随着新的网络概念的提出,人们在现有操作系统的现有体系上修修.补补来实现他们。这种固执的行为导致了网络代码中充斥着怪异的行为,这有点.像人类的语言。过去,Linux模仿了SunO.S的许多处理方式,并不理想。  服务器
这个新的体系则有可能比以往任何一个版本的Linux.都更善于清.晰地进行功能表达。 投资
3.2 iproute2. 概览            鲜花
L.inux有一个成熟的带宽供给系统,称为Traffic Control(流.量控制)。这个系统支持各种方式进行分类、排序、共享和限制出入流量。 [成人用品]
我..们将从 iproute2 各种可能性的一个简要概览开始。 (广告)
3.3 先决条件
你应该确认已经安装了用户级配置工具。这个包的名.字在RedHat和.Debian中都叫作“iproute”,也可以在这个地方找到: .
ftp://ftp.inr.ac.ru/ip-routi.ng/iproute2-2.2.4-now-ss??????..tar.gz      健康
你也可.以试试在这里找找最新版本。 (广告)
iproute 的某些部分需要你打开.一些.特定的内核选项。应该指出的是,RedHat6.2及其以.前的所有发行版中所带的缺省内核都不带有流量控制所需要的绝大多数功能。  (        游戏          )
而RedHat. 7.2在缺省情况下能满足所有要求。 .教育
另外,.确认一下你的内核支持netlink .,Iproute2需要它. 投资
3.4 浏览你的当前配置
这听上去确实让人惊喜.:iprout.e2已经配置好了!当前的ifconfig和route命令已经正在使用新的系统调用,但通常使用了缺省参数(真无聊)。 --- 印刷
新的工具i.p成为中心,我们会让它来显示我们的.网卡配置。     美容
3.4..1. 让ip显示我们的链路 [成人用品]
[ahu@home ahu].$ .ip link list 电影
1.: lo: mtu 3924 qdisc noqueu.e               汽车
    link/loopback 00:00.:00:00:00.:00 brd 00:00:00:00:00:00 电影
2: dum.my:. mtu 1500 qdisc noop             女人
    link/ether 00.:00:00:00:.00:00 brd ff:ff:ff:ff:ff:ff (广告)
3: eth0: mtu 140.0 qdisc pfifo_fast ql.en 100 服务器
    link/ether 48:54:e8:2a:47:16. brd ff:ff:ff.:ff:ff:ff 虚拟主机
4: eth.1: mtu 1500 qdisc pfifo_f.ast qlen 100 (广告)
    l.ink/ether 00:e0:4c:39:24:7.8 brd ff:ff:ff:ff:ff:ff               乙肝
3764: ppp0: m.tu 1492 qdisc pfifo_fast .qlen 10            女人
    link/ppp  
你的结果可能有所区.别,但上述显示了我家里NAT路由器的情况。我将只解释输出中并非全部直接相关的部分。因为并不是所有部分都与我们的话题有关,所以我.只会解释输出的一.部分。            鲜花
我们首先看到了 loopback 接口。 While your .computer may function somewhat without one, I'd advise agains.t it. MTU (最大传.输单元)尺寸为 3924 字节,并且不应该参与队列。这是因为 lo.opback 接口完全是内核想象出来的、并不存在的接口。     外汇
现在我们跳过这个无关的.接口,它应该并不实.际存在于你的机器上。然后就是两个物.理网络接口,一个接在我的 cable modem 上,另一个接到我家里的以太网端上。再下面,我们看见了一个 ppp0 接口。 <性病>
应该指出,我们没有看到 IP 地址。iprout.e 切断了“链路”和“IP 地址”两个概念的直接联.系。当使用. IP 别名的时候,IP地址的概念显得更加不相关了。              杀毒
尽管如此,还是显示出了标识以太网卡硬.件的 MAC .地址。 .
3.4.2.. 让ip显示我们的 IP 地址 .
[ahu@h.ome ahu]$ ip add.ress show    (广告)
1: lo:. m.tu 3924 qdisc noqueue  .
    link./loopback 00:00:00:00:00:00 brd 00:00:00:00:0.0:00 电脑
    i.net 127.0.0.1/8 brd 127..255.255.255 scope host lo           婚庆
2: dummy: mtu 1500 .qdisc noo.p  <性病>
    link/.ether 00:00:00:00:.00:00 brd ff:ff:ff:ff:ff:ff            建材
3: eth.0: mtu 1400 .qdisc pfifo_fast qlen 100 <性病>
    lin.k/ether 48:54:e.8:2a:47:16 brd ff:ff:ff:ff:ff:ff              汽车
    inet 10.0.0.1/8 b.rd 10.255.25.5.255 scope global eth0 投资
4.: eth1:. mtu 1500 qdisc pfifo_fast qlen 100 虚拟主机
   .. link/ether 00:e0:4c:39:24:78 brd ff:ff:ff:ff:ff:ff 外贸
3764: ppp0: mtu 149.2 qdisc pf.ifo_fast qlen 10            鲜花
    link/ppp  
    ine.t 212.64.94.251 peer 212.64.94.1/32 scope global. ppp0 虚拟主机
这里包含了更多信息。显示了我们所有的地址,以及这些地址属于哪些网卡。“inet”表示Internet (IPv4)。.还有很多其它的.地址类型,但现在还.没有涉及到。 .
让我们先就近看看eth0。上面说它与IP地址10.0.0.1/8相关联。这是什么意思呢?“/8”表示IP.地址表示网络地址的位数。因.为一共是32个bi.t,所以我们的这个网络有了24 bit的主机空间。 10.0.0.1 的开始8bit是10.0.0.0,也就是我们的网络地址,我们的子网掩码.是255.0.0.0。     健康
其它的bit直接.连接在这个网卡上,所以10.250..3.13可以直接通过eth0联络到,就象10.0.0.1一样。 [成人用品]
对于ppp0,仍是相同的概念,虽然数字看上去有所不同。它的地址是212.6.4.94.251,不带子网掩码。这.意味着这是一个点到点的连接,而且除了212.64.94.251之外的地址是对端的。当然,还有很多信息。它还告诉我们这个链路的另一端只有一个地址:212.64.94.1。./32意思是说没有表示网络的bi.t。 (        游戏          )
掌握这些概念是绝对重要的。如.果有问题,不妨先参考以下这个HOWTO文件开头曾经提到的那些.文档。 投资
你应该注意到了“qdisc”,它是基.于对列规范的一个概念。它在后面会变得很.重要。 .
3.4.3. 让.ip显示路由 .
好的,现在我们已经知道如何找到10.x.y.z了,然后我们就可以到达212.6.4.94.1。但.这还不够,我们还得说明如何找到全世界。可以通过我们的ppp连接找到Intern.et,212.64.94.1愿意把我们的数据包发给全世界,并把回应的数据包传.回给我们。 .
[ahu@home ahu]$ ip ro.ute. show     健康
2.12.64.94.1 dev ppp0  proto k.ernel  scope link  src 212.64.94.251              杀毒
10.0.0.0/8 dev eth0  proto kernel  scope lin.k . src 10.0.0.1               汽车
127.0.0..0/8 dev lo  scope lin.k             女人
default via 212.64.94.1 dev p.pp0.  投资
字面的意思相当清楚。前4行的输出明确地说明了.ip address show的意思,最后一行说明了世界的其它部分可以通过我们的缺省网关.212.64.94.1找到。我们通过“via”这个词断定这是一个网关,我们.要把数据包交给它。这就是我们要留心的问题 [成人用品]
下面列出以前route 命令的.输出作为参考: 学习
[a.hu@home ahu]$ route -n 服务器
Kern.el IP routing table .
Destination     Gateway      .   Genmask         Fl.ags Metric Ref    Use <性病>
Iface
212.64.94.1 .    0.0.0.0         255.255.255.255 UH    0.      0    .    0 ppp0 .
10.0..0.0        .0.0.0.0         255.0.0.0       U     0      0        0 e.th0 教育
127.0.0.0       0.0...0.0         255.0.0.0       U     0      0        0 lo --- 印刷
0.0.0.0         212.64.94.1     0.0.0.0   .      UG    0      0 .     .  0 ppp0 [成人用品]
3.5. ARP
ARP 是由 RFC 826 所描述的“地址解析协议”。ARP是.网络上的计算机在居域网中用来解析另一台机器的硬件地址/位.置的时候使用的。互联网上的机器一般都是通过机器名解析成IP地址来互相找到的。这就能够解决foo.com网络能.够与bar.net网络通讯。.但是,仅仅依靠IP地址,却无法得到一台计算机在一个网络中的物理位置。这时候就需要ARP。 教育
让我们举一个非常简单的例子。假定我有一个网络,里面有几台机器。其中的两台在我的子网上,一台叫foo,IP地址是10.0.0.1,另.一台叫bar,IP地址是10.0.0.2。现在,foo.想ping一下bar看看是不是正常,但是呢,foo只知道bar的.IP地址,却并不知道bar的硬件(MAC)地址。所以.foo在ping bar之前就会先发出ARP询问。这个ARP询问就像在喊:“Bar(10.0.0.2)!你在哪里(你的M.AC地址是多少)?!” 结果这个广播域中的每台机器都能听到foo的喊话,.但是只有bar(10.0.0.2)会回应。Bar会直接给foo发送一个ARP回应,告诉它“Foo. (10.0.0.1),我的Mac地址是00:60:94:E9:08:1.2”。经过这种简单的交谈,机器就能够在局域网中定位它要通话的对象。Foo会一直使用这个结果,直到它的ARP缓冲忘掉这个结果(在Unix系统上通常是15分钟之后.)。 .
现在我们来看一.看具体的工作过程。你可以这样察看你的ARP表(缓冲):. --- 印刷
[root@espa041 /home/src/.iputils]# ip neigh show ..
9.3.76.42 dev eth0 lladdr 00:6.0:08:3f:.e9:f9 nud reachable            鲜花
9.3.76..1 dev eth0 lladdr 00:06:2.9:21:73:c8 nud reachable 投资
你可以看到,我的机器 espa041 (9.3.76.41) 知道如何找到 e.spa042. (9.3.76.42) 和 espagate (9.3.76.1)。现在让.我们往缓冲中添加另一台机器。            鲜花
[root@esp.a041 /home/paulsch/.gnom.e-desktop]# ping -c 1 espa043 投资
PING espa043.austin..ibm.com (.9.3.76.43) from 9.3.76.41 : 56(84) bytes. of data. .
64. bytes from 9.3.76.43: icmp_seq=0 ttl=255 time=0..9 ms .

--- espa043.austin.ibm.com ping stati.st.ics --- (        游戏          )
1 packe.ts transmitted, 1 packets .received, 0% packet loss 域名
round-trip min/.avg/max = 0.9/0..9/0.9 ms             杀毒

[.root@espa041 /home/src/iputils]# ip neigh. show              电子
9.3.76.43 de.v eth0 lladdr 00:06:2.9:21:80:20 nud reachable               乙肝
9..3.76.42 dev eth0 lladdr 00:60:0.8:3f:e9:f9 nud reachable 教育
9.3.76.1 dev eth0 lladdr 00:06:.29:21:73:c8 nud reachabl.e .
由于espa041试图联络espa043,espa043的硬件地址已经添加到.ARP缓冲里了。所以直.到espa043的记录失效以前(也就是两个机器间长时间没有通讯),esp.a041 知道如何找到espa043,也就不必频繁地进行ARP询问了。 --------------彩票
现在让我们来删除 espa.043 的ARP缓冲:              电子
[root@espa041 ./home/src/iputils]# i.p neigh delete 9.3.76.43 dev eth0 .
[root@.espa041 /home/src/iputils]# i.p neigh show            女人
9.3.76..43 dev eth0  nud faile.d              汽车
9.3.76..42 dev eth0 lladdr 00:60:08:3f:e9:f9 nu.d reachable .
9.3.76.1 dev eth0 ll.addr 00:.06:29:21:73:c8 nud stale            建材
现在espa041 已经.忘记了espa043 的MAC地.址,如果下次它要与espa043 通讯,需要再次发送 ARP询问。你在espagate (9.3.76.1). 上也会发现以上输出已经变成了"stale"状态。这意味着MAC地址仍然是在册,但是接下来第一次通讯的时候需.要确认一下。  .

第4章 规则——路由策略数据库. .
如果你有一个.大规模的路由器,你可能不得不同时满足不同用户对于路由的不同需求。路由策略数据库可以帮助你通过多路由表技术来实现。 .     健康
如果你想使用这个特性,请确认你的内核配置.中带有 "I.P: advanced router" 和 "IP: policy routing" 两项。            女人
当内核需要做出路.由选择时,它会找出应该参考哪一张路.由表。除了 "ip" 命令之外,以前的 "route" 命令也能修改 main 和 lo.cal 表。 学习
缺省规则:
[ahu.@home. ahu]$ ip rule list               乙肝
0: from a.ll lookup loc.al  .
32766: fr.om a.ll lookup main      美容
3.2767: from all lookup default.              电子
上面列出了规则的优先顺序。我们看到,所有的规则都应用到了所有的包上 (“from all”)。我.们前面已经看到了 ."main" 表,.就是“ip route ls”命令的输出,但是“local”和“default”是初次见到。              汽车
如果我们想做点有趣的事情,就可以生.成一些指向不同路由表的规则,取代系统中的路.由规则。 .
对于内核如何处理一个IP包匹配多个规则的精确意义,.请参见Alexey关于 ip.-cref文档。  .
4.1. 简单的源策略路由
让我们再来.一个真实的例子。我有两个Cable Mod.em,连接到了一个 Linux的NAT (“伪装”) 路由器上。这里的室友们向我付费使用 Internet。假如我其中的一个室友因为只想访问 hotmail 而.希望少.付一些钱。对我来说这没有问题, 他们肯定只能使用那个比较次的 Cable Modem。 .
那.个比较快的cable modem 的IP地址是 212...64.94.251, PPP 链路,对端IP是212.64.94.1。而那个比较慢的cable modem 的IP 地址是212.64.78.148,对端是195.96.98.253。 .
local 表:
[ah.u@home ahu]$ ip .route list table local --- 印刷
broadcast 127.255.255.255 dev lo  proto ker.nel  scope link  .src 127.0.0.1             鲜花
local. 1.0.0.0.1 dev eth0  proto kernel  scope host  src 10.0.0.1  (        游戏          )
broa.dcast 10.0.0.0 dev eth0  proto kernel  scope link  src 10..0.0.1  <性病>
local 212.64.94.2..51 dev ppp0  proto kernel  scope host  src 212.64.94.251                乙肝
broadcast 10.255.255.255 dev eth0  proto ke.rnel  scope link  src 10..0.0.1  .
broadcast 127.0.0.0 dev lo  proto kernel  scope link  sr.c 127.0..0.1  电脑
local 2.12.64.78.148 dev ppp2  proto kernel  scope host  src 212.64..78.148  .
local 127.0.0.1 dev lo  proto k.ernel  scope host  src 127.0..0.1  虚拟主机
local 127.0.0.0/8 dev lo  .proto kernel  scope host  src 127.0..0.1  --------------彩票
有很多明显的事实,其实可能还需要进一步说明.。好了,这样就行了。“defa.ult” 表为空。 .
让.我们看看“main”路由表: --------------彩票
[ahu@home.. ahu]$ ip route list table main  电脑
195.96.98.253 dev ppp2  proto kernel  scope .link  .src 212.64.78.148  健康
212.64.94.1 ..dev ppp0  proto kernel  scope link  src 212.64.94.251  投资
10.0.0.0/8 dev eth0  proto kernel  scope link  src 10.0..0.1  ..
127..0.0.0/8 dev lo . scope link  (广告)
d.efault via 212.64.94.1 dev .ppp0  .
我们现在为我们的朋友创建了一个叫做“John”的规则。其实我.们完全可以使用纯数字表示规则,但是不方便。我们可以向 /etc/iproute2/rt_tables 文.件.中添加数字与名字的关联: (        游戏          )
# echo 200 .John >> /.etc/iproute2/rt_tables 投资
# ip rule add from. 10.0.0.10 tab.le John .
# ip rule ls
0: from. all lookup local.  (        游戏          )
32765: from 10.0.0.10 .lookup. John            建材
32766: from all lookup. main . 教育
32767: from al.l lookup def.ault (        游戏          )
现在,剩下的事情就是为 J.ohn .的路由表创建路由项了。别忘了刷新路由缓存:            女人
# ip route add default via 195.96.98.253 dev pp.p2. table John .
# ip. route flush cache               乙肝
这样就做.好了。至于如何.在 ip-up 阶段实现就留给读者自己去研究吧。             杀毒
4.2. 多重上连ISP.的路由 健康
下图是很.常见的配置,同一个局域网(甚至是同一台计算机)通过两个ISP连接到.互联网上。 (        游戏          )
                               .                            .      ________ .
                                          +---------.---+      .  /              汽车
                                 .         .|            |       | [成人用品]
.                        .   +-------------+    ISP 1   +------- 电脑
       . __  .                |             |            |     / 教育
   . ___/  \_         +------+-------+     +.------------+    | [成人用品]
  _/   .     \__      |     if1      |    .                  /             杀毒
/  .           \     |              |     .                 | .
|     局域网  .  -----+ Linux 路由器 |                   .   |     国际互联网 域名
\_           __/  .  |              |                 .     | 域名
   \__     __/       |  .   if2      |              .        \               乙肝
      \___/          +------+-------+  .   +------------+    |. 电影
                            |  .           |            |   .  \ .
                            +-------------+    ISP 2   +---.---- .           鲜花
                                  .        |            |       |. 虚拟主机
               .           .                +------------+        \________           婚庆
这种情.况下通常会出现两个问题。 域名
4.2.1. 流量分割
首先是如何保证:回应来.自某一个IS.P的数据包时,仍然使用相同的ISP。 <性病>
让我们.先定义一些符号。 令第一块网卡(上图的if1)的名字叫 $.IF1,而第二块网卡叫做 $IF2 。然后设置 $IF1 的IP地址为 $IP1,$IF2 的IP地址为 $IP2。并且,令ISP1 的网关地址为 $.P1,I.SP2 的网关地址为 $P2。最后,令$P1的网络地址为 $P1_NET ,令$P2的网络地址为 $P2_NET。  .
额外创建两.个路由表, T1 和 T2。 加入到. /etc/iproute2/rt_tables 中。然后如下设置两个路由表中的路由: 教育
ip route add $P1_NET dev .$IF1 src $IP1 table .T1            鲜花
ip. route add defa.ult via $P1 table T1 --------------彩票
ip route add $P2_NET dev $IF2 src $I.P2 tabl.e T2             杀毒
i.p route add default via $P2. table T2 .
  
没什么大不了的,不过是.建立了通向该网关的一条路由,.并使之成为默认网关,分别负责一个单独的上行流,并且为这两个ISP都作这样的配置。要指出的是.,那条网络路由是必要条件,因为它能够让我们找到那个子网内的主机,也包括上述那台网关。  虚拟主机
下一步,我们设置“main”路由表。把包通过网卡直接路由到与网卡相连.的局域网上不失为一个好办法。要注.意“src” 参数,.他们能够保证选择正确的出口IP地址。 .
ip route add $P1_.NET dev $IF1 src $.IP1 域名
ip route add $P.2_NET .dev $IF2 src $IP2 电脑
    
然后,设置你的缺省路由:  
ip ro.ute add default via $P1 ..
    
接着,.设置路由规则。这实际上在选择用什么路由表进.行路由。你需要确认当你从一个给.定接口路由出数据包时,是否已经有了相应的源地址:你需要保证的就是如果你已经有了相应的源地址,就应该把数据包从相应的网卡路由出去: 域名
i.p rul.e add from $IP1 table T1 --- 印刷
ip rule add .from $.IP2 table T2     美容
    
以上命令保证了所有的回应数据都会从他们.来的那块网卡.原路返回。 .
现在,完成了非常基本的配置。这将对于所有运行在路由器上所有的进程起作用.,实现IP伪.装以后,对本地局域网也将起作用。如果不进行伪装,那么你要么拥有两个ISP的地.址空间,要么你想对两个ISP中的一个进行伪装。无论哪种情况,你都要添加规则,基.于发包的主机在局域网内的IP地址,选择从哪个ISP路由出去。  .
4.2.2. 负载均衡
第二个问题是如何对于.通过两个ISP流出的数据进行负载均衡。如.果你已经成功地实现了流量分割,这件事并不难。  .
与选择两个ISP中的.一个作为缺省路由不同,这次是设置缺省路由为多路路由。在缺省内核中,这会均衡两个I.SP的路由。象下面这样做(基于前面的流量分割实验):.             女人
ip route add. default scope global nexthop via $P1 dev $IF1 weig.ht 1 \               乙肝
nexthop via $P2 dev $IF2 ..weight 1 .
    
这样就可以均衡两个ISP的路由。通.过调整“weight”参数我们可以指定其中一个ISP的优先权高于另一个。.  投资
应.该指.出,.由于均衡是基于路由进行的,而路由是经过缓冲的,所以这样的均衡并不是100%精确。也就是说,对于一个经常访问的站点,总是会使用同一个ISP。  教育
进而,如果你对此不.满意,你可能需要参考以下Julian Anastasov的内核补丁.: .
http://www.linuxvirtualserver.org/~julian/#routes .
Julian的路由补.丁会弥补上述缺陷。.
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个