当前位置: 技术问答>linux和unix
跨网段数据转发问题
来源: 互联网 发布时间:2016-03-27
本文导语: 现在有三个节点c2,c7,c8。 c2是两张网卡分别是192.168.70.12和10.0.1.2;c7:10.0.1.7;c8:192.168.70.18。现在c8和c7之间无法通信,通过c2中转,C8—>c2->c7 和C7—>c2—>c8. C8任意大于1024端口的数据发送至c2后,直接被转发至c7,而c7...
现在有三个节点c2,c7,c8。
c2是两张网卡分别是192.168.70.12和10.0.1.2;c7:10.0.1.7;c8:192.168.70.18。现在c8和c7之间无法通信,通过c2中转,C8—>c2->c7 和C7—>c2—>c8.
C8任意大于1024端口的数据发送至c2后,直接被转发至c7,而c7节点反馈的信息(1700和9999两个端口)通过c2直接转发至c8。
我在c2上使用:
iptables -t nat -A PREROUTING -d 192.168.70.12 -p tcp --dport 9999 -j DNAT --to-destination 10.0.1.7:9999
iptables -t nat -A POSTROUTING -d 10.0.1.7 -p tcp --dport 9999 -j SNAT --to-source 10.0.1.2
iptables -t nat -A PREROUTING -d 192.168.70.12 -p tcp --dport 2300 -j DNAT --to-destination 10.0.1.7:1700
iptables -t nat -A POSTROUTING -d 10.0.1.7 -p tcp --dport 1700 -j SNAT --to-source 10.0.1.2
修改/proc/sys/net/ipv4/ip_forward内容为1.
没能实现通信,大家帮我看看什么问题?还有怎么监视两个端口是否进行了通信?
c2是两张网卡分别是192.168.70.12和10.0.1.2;c7:10.0.1.7;c8:192.168.70.18。现在c8和c7之间无法通信,通过c2中转,C8—>c2->c7 和C7—>c2—>c8.
C8任意大于1024端口的数据发送至c2后,直接被转发至c7,而c7节点反馈的信息(1700和9999两个端口)通过c2直接转发至c8。
我在c2上使用:
iptables -t nat -A PREROUTING -d 192.168.70.12 -p tcp --dport 9999 -j DNAT --to-destination 10.0.1.7:9999
iptables -t nat -A POSTROUTING -d 10.0.1.7 -p tcp --dport 9999 -j SNAT --to-source 10.0.1.2
iptables -t nat -A PREROUTING -d 192.168.70.12 -p tcp --dport 2300 -j DNAT --to-destination 10.0.1.7:1700
iptables -t nat -A POSTROUTING -d 10.0.1.7 -p tcp --dport 1700 -j SNAT --to-source 10.0.1.2
修改/proc/sys/net/ipv4/ip_forward内容为1.
没能实现通信,大家帮我看看什么问题?还有怎么监视两个端口是否进行了通信?
|
在c8上不是直接telnet 10.10.1.2,而应该
telnet 192.168.70.12 1700
banner,举例来说吧。当你在telnet 某个ip的80端口,和在telnet 25端口的时候,得到的反馈信息是不同的。这些信息就是banner。
对如果有lisen 1700就开启了服务。
telnet 192.168.70.12 1700
banner,举例来说吧。当你在telnet 某个ip的80端口,和在telnet 25端口的时候,得到的反馈信息是不同的。这些信息就是banner。
对如果有lisen 1700就开启了服务。
|
上面的命令在c2上做。
c7只需要把默认网关配置为10.0.1.2
c7只需要把默认网关配置为10.0.1.2
|
问题找到了
应该在于
c7怎么有两块网卡???
其实有两块网卡也没关系。为什么eth0 的ip地址配置为192.168.70网段???
解决办法:把c7的eth0 ip设定为除192.168.70网段之外的任何ip
或者直接禁用c7的eth0
应该在于
c7怎么有两块网卡???
其实有两块网卡也没关系。为什么eth0 的ip地址配置为192.168.70网段???
解决办法:把c7的eth0 ip设定为除192.168.70网段之外的任何ip
或者直接禁用c7的eth0
|
在c8上 telnet c2的外网卡地址,也就是192.168.70.12 和相应的端口,即1700和9999(当然前提是你的c7已经开启了相应服务,开始侦听这两个端口)。看banner应该可知是否c7的服务。
在telnet上的同时也可以在c7或c8上用netstat -an 看看连接情况
只要c2的外网卡和c8网卡在同一网段。网关指向哪里都无所谓的。
在telnet上的同时也可以在c7或c8上用netstat -an 看看连接情况
只要c2的外网卡和c8网卡在同一网段。网关指向哪里都无所谓的。
|
为什么要用nat?
直接用路由就可以的。
直接用路由就可以的。
|
没太看明白你的需求。
我估计的需求是否这样:c2作为一台网关服务器。有外网地址和内网地址。
同时,希望将对c2外网地址的端口1700和9999的访问,转发到内网的c7
如果是这样,那么只用DNAT即可(当然c7的默认网关必须是c2)。
iptables -t nat -A PREROUTING -d 192.168.70.12 -p tcp -m multiport --dports 1700,9999 -j DNAT --to 10.0.1.7
我估计的需求是否这样:c2作为一台网关服务器。有外网地址和内网地址。
同时,希望将对c2外网地址的端口1700和9999的访问,转发到内网的c7
如果是这样,那么只用DNAT即可(当然c7的默认网关必须是c2)。
iptables -t nat -A PREROUTING -d 192.168.70.12 -p tcp -m multiport --dports 1700,9999 -j DNAT --to 10.0.1.7
|
不用
在c2上运行命令:iptables-save 并把结果贴出来
此外,刚才有点疏漏,还需要把c8的网关指向c2
然后再c7和c8上分别运行命令:netstat -rn 并把结果贴出来。
在c2上运行命令:iptables-save 并把结果贴出来
此外,刚才有点疏漏,还需要把c8的网关指向c2
然后再c7和c8上分别运行命令:netstat -rn 并把结果贴出来。