忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
12下一页
最近访问板块 发新帖
查看: 4072 | 回复: 11

[网络管理] iptables 多网卡配置 [复制链接]

论坛徽章:
2
技术图书徽章
日期:2013-10-31 10:04:19技术图书徽章
日期:2013-11-06 09:37:21
发表于 2016-07-12 15:37 |显示全部楼层
本帖最后由 love5783 于 2016-07-12 16:03 编辑

召唤大神~,场景如下:
      我有一台物理主机(4块网卡),可以介入到办公网。物理机上起了一些虚拟机,配置私网IP地址,走的桥接网卡br0,br0走eth0。
      物理机的eth1上有办公网IP地址10.10.10.2, 虚拟机的IP地址是20.20.20.2。我想做个NAT,让办公网用户访问10.10.10.2这个IP可以访问到20.20.20.2这个虚拟机。
      我添加的iptables规则如下(ip_forward已打开,iptables中其他表没有规则):
  1. [root@vps-1 ~]# iptables -t nat -nvL
  2. Chain PREROUTING (policy ACCEPT 27709 packets, 2459K bytes)
  3. pkts bytes target     prot opt in     out     source               destination         
  4.     0     0 DNAT       all  --  *      *       0.0.0.0/0            10.10.10.2        to:20.20.20.2

  5. Chain POSTROUTING (policy ACCEPT 54096 packets, 3964K bytes)
  6. pkts bytes target     prot opt in     out     source               destination         
  7.     0     0 SNAT       all  --  *      *       20.20.20.2         0.0.0.0/0           to:10.10.10.2

  8. Chain OUTPUT (policy ACCEPT 30363 packets, 1825K bytes)
  9. pkts bytes target     prot opt in     out     source               destination         
  10.     0     0 DNAT       all  --  *      *       0.0.0.0/0            10.10.10.2        to:20.20.20.2
复制代码
现在的问题是,从办公网来访问10.10.10.2的流量根本就不走nat的PREROUTING链,可以看到数据包为0。
     而如果我把10.10.10.2地址设置到br0上,再用这个iptables,nat就会生效。
     我怀疑是多网卡导致的,但是并不明白原理,希望大神们帮忙分析解答,谢谢。


补充:
物理机的路由表如下:
  1. [root@vps-1 ~]# route -n
  2. Kernel IP routing table
  3. Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
  4. 10.10.10.0      0.0.0.0         255.255.255.0   U     0      0        0 eth1
  5. 20.20.20.0      0.0.0.0         255.255.255.0   U     0      0        0 br0
  6. 192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
  7. 169.254.0.0     0.0.0.0         255.255.0.0     U     1006   0        0 br0
  8. 0.0.0.0         10.10.10.254    0.0.0.0         UG    0      0        0 eth1
复制代码
虚拟机的网关是20.20.20.254,这个ip是设置在物理主机br0上的。

论坛徽章:
41
操作系统版块每日发帖之星
日期:2016-08-21 06:20:00每日论坛发贴之星
日期:2016-05-05 06:20:00操作系统版块每日发帖之星
日期:2016-05-05 06:20:00IT运维版块每日发帖之星
日期:2016-05-05 06:20:0015-16赛季CBA联赛之山西
日期:2016-04-27 08:49:00操作系统版块每日发帖之星
日期:2016-04-25 06:20:00操作系统版块每日发帖之星
日期:2016-04-17 06:23:2815-16赛季CBA联赛之吉林
日期:2016-03-25 15:46:3415-16赛季CBA联赛之四川
日期:2016-03-25 14:26:19操作系统版块每日发帖之星
日期:2016-05-27 06:20:00操作系统版块每日发帖之星
日期:2016-05-28 06:20:00IT运维版块每日发帖之星
日期:2016-08-18 06:20:00
发表于 2016-07-12 15:50 |显示全部楼层
客户端的路由要指定

比如你这个例子中,希望10.10.10.0/24子网的客户端通过10.10.10.2访问20.20.20.0/24子网,那么客户端就要添加一条明细路由,这里假设你的客户端是windows机器:

route add 20.20.20.0 mask 255.255.255.0 10.10.10.2

否则客户端走默认路由,肯定不是你想要的结果

论坛徽章:
2
技术图书徽章
日期:2013-10-31 10:04:19技术图书徽章
日期:2013-11-06 09:37:21
发表于 2016-07-12 16:00 |显示全部楼层
回复 2# jixuuse


    感谢回复!.
    不过客户端是10.10.10.0/24网段的,它能访问到10.10.10.2就可以了是不?它不会直接访问20.20.20.2。
    不然没法解释为什么我把网卡设置在br0上就好用了。

论坛徽章:
41
操作系统版块每日发帖之星
日期:2016-08-21 06:20:00每日论坛发贴之星
日期:2016-05-05 06:20:00操作系统版块每日发帖之星
日期:2016-05-05 06:20:00IT运维版块每日发帖之星
日期:2016-05-05 06:20:0015-16赛季CBA联赛之山西
日期:2016-04-27 08:49:00操作系统版块每日发帖之星
日期:2016-04-25 06:20:00操作系统版块每日发帖之星
日期:2016-04-17 06:23:2815-16赛季CBA联赛之吉林
日期:2016-03-25 15:46:3415-16赛季CBA联赛之四川
日期:2016-03-25 14:26:19操作系统版块每日发帖之星
日期:2016-05-27 06:20:00操作系统版块每日发帖之星
日期:2016-05-28 06:20:00IT运维版块每日发帖之星
日期:2016-08-18 06:20:00
发表于 2016-07-12 16:52 |显示全部楼层
路由只是一个指向

