wesleyflagon 2018-09-20 13:09 采纳率: 0%
浏览 1944

用iptables做SNAT遇到问题...

iptables 咋又遇到问题了...

我在10.10.80.12/24这个机器上做SNAT, 给一个小网段10.8.0.0/16提供出口服务. 这么配的:

-t nat -A POSTROUTING -s 10.8.0.0/16 ! -d 10.8.0.0/16 -j SNAT --to-source 10.10.80.12

然后在在10.8.0.6上面ping 180.97.33.108:

20:58:20.103451 IP 10.8.0.6 > 180.97.33.108: ICMP echo request, id 22332, seq 1, length 64
20:58:20.103524 IP 10.10.80.12 > 180.97.33.108: ICMP echo request, id 22332, seq 1, length 64
20:58:20.103531 IP 10.10.80.12 > 180.97.33.108: ICMP echo request, id 22332, seq 1, length 64
20:58:20.104900 IP 180.97.33.108 > 10.10.80.12: ICMP echo reply, id 22332, seq 1, length 64
20:58:20.104968 IP 180.97.33.108 > 10.10.80.12: ICMP echo reply, id 22332, seq 1, length 64 

能看到request报文是正常的, 而reply报文的目标地址没有换回来.(10.10.80.12地址配在一个网桥上, 抓包用-i any, 所以会抓到重复包, 没问题)

reply报文收到了, 但是用conntrack -L能看到这个连接处于UNREPLIED状态.
icmp 1 16 src=10.8.0.6 dst=180.97.33.108 type=8 code=0 id=22332 [UNREPLIED] src=180.97.33.108 dst=10.10.80.12 type=0 code=0 id=22332 mark=0 use=2

然后在iptables各个chain里面加了日志, 日志是这样的:

raw-PREROUTING IN=brq78e460d0-36 OUT= PHYSIN=enp3s0f0 MAC=0c:c4:7a:2a:75:1a:00:e0:0f:8e:95:64:08:00 SRC=180.97.33.108 DST=10.10.80.12 LEN=84 TOS=0x00 PREC=0x00 TTL=56 ID=29612 DF PROTO=ICMP TYPE=0 CODE=0 ID=22193 SEQ=1 
mangle-PREROUTING IN=brq78e460d0-36 OUT= PHYSIN=enp3s0f0 MAC=0c:c4:7a:2a:75:1a:00:e0:0f:8e:95:64:08:00 SRC=180.97.33.108 DST=10.10.80.12 LEN=84 TOS=0x00 PREC=0x00 TTL=56 ID=29612 DF PROTO=ICMP TYPE=0 CODE=0 ID=22193 SEQ=1 
mangle-INPUT IN=brq78e460d0-36 OUT= PHYSIN=enp3s0f0 MAC=0c:c4:7a:2a:75:1a:00:e0:0f:8e:95:64:08:00 SRC=180.97.33.108 DST=10.10.80.12 LEN=84 TOS=0x00 PREC=0x00 TTL=56 ID=29612 DF PROTO=ICMP TYPE=0 CODE=0 ID=22193 SEQ=1 
filter-INPUT IN=brq78e460d0-36 OUT= PHYSIN=enp3s0f0 MAC=0c:c4:7a:2a:75:1a:00:e0:0f:8e:95:64:08:00 SRC=180.97.33.108 DST=10.10.80.12 LEN=84 TOS=0x00 PREC=0x00 TTL=56 ID=29612 DF PROTO=ICMP TYPE=0 CODE=0 ID=22193 SEQ=1 

按我的理解, 应该走到mangle-PREROUTING之后, 就应该把地址换回去, 再FORWARD而日志显示竟然是INPUT. 奇怪吧

  • 写回答

2条回答 默认 最新

  • zqbnqsdsmd 2018-09-22 13:52
    关注
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!