Linux多网卡
Linux多网卡问题
问题描述
对于多块网卡的电脑,一个使用场景就是:将该电脑视作多个独立的收发系统,但共享一个cpu(多任务OS)。但这对于linux默认是不成立的:linux是一个弱终端系统模型(Weak End System Model),上述使用场景的OS是一个强终端系统模型(SESM)。
区别是: WESM, route(dst IP, TOS)-> gateway, interface SESM, route(src IP, dst IP, TOS)-> gateway
即强终端系统强制规定从哪个网口进的数据包就从哪个网口出,而弱终端系统则可以换个网口发数据(即ip_forward, NAT网关服务器必需,参见《gateway.sh》)。
所以现在的问题是如何将linux从弱终端系统切换到强终端系统。
流程
配置内核arp sysctl net.ipv4.conf.all.arp_filter=1 sysctl net.ipv4.conf.all.arp_ignore=1 sysctl net.ipv4.conf.all.arp_announce=2
配置内核路由 在/etc/iproute2/rt_tables中添加N个路由表,N是网卡个数,如: 100 rtable0 101 rtable1
ip route add $ETH0_NET dev eth0 proto static src $ETH0_IP table rtable0 ip route add default via $ETH0_GW dev eth0 proto static src $ETH0_IP table rtable0
ip route add $ETH1_NET dev eth1 proto static src $ETH1_IP table rtable1 ip route add default via $ETH1_GW dev eth1 proto static src $ETH1_IP table rtable1
ip rule add from $ETH0_IP table rtable0 ip rule add from $ETH1_IP table rtable1 可以将这些写入对应的文件,以实现开机启动,如/etc/network/ifup-pre or ifup-post(视Linux发行版的网络管理器而定)。 iptables -A INPUT -m addrtype –dst-type UNICAST -i eth0 ! -d $ETH0_IP -j DROP iptables -A INPUT -m addrtype –dst-type UNICAST -i eth1 ! -d $ETH1_IP -j DROP
- 原文作者:mlyixi
- 原文链接:https://mlyixi.github.io/post/linux/Linux%E5%A4%9A%E7%BD%91%E5%8D%A1/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。