- 主题:请教一下,DNAT之后回程路由
A机需要从B机跳转到C机,在B上做了一条DNAT,把从A访问B的特定端口转发到C。
那么回程的两种方式:
1)在C上添加静态路由,所有访问A IP的走B路由;
2)在B上添加SNAT,所有访问C的数据包原地址转换为B上相应地址。
请教这两种方式哪种效率高?或者都无所谓?
谢谢!
--
FROM 210.162.8.*
大佬,莫取笑俺。
说直白点就是A在外面想临时访问C的资源,但是C限定了只能从B访问。
【 在 lixianghui (傻瓜) 的大作中提到: 】
: 会玩,没见过这样玩的。
--
FROM 210.162.8.*
行啊,就是俺说的方案2嘛。俺是想知道哪个效果更好一些……不过其实也就是
今天一时的需求,脑子里想多了而已。。。。
【 在 lixianghui (傻瓜) 的大作中提到: 】
: 直接b做个源地址转换不行吗?
--
FROM 210.162.8.*
确实不知道啊,因为a不能直接访问c。
c上限定了只能从b访问。而且这个限定是运营商送的一个特殊的盒子上做的,
这个盒子不能简单滴远程ssh/telnet,只能通过内网web访问(主要是我没有研究过)。
也就是说我不能简单滴修改这个来源地址限定。
【 在 lixianghui (傻瓜) 的大作中提到: 】
: 怎么感觉c根本不知道有a这么个东西呢?
--
FROM 210.162.8.*
【 在 leelou (leelou) 的大作中提到: 】
: 我咋感觉实现不了.
: nat好像是不需要回程路由的.
: a通过b的dnat访问c, c看到的应该还是a的ip,所以访问不了.
: a通过b访问snat转化成b的ip,再去访问c, 看起来确实可以,但是公网snat城私网ip,
: 总感觉很奇怪.
实现上就是这样。但是实际上snat也好dnat也罢,并不需要关心是公网还是私网IP。
直白点说就是两个不同网段而已。h只要在B上能够访问到就好了。这样想就不奇怪了。
至于回程路由,如果有SNAT就不需要单独添加回程路由了,如果没做就需要添加一条
静态路由。这就是我最初问的两种方式哪种更好。
: 我是自学网络的,有些地方可能没理解对.
--
修改:hyoga FROM 210.254.36.*
FROM 210.254.36.*
感谢,思路清晰,学习了。
果然我还是知其然不知所以然,大佬说了一下就明白了。
不过我的实际情况有一个小问题,A到B走的是公网。所以A上没办法做静态路由指向B。
【 在 tsa300 (Tele-Superachromat T*) 的大作中提到: 】
: 静态路由效率高。
: DNAT SNAT 端口转发肯定不如路由。
: 其实你不需要iptables DNAT,A做静态路由,把C网段的路由指向B,B做源地址路由(策略路由)把A来的请求指向C。这是三层转发(路由),能访问C的任何端口、任何协议,而且性能好。如果用iptables 做DNAT端口转发就是四层的,只能每个端口+协议的组合单独配置,性能也打折
: 回程最简单是B开 masquerade,C看到的是B发来的请求回给B,B的masquerade机制回给A,iptables的masquerade本质是SNAT四层转发。
: 如果能在C上配静态路由就更好了,直接把A的网段指向B,B知道C在哪儿,不需要四层转发了,B什么都不用做回程就通了。
--
修改:hyoga FROM 210.162.8.*
FROM 210.162.8.*
啊……我从来没有想过可以这样做路由!!!又学习了。
第一反应是我怎么能用公网IP转发到另外一个内网的访问呢?
是我愚钝了。
其实不需要区分内网还是外网IP的
【 在 tsa300 (Tele-Superachromat T*) 的大作中提到: 】
: 你的意思是 B 的 ip 不固定?可以申请个域名,B配上ddns,A定期去解析一下。
: 剩下的就简单了,比如c的网段是 10.10.10.0/24 ,你在A做个静态路由,
: ip route add 10.10.10.0/24 via IP-addr-of-B
: ...................
--
FROM 210.162.8.*
明白。多谢!
【 在 tsa300 (Tele-Superachromat T*) 的大作中提到: 】
: 前提是你A和B之间有隧道
: 如果A和B只有公网,那只能通过B做4层转发 (DNAT SNAT),这时那条路由就没用了,因为AB公网是走default route出去的,你在A配一个去C via B 的静态路由,而A到B只能通过defualt route才可达是没戏的。
: ip route add xxx/y via zzz
: ...................
--
FROM 210.162.8.*
proxy当然可以,但是很显然nat比proxy简单多了不是吗?
【 在 Loveni (ainibaobei) 的大作中提到: 】
: 你这个需要一个proxy,不是需要一个nat.
--
FROM 210.162.8.*
需求场景是明确的啊
还需要google的难道比我登录到系统敲一条命令简单?
【 在 Loveni (ainibaobei) 的大作中提到: 】
: google下tcpproxy或者rinetd。
: 简单不简单看需求看场景,这个世界基本逻辑就是垃圾被淘汰,存在即合理。
--
FROM 210.162.8.*