只存在默认路由的情况下,所有访问非本子网的行为,数据包都是发向默认路由网关

写了明细路由,访问该路由子网的行为,数据包都是发向该路由条目指定的网关

然后出现了两种情况:

1、你这种,通过NAT访问其他子网,本质上是NAT设备替换了TCP数据包头,被访问设备回复的数据包先到NAT设备,再转给实际发起请求的设备,只要NAT设备与被访问设备之间路由可达即可。

2、纯路由访问其他子网,被访问设备如果没有回程路由,则发起访问的设备不会收到反馈请求的数据包,就形成了单向数据通畅,但是访问出错的情况。

论坛徽章:
31
荣誉会员
日期:2011-11-23 16:44:17丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17天蝎座
日期:2014-08-21 17:18:48丑牛
日期:2014-08-29 16:06:45天秤座
日期:2014-08-29 10:12:18天秤座
日期:2014-08-26 16:18:20双子座
日期:2014-07-30 11:38:27寅虎
日期:2014-08-04 10:24:12IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:00
发表于 2016-07-12 18:30 |显示全部楼层
PREROUTING是发生在路由之前。

但你的办公到你的虚拟机, 需要先路由。

试着放在 POSTROUTING看看。 必要时换成 MASQUADE

论坛徽章:
2
技术图书徽章
日期:2013-10-31 10:04:19技术图书徽章
日期:2013-11-06 09:37:21
发表于 2016-07-12 18:41 |显示全部楼层
回复 4# jixuuse


    谢谢继续回复。
    你说的,我看懂了,可是还是那个问题,如何解释将IP设置在br0上就可以了呢?

论坛徽章:
2
技术图书徽章
日期:2013-10-31 10:04:19技术图书徽章
日期:2013-11-06 09:37:21
发表于 2016-07-12 19:06 |显示全部楼层
回复 5# q1208c


    感谢回复。
    POSTROUTING没法加DNAT的呀
    在POSTROUTING中加入MASQUADE是虚拟机访问外部的时候加的吧?我现在是想从外部访问虚拟机。

论坛徽章:
41
操作系统版块每日发帖之星
日期:2016-08-21 06:20:00每日论坛发贴之星
日期:2016-05-05 06:20:00操作系统版块每日发帖之星
日期:2016-05-05 06:20:00IT运维版块每日发帖之星
日期:2016-05-05 06:20:0015-16赛季CBA联赛之山西
日期:2016-04-27 08:49:00操作系统版块每日发帖之星
日期:2016-04-25 06:20:00操作系统版块每日发帖之星
日期:2016-04-17 06:23:2815-16赛季CBA联赛之吉林
日期:2016-03-25 15:46:3415-16赛季CBA联赛之四川
日期:2016-03-25 14:26:19操作系统版块每日发帖之星
日期:2016-05-27 06:20:00操作系统版块每日发帖之星
日期:2016-05-28 06:20:00IT运维版块每日发帖之星
日期:2016-08-18 06:20:00
发表于 2016-07-13 08:26 |显示全部楼层
love5783 发表于 2016-07-12 18:41
回复 4# jixuuse


你自己判断

论坛徽章:
2
技术图书徽章
日期:2013-10-31 10:04:19技术图书徽章
日期:2013-11-06 09:37:21
发表于 2016-07-13 10:01 |显示全部楼层
回复 8# jixuuse


    根据你的回复,我是第一种情况。就是说只要客户端和NAT设备有路由,NAT设备和虚拟机之间有路由,就能访问。
    客户端和NAT设备有路由是没问题的,在一个网段。
    至于NAT设备和虚拟机之间的路由,下面是NAT设备的路由表:
  1.     [root@vps-1 ~]# route -n
  2.     Kernel IP routing table
  3.     Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
  4.     10.10.10.0      0.0.0.0         255.255.255.0   U     0      0        0 eth1
  5.     20.20.20.0      0.0.0.0         255.255.255.0   U     0      0        0 br0
  6.     192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
  7.     169.254.0.0     0.0.0.0         255.255.0.0     U     1006   0        0 br0
  8.     0.0.0.0         10.10.10.254    0.0.0.0         UG    0      0        0 eth1
复制代码
这个算是有路由吗?这块真的不懂,请帮忙分析下,万分感谢!

论坛徽章:
41
操作系统版块每日发帖之星
日期:2016-08-21 06:20:00每日论坛发贴之星
日期:2016-05-05 06:20:00操作系统版块每日发帖之星
日期:2016-05-05 06:20:00IT运维版块每日发帖之星
日期:2016-05-05 06:20:0015-16赛季CBA联赛之山西
日期:2016-04-27 08:49:00操作系统版块每日发帖之星
日期:2016-04-25 06:20:00操作系统版块每日发帖之星
日期:2016-04-17 06:23:2815-16赛季CBA联赛之吉林
日期:2016-03-25 15:46:3415-16赛季CBA联赛之四川
日期:2016-03-25 14:26:19操作系统版块每日发帖之星
日期:2016-05-27 06:20:00操作系统版块每日发帖之星
日期:2016-05-28 06:20:00IT运维版块每日发帖之星
日期:2016-08-18 06:20:00
发表于 2016-07-13 11:39 |显示全部楼层
不懂就慢慢学吧,实在没有精力帮到太多人
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP