当前场景如下

跳板机A是双网卡,有一个内网IP和一个公网IP

内网IP: 10.0.10.30

外网IP:  58.68.255.123

内网机器:10.0.30.88,可以和10.0.10.30通讯

另外有一台内网机器需要通过公网去连接ssh,由于这台内网设备没有公网IP所以需要跳板机通过Iptables做端口转发

刚开始用的Iptbales做端口映射命令如下

iptables -t nat -A PREROUTING -p tcp -d 58.68.255.123 --dport 31688 -j DNAT --to-destination 10.0.30.88:22

iptables -t nat -A POSTROUTING -p tcp -d 10.0.30.88 --dport 22 -j SNAT --to-source 58.68.255.123

发现无法通过58.68.255.123:31688去ssh连接这台机器,试了好几次都是如此,开始想是不是因为双网卡原因

查看路由表后发现58.68.255.123并没有到内网10.0.10.0的路由,大概就是这个原因了,iptables把请求转发到内网10.0.30.88后,10.0.30.88跨网段了无法把包通过58.68.255.123转发回客户端就是连接这台机器的ssh客户端,因为30.88无法回原,必须通过10.0.10.30转发给58.68.255.123再转发给客户端,大概明白这个道理就该知道怎么做了。

iptables -t nat -A PREROUTING -p tcp -d 58.68.255.123 --dport 31688 -j DNAT --to-destination 10.0.30.88:22

iptables -t nat -A POSTROUTING -p tcp -d 10.0.30.88 --dport 22 -j SNAT --to-source 10.0.10.30

只是下一条命令变了而已,把回原地址更改为内网的了,这样就可以在跳板机上把请求转发给客户端了。

或者用以下命令也可以

iptables -t nat -A PREROUTING -p tcp -i em1 --dport 31688 -j DNAT --to 10.0.30.88:22

iptables -t nat -A POSTROUTING -j MASQUERADE

效果是一样的,需要指定网卡,em1为外网网卡

以上第一次命令不生效原因主要还是跨网段的原因,30跨到10,导致这个问题,如果公网IP转发端口的这台机器内网IP也在30段,那么第一条命令是可以生效的。

iptables还是需要很多地方去学习研究的,写下这篇日志,防止遗忘。

双网卡Iptables端口转发的更多相关文章

  1. CentOS7下双网卡iptables端口转发规则

    1. 拓扑图 10.1.1.173(内网目标)  <--------  10.1.1.207(内网网关)+172.16.5.100(外网入口) <----------- 172.16.6. ...

  2. 烂泥:KVM使用NAT联网并为VM配置iptables端口转发

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 在前面的文章中,我们介绍KVM的虚拟机(以下简称VM)都是通过桥接方式进行联网的. 本篇文章我们来介绍KVM的VM通过NAT方式进行联网,并且通过配置I ...

  3. Linux 服务器--Iptables 端口转发

    日常Iptables 端口转发 需求:公司是局域网络,通过一个外网ip,进行互联网的访问.公司的云平台服务器在公网中,虚拟化平台中有一台内部服务器,用于公司某部门的使用,上面运行www 服务,ssh端 ...

  4. 转:KVM使用NAT联网并为VM配置iptables端口转发,kvmiptables

    转载地址:https://www.ilanni.com/?p=7016 在前面的文章中,我们介绍KVM的虚拟机(以下简称VM)都是通过桥接方式进行联网的. 本篇文章我们来介绍KVM的VM通过NAT方式 ...

  5. Linux IPTABLES端口转发

    之前在Linux上用普通用户部署了一个Tomcat,然后将其server.xml中的端口配置为80端口,用普通用户运行就提示绑定端口失败(permission denied),google了一下,原来 ...

  6. iptables 端口转发规则

    玩 vps 的经常要用到端口转发用以实现更快的速度.比如 ovh 机房的网络我这里访问非常慢,用远程桌面会吐血的类型.所以就会用其他的线路作为跳板,比如洛杉矶,香港之类的.再比如如果需要一个日本 ip ...

  7. linux系统非ROOT用户80端口不能启动tomcat问题的变通办法——通过Iptables端口转发

    2010-07-17 13:21:42 org.apache.tomcat.util.digester.SetPropertiesRule begin 警告: [SetPropertiesRule]{ ...

  8. 〖Linux〗iptables端口转发(11.11.136.80:5552 <==> 10.10.136.1:8055/11.11.136.1:8055)

    环境: pc1: 10.10.72.1 (network: 10.10.72.0/22) pc2: 地址1: 10.10.136.1 (nework: 10.10.136.0/22) 地址2: 11. ...

  9. iptables端口转发规则(内网端口转外网端口)

    需求:外网124.202.173.118需要访问 10.45.225.70的内网54032端口,10.45.225.70服务器有公网地址139.129.109.81将内网地址端口转发到外网地址端口,并 ...

随机推荐

  1. Linux 驱动——Led驱动1

    led_drv.c驱动文件: #include <linux/module.h>#include <linux/kernel.h>#include <linux/init ...

  2. go延时队列

    package main import ( "errors" "flag" "fmt" log "github.com/cihub ...

  3. sklearn.model_selection.StratifiedShuffleSplit

    sklearn.model_selection.StratifiedShuffleSplit

  4. git 本地分支和远程分支改名字

    1.将本地分支进行改名: git branch -m old_branch new_branch 2.将本地分支的远程分支删除: git push origin :old_branch 3.将改名后的 ...

  5. zookeeper集群和安装dubbo的管控台

    准备三台服务器CentOs6: 192.168.37.132 192.168.37.128 192.168.37.131 1 将zookeeper的安装包分别解压到/usr/local/目录下 进入c ...

  6. CodeForces - 455D

    Serega loves fun. However, everyone has fun in the unique manner. Serega has fun by solving query pr ...

  7. zombodb 配置设置

    主要是关于es 集群地址以及分片,复制副本的配置,配置主要在postgresql.conf,当然我们可以在函数中指定 postgresql.conf 级别的配置 es 配置 格式 zdb.defaul ...

  8. [随笔][Golang][golang nil 相关]

    nil 是不能比较的 不同类型的nil的address是一样的 不同类型的nil是不能比较的 nil 是map, slice, pointer, channel, func, interface的零值 ...

  9. 1.1.25 word图片批量对齐

    1.打开文件,点击[开始]>[编辑]>[替换](或ctrl+h)> \ 在[查找内容]输入^g>定位到[替换为]>[格式]>[段落]>[对齐方式|居中]> ...

  10. Spring Cloud(Dalston.SR5)--Zuul 网关-路由配置

    Spring Cloud 在 Zuul 的 routing 阶段实现了几个过滤器,这些过滤器决定如何进行路由工作. 简单路由(SimpleHostRoutingFilter) 该过滤器运行后,会将 H ...