Linux 平台上面单网卡 + TUN/TAP实现局域网其它设备上网

66 篇文章 3 订阅
21 篇文章 2 订阅

目前,可用解决方案分为两种:

1、为由我们提供得 VGW 软件路由器网关

2、为由内核提供得 iptables SNAT 软件路由器网关

两者谁得网络带宽吞吐量更大?即第二类工作在内核的 iptables SNAT,但谁最简单易用?VGW 软件路由器网关。

VGW + pf_ring Linux 平台上面单个 --ncpu 可以提供保底 200Mbps 带宽吞吐量,5个 --ncpu 可以提供三四百兆带宽,基本可以跑满大多数企业/个人用户得本地网络带宽。

本文主要阐述,如何轻松使用于 Linux 平台上面使用单个物理网卡 + TUN/TAP来实现局域网其它设备上网得问题。

建议跟我们搭建得系统环境相同,即 Ubuntu16.04 x86_64 + 4C/4G。

假设我们得局域网段为:

IP: 192.168.0.0

MASK: 255.255.255.0

GW: 192.168.0.1

Linux 软路由器得IP地址配置:192.168.0.21

TUN/TAP IP地址配置:10.0.0.2

而我们希望该IP段上面,192.168.0.221 得局域网IP地址通过我们搭建得 Linux 软路由器来上网,那么只需执行以下命令即可:

1、sudo su

2、iptables -F

3、iptables -t nat -F

4、iptables -t nat -I POSTROUTING -s 192.168.0.221 -j SNAT --to-source 10.0.0.2

但这会产生一个新的问题,即10.0.0.2,TUN/TAP网卡设定得内核IP路由表决定了,192.168.0.221 通过 10.0.0.2 去访问网络得时候,那些可以走 TUN/TAP,那些不能走,而如果设置为 “10.0.0.2” TUN/TAP 为默认网关接口,又会带来一个全新的问题,如何绕过特殊得 “IP地址段”,不然它们经过 “TUN/TAP” 到其虚拟路由程序传送到某个特殊端点上?

哈哈,这是个好问题,但并非不可以解决,只要该虚拟路由程序能够确保一个核心关键点,即在该程序内操作不通得物理网卡路由来控制,IP数据得出入站即可。

但这需要确保物理网卡得IP路由尽量为默认网关,否则物理网卡IP绑定的IP路由表,没有配置得是没有办法访问的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值