跨网段数据转发问题

daisy_cheung 2008-06-17 11:14:44
现在有三个节点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.

没能实现通信,大家帮我看看什么问题?还有怎么监视两个端口是否进行了通信?
...全文
348 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
daisy_cheung 2008-06-24
  • 打赏
  • 举报
回复
谢谢fiellex.
feillex 2008-06-18
  • 打赏
  • 举报
回复
在c8上 telnet c2的外网卡地址,也就是192.168.70.12 和相应的端口,即1700和9999(当然前提是你的c7已经开启了相应服务,开始侦听这两个端口)。看banner应该可知是否c7的服务。
在telnet上的同时也可以在c7或c8上用netstat -an 看看连接情况

只要c2的外网卡和c8网卡在同一网段。网关指向哪里都无所谓的。
daisy_cheung 2008-06-18
  • 打赏
  • 举报
回复
我将c7的网卡已禁掉了。
怎么判断是否c7和c8通过c2完成了通信呢?
我这边c7是一个license server,c8是客户端.在客户端启动应用程序时要检测所获取的license。通过设置环境变量LICENSE_FILE=1700@192.168.70.12来访问license。现在还是找不到license server。
你说的c8的网关指向c2,我想着都将网关设置成192.168.70.1是不是就可以了。另外,c2和c8上的默认网关是192.168.70.1会有影响吗?
feillex 2008-06-18
  • 打赏
  • 举报
回复
在c8上不是直接telnet 10.10.1.2,而应该
telnet 192.168.70.12 1700

banner,举例来说吧。当你在telnet 某个ip的80端口,和在telnet 25端口的时候,得到的反馈信息是不同的。这些信息就是banner。
对如果有lisen 1700就开启了服务。
daisy_cheung 2008-06-18
  • 打赏
  • 举报
回复
在c8上执行:telnet c2 1700,
$ telnet c2 1700
Trying 10.0.1.2...
telnet: connect to address 10.0.1.2: Connection timed out

在c8上执行netstat -an|grep 1700

c8:~ # netstat -an|grep 1700
tcp 0 1 192.168.70.18:56835 10.0.1.2:1700 SYN_SENT

"(当然前提是你的c7已经开启了相应服务,开始侦听这两个端口)。看banner应该可知是否c7的服务。"
这句话不是太明白,^_^
c7开启了相应服务,这里的服务是指什么?是不是netstat -an中如果显示正在Listen 1700端口,就意味着已经开启了相应服务。
看banner?这个又怎么看?

daisy_cheung 2008-06-17
  • 打赏
  • 举报
回复
怎么用呢?
feillex 2008-06-17
  • 打赏
  • 举报
回复
为什么要用nat?
直接用路由就可以的。
feillex 2008-06-17
  • 打赏
  • 举报
回复
问题找到了
应该在于
c7怎么有两块网卡???
其实有两块网卡也没关系。为什么eth0 的ip地址配置为192.168.70网段???


解决办法:把c7的eth0 ip设定为除192.168.70网段之外的任何ip
或者直接禁用c7的eth0


daisy_cheung 2008-06-17
  • 打赏
  • 举报
回复
c8和c2使用一个网关192.168.70.1,这样设有问题吗?

c2上iptables-save执行结果:
# Generated by iptables-save v1.2.9 on Tue Jun 17 18:16:24 2008
*mangle
:PREROUTING ACCEPT [33241977:28598639610]
:INPUT ACCEPT [33199752:28592954208]
:FORWARD ACCEPT [380:30011]
:OUTPUT ACCEPT [33991921:30183461709]
:POSTROUTING ACCEPT [33992305:30183492028]
COMMIT
# Completed on Tue Jun 17 18:16:24 2008
# Generated by iptables-save v1.2.9 on Tue Jun 17 18:16:24 2008
*filter
:INPUT ACCEPT [209756:12464596]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [422516:94826206]
COMMIT
# Completed on Tue Jun 17 18:16:24 2008
# Generated by iptables-save v1.2.9 on Tue Jun 17 18:16:24 2008
*nat
:PREROUTING ACCEPT [4:578]
:POSTROUTING ACCEPT [3:180]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -d 192.168.70.12 -p tcp -m multiport --dports 1700,9999 -j DNAT --to-destination 10.0.1.7
COMMIT
# Completed on Tue Jun 17 18:16:24 2008

*******************************************************************************************************************************
c7上netstat -rn的结果:
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.70.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 10.0.1.2 0.0.0.0 UG 0 0 0 eth1

c8上netstat -rn的结果:
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.70.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.70.1 0.0.0.0 UG 0 0 0 eth0

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
谢谢你了,希望能早点把这个问题解决了!
feillex 2008-06-17
  • 打赏
  • 举报
回复
不用

在c2上运行命令:iptables-save 并把结果贴出来

此外,刚才有点疏漏,还需要把c8的网关指向c2
然后再c7和c8上分别运行命令:netstat -rn 并把结果贴出来。
daisy_cheung 2008-06-17
  • 打赏
  • 举报
回复
我照你说的那么做了,还是不行。不用设置POSTROUTING规则吗?
feillex 2008-06-17
  • 打赏
  • 举报
回复
上面的命令在c2上做。
c7只需要把默认网关配置为10.0.1.2
daisy_cheung 2008-06-17
  • 打赏
  • 举报
回复
只用在c7上做上面的设置就可以了吗
feillex 2008-06-17
  • 打赏
  • 举报
回复
没太看明白你的需求。
我估计的需求是否这样: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
daisy_cheung 2008-06-17
  • 打赏
  • 举报
回复
另外现在是在局域网内做个测试,实际用是在外网上。也就是c2一张网卡是外网ip,一张是内网的,c7为内网ip,c8是外网ip。能不能给帮我出两个解决方案。
一个是内网跨网段使用路由,另外是有外网的情况。谢谢啦!

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