debian下同一网段多网口配置,可以tcp通讯么?
本帖最后由 charry_nj 于 2014-10-21 09:37 编辑参照论坛一位大神的经验,我这样配置的:
主机(A)共有4块网卡,需要独立连接4台控制器(BCDE),每个控制器只有一个网口,且都在同一个网段,彼此之间不能连通。
我设定eth0 : 192.168.2.1
eth1:192.168.2.2
eth2:192.168.2.3
eth3:192.168.2.4
在rc.local中添加了以下一段:
route add -net 0.0.0.0/0 netmask 0.0.0.0 gw 192.168.2.254 dev eth0
route add -net 0.0.0.0/0 netmask 0.0.0.0 gw 192.168.2.254 dev eth1
route add -net 0.0.0.0/0 netmask 0.0.0.0 gw 192.168.2.254 dev eth2
route add -net 0.0.0.0/0 netmask 0.0.0.0 gw 192.168.2.254 dev eth3
ip route add to 0.0.0.0/0 via 192.168.2.254 dev eth0 table 10
ip rule add from 192.168.2.1/32 table 10
ip route add to 0.0.0.0/0 via 192.168.2.254 dev eth1 table 20
ip rule add from 192.168.2.2/32 table 20
ip route add to 0.0.0.0/0 via 192.168.2.254 dev eth2 table 30
ip rule add from 192.168.2.3/32 table 30
ip route add to 0.0.0.0/0 via 192.168.2.254 dev eth3 table 40
ip rule add from 192.168.2.4/32 table 40
保存重新启动后,发现可以从主机指定网口ping到与之连接的控制器的的ip,但是从控制器上是无法ping到主机对应连接网络的ip,这是为什么呢????(问题一)
比如:A的第2个口(eth1)可以ping到C控制器的IP,但从C控制器上反过来ping,就ping不通。
另外请问一下:这样配置后是否可以达到各控制器之间相互隔离的作用(问题二)
问题三:
在网络编程时,基于TCP的socket能否成功呢?主机作为TCP的客户端,能否从指定网口出去建立tcp连接??
请大神指教!!不胜感激!!! charry_nj 发表于 2014-10-18 15:54 static/image/common/back.gif
参照论坛一位大神的经验,我这样配置的:
主机共有4块网卡,需要独立连接4个子网络,巧的是4个子网络同一个 ...
主机共有4块网卡,需要独立连接4个子网络,巧的是4个子网络同一个网段,彼此之间不能连通。
首先,4个子网络同一个网段,那就不叫4个子网,而是一个子网。你所指的“不能连通”是否指物理链接?我下面的假定是了。Linux是默认是不能把4个网口加入同一网段的,因此这样就没有进行路由选择。这种情况,你应该把Linux桥设备而不是路由器来使用。你需要对4个网卡进行桥绑定。 非常谢谢Tinnal 的回答!
可能我的描述不太对。重新说一下:假如有5台主机,A、B、C、D、E,其中A主机有4个网口,通过这4个网口分别连接到B、C、D、E主机,但是B、C、D、E主机只有一个网口,而且他们的IP都是同一个网段,甚至某两个IP相同,但是现在通过A与BCDE直接连接,在A上面写程序实现分别与BCDE主机通讯,但是要保证BCDE之间相互独立没有任何连接。那么应该怎么配置呢?
“你需要对4个网卡进行桥绑定”——我还不懂桥绑定的含义,想请问一下,上面的这种需求,桥绑定能实现么? 主机A有点类似于防火墙的功能,各个网口可以配置成相互隔离,逻辑隔离 BCDE同一网段,连IP都一个那就违背的TCP/IP协议了。
你这个并不是一个内核问题,你可以道运维的板块就问问,看网管门有没有办法。 好的,非常谢谢
运维的板块 你应该划分子网而不是像你现在这样连续的ip还想走路由.
举个例子,你的设备0口网卡配置192.168.2.1/255.255.255.252,B设备用192.168.2.2/255.255.255.252
1口网卡配置192.168.2.5/255.255.255.252,C设备用192.168.2.6/255.255.255.252
.......
这样就逻辑隔离了. 感谢楼上
你采用的是掩码区分吧
问题上BCDE设备早已存在,且ip不可以改动,
我主要是想从A上着手解决问题。 已经搞定了!可能还有问题,但是解决了目前的问题.
更正一下rc.local内容
在rc.local中添加了以下一段:
route add -net 0.0.0.0/0 netmask 0.0.0.0 dev eth0
route add -net 0.0.0.0/0 netmask 0.0.0.0 dev eth1
route add -net 0.0.0.0/0 netmask 0.0.0.0 dev eth2
route add -net 0.0.0.0/0 netmask 0.0.0.0 dev eth3
ip route add to 0.0.0.0/0 dev eth0 table 10
ip rule add from 192.168.2.1/32 table 10
ip route add to 0.0.0.0/0 dev eth1 table 20
ip rule add from 192.168.2.2/32 table 20
ip route add to 0.0.0.0/0 dev eth2 table 30
ip rule add from 192.168.2.3/32 table 30
ip route add to 0.0.0.0/0 dev eth3 table 40
ip rule add from 192.168.2.4/32 table 40
这样可以通过ping 命令ping通各个口,在程序处理中,需要注意的是建立tcp客户端时,需要bind一个网卡的ip。
我的QQ:1176479828
页:
[1]