免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 瀚海书香
打印 上一主题 下一主题

[网络子系统] linux实现网桥和路由功能 [复制链接]

论坛徽章:
2
2015年亚洲杯之乌兹别克斯坦
日期:2015-04-15 15:43:482015亚冠之迪拜阿赫利
日期:2015-06-30 20:36:46
1 [报告]
发表于 2014-01-16 13:27 |显示全部楼层
回复 32# iceblood
终于搞定了,你再试试看。
eth0接路由器
eth2接内网
  1. xxx@Ubuntu-Router:~$ cat br_start.sh
  2. #~ /bin/sh

  3. brctl addbr br0
  4. brctl addif br0 eth0
  5. brctl addif br0 eth2
  6. ifconfig eth1 192.168.1.4
  7. ifconfig br0 up 192.168.146.132
  8. ifconfig eth0 0.0.0.0
  9. ifconfig eth2 0.0.0.0

  10. ./br.sh
  11. xxx@Ubuntu-Router:~$ cat br.sh
  12. #! /bin/sh


  13. MAC_ROUTE='00:50:56:ef:22:cb'
  14. MARK_ID=7
  15. TABLE_ID=7

  16. if [ ! -n "$1" ]; then
  17. echo "set rules"
  18. TB_CMD=A
  19. IP_CMD=add
  20. else
  21. echo "delete rules"
  22. TB_CMD=D
  23. IP_CMD=del
  24. fi

  25. ebtables -t nat -${TB_CMD} PREROUTING -p IPv4 -d ${MAC_ROUTE} -i eth2 --ip-proto tcp --ip-dport 23 -j redirect
  26. iptables -t mangle -${TB_CMD} PREROUTING -m physdev --physdev-in eth2 -s 192.168.146.0/24 -p tcp --dport 23 -j MARK --set-mark ${MARK_ID}
  27. ip ru ${IP_CMD} fwmark ${MARK_ID} table ${TABLE_ID}
  28. ip ro ${IP_CMD} default via 192.168.1.1 dev eth1 table ${TABLE_ID}
  29. iptables -t nat -${TB_CMD} POSTROUTING -o eth1 -s 192.168.146.0/24 -p tcp --dport 23 -j MASQUERADE
复制代码

评分

参与人数 1可用积分 +10 收起 理由
瀚海书香 + 10 赞一个!

查看全部评分

论坛徽章:
2
2015年亚洲杯之乌兹别克斯坦
日期:2015-04-15 15:43:482015亚冠之迪拜阿赫利
日期:2015-06-30 20:36:46
2 [报告]
发表于 2014-01-20 17:22 |显示全部楼层
看楼主的意思是要先用ebtables将数据重定向到br0,然后再做snat?

1、确认linux server上是否开启了路由转发功能,否则数据包就被直接丢掉了;
2、iptables & ebtables中的端口号确认是对的,为何一个是22,另一个是23?

论坛徽章:
2
2015年亚洲杯之乌兹别克斯坦
日期:2015-04-15 15:43:482015亚冠之迪拜阿赫利
日期:2015-06-30 20:36:46
3 [报告]
发表于 2014-01-22 11:17 |显示全部楼层
linux server上必须要做桥吗?可不可以不做桥,只做路由,这样应该就比较好配了。

论坛徽章:
2
2015年亚洲杯之乌兹别克斯坦
日期:2015-04-15 15:43:482015亚冠之迪拜阿赫利
日期:2015-06-30 20:36:46
4 [报告]
发表于 2014-01-23 18:34 |显示全部楼层
楼主试试这个,我自己已经调通了。
#ebtables -t broute -A BROUTING -i eth0 -p ipv4 --ip-proto tcp --ip-dport 22 -d ${MAC_ROUTE} -j redirect --redirect-target DROP
#iptables -t mangle -A PREROUTING -i eth0 -s 192.168.1.0/24 -p tcp --dport 22 -j MARK --set-mark ${MARK_ID}
#ip ru add fwmark ${MARK_ID} table ${TABLE_ID}
#ip ro add default via ${gw for 192.168.5.*} dev eth2 table ${TABLE_ID}
#iptables -t nat -A POSTROUTING -o eth2 -s 192.168.1.0/24 -p tcp --dport 22 -j MASQUERADE

论坛徽章:
2
2015年亚洲杯之乌兹别克斯坦
日期:2015-04-15 15:43:482015亚冠之迪拜阿赫利
日期:2015-06-30 20:36:46
5 [报告]
发表于 2014-01-26 11:14 |显示全部楼层
回复 28# iceblood
ip ro ls table 10
这个结果看看?

   

论坛徽章:
2
2015年亚洲杯之乌兹别克斯坦
日期:2015-04-15 15:43:482015亚冠之迪拜阿赫利
日期:2015-06-30 20:36:46
6 [报告]
发表于 2014-01-27 10:00 |显示全部楼层
回复 30# iceblood

上周还好好的,怎么这周就又不行了,我再试试。
   

论坛徽章:
2
2015年亚洲杯之乌兹别克斯坦
日期:2015-04-15 15:43:482015亚冠之迪拜阿赫利
日期:2015-06-30 20:36:46
7 [报告]
发表于 2014-02-07 11:02 |显示全部楼层
回复 34# iceblood
iceblood 发表于 2014-01-27 23:02
连脚本都写好了,真是到位。明天我试试,成功了请你吃饭。
另外实际环境还要恶劣……br0其实没有IP… ...

好吧,赶紧请我吃饭。

为啥br0没有IP,至于这么抠门儿么,一个内网IP都舍不得?

如果你只是不希望br0对外显示出ip特性,可以试试这个办法。
  1. ifconfig br0 ${ROUTER_IP}
  2. ip route change ${ROUTER_IP} dev br0  proto kernel scope link table local
复制代码
如果br0根本就不能配置IP,貌似只能编程实现了,修改内核路由部分代码吧。

论坛徽章:
2
2015年亚洲杯之乌兹别克斯坦
日期:2015-04-15 15:43:482015亚冠之迪拜阿赫利
日期:2015-06-30 20:36:46
8 [报告]
发表于 2014-02-08 09:36 |显示全部楼层
回复 39# iceblood

那你就按37楼那个办法吧,应该是可以的。
   

论坛徽章:
2
2015年亚洲杯之乌兹别克斯坦
日期:2015-04-15 15:43:482015亚冠之迪拜阿赫利
日期:2015-06-30 20:36:46
9 [报告]
发表于 2014-02-08 11:32 |显示全部楼层
回复 41# iceblood

意思是你希望所有流经linux服务器的数据都是带vlan tag的?

按我的理解,vlan tag属于第二层,路由&NAT是第三层,从eth2出去的数据都是经过路由&NAT处理的,因此已经没有了vlan tag,所以你可能需要额外的策略来重新打上vlan tag。   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP