有个IP地址在本机,但是希望走某个路由访问外部的相同地址。怎么配都不成功. [已解决]
本帖最后由 ttcn_cu 于 2013-08-20 19:21 编辑如题。。。。。。。 你要把环境说清楚。要不谁都搞不定。 是否需要端口映射啊 回复 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)
很奇怪啊
嗯。
你就自己慢慢配吧。你干嘛我都不知道。 回复 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
猜想下,你的局域网有个ip地址是A,外网还有一个机器B的ip和你的ip是一样的,对吧.
这样是没法通信的.即使B的ip不和A的一致,只要是同一个网段的,都不会经过默认路由,直接在端口转发了. 最烦这种不说清楚环境,不说清楚要干嘛,莫名其妙问的问题,谁也不知道你啥意思。 别猜了。没意义啊。 问题找到了,原来TCP丢包是因为checksum错了
我的网络结构比较特殊,同一个测试服务器要发包和收报,所以做了一个假地址路由出去,回来的时候用了S/DNat,没想到 iptables
对TCP checksum错误的包不做pre-routing, 也不记trace。。。竟然还有人把wireshark的TCP检查关了。。。
页:
[1]
2