iptables之端口转发

网上有很多文章写的是iptables通过nat模块进行端口映射,其实这是错误的概念,只是在ipables上做了来和回的2个forward而已。 因为有个项目要一个端口转发,而转发的还刚好是ssh端口。基本架构如下: A:  1.1.1.1 B:  公网地址 2.2.2.2 内网地址 10.10.10.2 C: 10.10.10.3 现在在B上面对10.10.10.3的22端口映射成2.2.2.2:3322端口。   当A ssh 到2.2.2.2:3322端口的时候每次都是通过2.2.2.2来进行内外网转发的。而A 得到的know_hosts里面的key也是真是10.10.10.3的公钥。但是在A的know_hosts文件里10.10.10.3的公钥对应的IP却是2.2.2.2,而不是10.10.10.3。.所以会出现一个情况,当你以后ssh 2.2.2.2的22端口的时候会提示key出错了。   这个也是没有办法的,A一直连接的都是2.2.2.2。   由于一般做forward的机器都是一个公网,一个内网,而tcpdump不能在混杂模式下监听所有端口,所以必须开2个tcpdump进程,后期再用wireshark进行merge后再进行分析。   从分析结果来看,只是在所有的连接中当中会多一步而已,而不会有其他更多的,key交换的时候也同样会进行forward的。