ttcn_cu 发表于 2013-08-14 22:01

有个IP地址在本机,但是希望走某个路由访问外部的相同地址。怎么配都不成功. [已解决]

本帖最后由 ttcn_cu 于 2013-08-20 19:21 编辑

如题。。。。。。。

ssffzz1 发表于 2013-08-15 08:44

你要把环境说清楚。要不谁都搞不定。

quxiaosong 发表于 2013-08-15 08:56

是否需要端口映射啊

ttcn_cu 发表于 2013-08-15 18:06

回复 3# quxiaosong


    我实验了一下,似乎本机地址的NAT不能工作

iptables -t nat -A PREROUTING -j DNAT -d 192.0.0.1 --to-destination 11.0.7.1

11.0.7.1 是本机地址,192.0.0.1 是一个虚假地址
ping 192.0.0.1 的时候,可以收到返回值
但是wget 192.0.0.1 包就被forward到linbo了 (通过配置forward 规则观察iptables -L -v的counter)
很奇怪啊

ssffzz1 发表于 2013-08-16 09:51

嗯。

你就自己慢慢配吧。你干嘛我都不知道。

ttcn_cu 发表于 2013-08-16 19:05

回复 5# ssffzz1


    不知道是不是iptables的bug

TRACE: raw:PREROUTING:policy:2 IN=vlan0357 OUT= MAC=02:00:20:ee:69:03:02:00:00:0f:00:02:08:00:45:28:00:3c SRC=39.128.0.2 DST=192.0.0.1 LEN=60 TOS=0x08 PREC=0x20 TTL=63 ID=60889 DF PROTO=TCP SPT=53015 DPT=3000 SEQ=3417509349 ACK=0 WINDOW=5840 RES=0x00 SYN URGP=0 OPT (020405B40402080A0072035A0000000001030309)
TRACE: raw:PREROUTING:policy:2 IN=vlan0357 OUT= MAC=02:00:20:ee:69:03:02:00:00:0f:00:02:08:00:45:28:00:3c SRC=39.128.0.2 DST=192.0.0.1 LEN=60 TOS=0x08 PREC=0x20 TTL=63 ID=60890 DF PROTO=TCP SPT=53015 DPT=3000 SEQ=3417509349 ACK=0 WINDOW=5840 RES=0x00 SYN URGP=0 OPT (020405B40402080A0072323A0000000001030309)

===========分割线,上面TCP不行,下面ICMP就可以================

TRACE: raw:PREROUTING:policy:2 IN=vlan0357 OUT= MAC=02:00:20:ee:69:03:02:00:00:0f:00:02:08:00:45:28:00:54 SRC=39.128.0.2 DST=192.0.0.1 LEN=84 TOS=0x08 PREC=0x20 TTL=63 ID=0 DF PROTO=ICMP TYPE=8 CODE=0 ID=45849 SEQ=1
TRACE: nat:PREROUTING:rule:1 IN=vlan0357 OUT= MAC=02:00:20:ee:69:03:02:00:00:0f:00:02:08:00:45:28:00:54 SRC=39.128.0.2 DST=192.0.0.1 LEN=84 TOS=0x08 PREC=0x20 TTL=63 ID=0 DF PROTO=ICMP TYPE=8 CODE=0 ID=45849 SEQ=1



# iptables -t raw -L
Chain PREROUTING (policy ACCEPT)
target   prot opt source               destination         
TRACE      all--anywhere             192.0.0.1         

Chain OUTPUT (policy ACCEPT)
target   prot opt source               destination         
# iptables -t nat -L -v
Chain PREROUTING (policy ACCEPT 1620 packets, 115K bytes)
pkts bytes target   prot opt in   out   source               destination         
    2   168 DNAT       all--any    any   anywhere             192.0.0.1         to:11.0.7.1

Chain POSTROUTING (policy ACCEPT 1041 packets, 75357 bytes)
pkts bytes target   prot opt in   out   source               destination         
    0   0 SNAT       all--any    any   11.0.7.1             anywhere            to:192.0.0.1

Chain OUTPUT (policy ACCEPT 1041 packets, 75357 bytes)
pkts bytes target   prot opt in   out   source               destination   


chenyx 发表于 2013-08-17 21:24

猜想下,你的局域网有个ip地址是A,外网还有一个机器B的ip和你的ip是一样的,对吧.
这样是没法通信的.即使B的ip不和A的一致,只要是同一个网段的,都不会经过默认路由,直接在端口转发了.

myfat10 发表于 2013-08-18 11:21

最烦这种不说清楚环境,不说清楚要干嘛,莫名其妙问的问题,谁也不知道你啥意思。

ssffzz1 发表于 2013-08-19 08:46

别猜了。没意义啊。

ttcn_cu 发表于 2013-08-20 19:21

问题找到了,原来TCP丢包是因为checksum错了

我的网络结构比较特殊,同一个测试服务器要发包和收报,所以做了一个假地址路由出去,回来的时候用了S/DNat,没想到 iptables
对TCP checksum错误的包不做pre-routing, 也不记trace。。。竟然还有人把wireshark的TCP检查关了。。。
页: [1] 2
查看完整版本: 有个IP地址在本机,但是希望走某个路由访问外部的相同地址。怎么配都不成功. [已解决]