传统情况下,如果是为了从内向外访问获得更好的速度,让访问电信走电信,访问网通走网通,那么配置是网关只能够配置一个。
比如以电信为主的,那么网关就只设置电信的1.1.1.254,而针对网通和教育网设置不同的路由,路由下一跳指向网通和教育网对应的 网关。
如果这样做的目的只是实现内部访问外面,那么是没问题了,但是如果是为了让外面的用户能够正常访问到服务器上的服务就会出问题。比如电信用户会无法访问网通和教育网的ip,网通用户会无法访问电信和教育网的ip。而且只有设置了默认路由的那个网络能被跨网络访问,其它两个网络只能被本子网的设备访问。
要解决这个问题,思路就是由哪个网口进来的流量希望全部就由哪个回去。用lartc里面提到的方法就是来源的口不同,走不同的路由表。在默认的路由表基础上再建立三个路由表。
用 ip route show 可以看到默认有local,main,default三个路由表,这三个路由表的名称命名来自 /etc/iproute2/rt_tables ,这里先在这个配置文件里面添加三个不同的路由表表名,
之后建立这三个路由表的内容,因为这三个路由表的只是用来响应来自不同接口的,而不是用来相应从哪个接口出去的,所以只需要每个路由表里面建立默认网关即可。
之后再加上三条规则,使来自不同的口的走不同的路由表
至此无论是电信还是网通还是教育网用户,访问三个ip的任意一个地址都能够连通了。即便是服务器上本身的默认路由都没有设置,也能够让外面的用户正常访问。三个网络的IP都能被跨网络访问了。
命令汇总:
最近在Linux下有两个WiFi模组(一个为2.4GHz,另一个为2.4GHz+5GHz双频),刚好路由器为2.4GHz的,而其他接收设备在2.4GHz下数据处理不稳定,想切换为5GHz尝试,故而将两个WiFi模组同时连接到PC上(通过USB接口),当驱动都加载成功时会映射出wlan0和wlan1,关于AP和STA的配置部分在此不说明,下面主要说明下如何让wlan0(2.4G,连接外网,作STA)和wlan1(双频,连接内网,作AP)进行IP转发 *** 作,其实也很简单,只需要执行如下命令即可:echo 1 >/proc/sys/net/ipv4/ip_forward
/system/bin/iptables -A FORWARD -i wlan1 -o wlan0 -m state --state ESTABLISHED,RELATED -j ACCEPT
/system/bin/iptables -A FORWARD -i wlan1 -o wlan0 -j ACCEPT
/system/bin/iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
其中第一条命令很重要,作用是打开IP转发功能,然后接下来三条命令是添加路由规则(后两条就够了)。
参照http://www.revsys.com/writings/quicktips/nat.html文章,上面的语句应改为:
echo 1 >/proc/sys/net/ipv4/ip_forward
/system/bin/iptables -A FORWARD -i wlan0 -o wlan1 -m state --state ESTABLISHED,RELATED -j ACCEPT
/system/bin/iptables -A FORWARD -i wlan1 -o wlan0 -j ACCEPT
/system/bin/iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)