iptables 内网转发求请教?

2016-11-09 03:09:43 +08:00
 webjin1

服务器 A 网卡配置 2 个 IP 地址
公网 IP:1.1.1.1
私网 IP:10.0.0.1
服务器 A 本身的 ssh 服务监听端口是 tcp12233 端口

服务器 B 网卡配置了 1 个私网地址
私网 IP:10.0.0.2
开放了 ssh默认监听22

从服务器 A 上面 直接 ping 或者 ssh 10.0.0.2 是可以通的
1,我现在想从外面通过 ssh 1.1.1.1 tcp22 端口 登录到 服务器 B.
2,另外 cacti 监控服务器在其他机房 想监控 服务器 B 通过snmp协议获取服务器 B 的数据

网上找了很多知识实现不了,但是用rinetd可以很快速的实现第1条.但是它无法转发udp.
另外我想知道iptables实现tcp和udp的内网映射转发的实现方法,谢谢
3519 次点击
所在节点    Linux
16 条回复
johnnie502
2016-11-09 07:08:56 +08:00
不是一条命令的事么,不需要 iptables

echo 1 > /proc/sys/net/ipv4/ip_forward
hanxiV2EX
2016-11-09 08:45:12 +08:00
@johnnie502 需要 iptables 配置端口的。
socat 应该更简单,只需要一行命令。 iptables 需要配两行代码。
hanxiV2EX
2016-11-09 08:59:43 +08:00
可以参考这个教程。我的配置和这个差不多,你按这个配完,然后保存 iptables 就可以查看是怎么配的了。

http://coolnull.com/3322.html
FifiLyu
2016-11-09 09:03:01 +08:00
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
FifiLyu
2016-11-09 09:03:53 +08:00
@FifiLyu

iptables -t nat -A PREROUTING -d 1.1.1.1 -p tcp -m tcp --dport 22 -j DNAT --to-destination 10.0.0.2:22
iptables -t nat -A POSTROUTING -d 10.0.0.2 -p tcp -m tcp --dport 22 -j MASQUERADE
service iptables save

这个是转发 SSH 端口。至于 SNMP 你找到默认端口,设置转发即可。
hanxiV2EX
2016-11-09 09:22:55 +08:00
@FifiLyu

第二行这样配有啥区别不?我不知道这些参数的意思。

iptables -t nat -A POSTROUTING -d 10.0.0.2 -p tcp -m tcp --dport 22 -j SNAT --to-source 1.1.1.1
webjin1
2016-11-09 09:28:43 +08:00
@johnnie502 开启了
hanxiV2EX
2016-11-09 09:30:11 +08:00
@FifiLyu
查到区别了, MASQUERADE 不适合动态 IP 。如果 1.1.1.1 是动态 IP ,则应该这样配:

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 22 -j DNAT --to-destination 10.0.0.2:22
iptables -t nat -A POSTROUTING -d 10.0.0.2 -p tcp -m tcp --dport 22 -j MASQUERADE
FifiLyu
2016-11-09 09:36:26 +08:00
@hanxiV2EX

这个地方, MASQUERADE 和 SNAT 效果基本相同。它们的作用:所有从本地网络出去的包的源地址改为 Internet 连接的地址。如果不作 SNAT 或 MASQUERADE ,返回给客户端的数据包不知道怎么发出去。

区别:
SNAT 必须指定 source IP 地址
MASQUERADE 并需要指定 source IP 地址
FifiLyu
2016-11-09 09:37:22 +08:00
@hanxiV2EX

请原谅我的错别字。 233

MASQUERADE 不需要指定 source IP 地址
FifiLyu
2016-11-09 09:39:40 +08:00
@hanxiV2EX 动态 IP 的情况必须用 MASQUERADE
webjin1
2016-11-09 10:33:09 +08:00
@hanxiV2EX 静态 IP
webjin1
2016-11-09 10:43:34 +08:00
@hanxiV2EX socat 的可以,但是 socat 的 fork 出来的子进程几个小时上上几千,感觉他不会释放出来.
webjin1
2016-11-09 10:50:43 +08:00
@FifiLyu 不行.昨天也找了这个教程.怎么搞也弄不出来.后来看了 iptables 追踪表.
ipv4 2 tcp 6 117 SYN_SENT src=183.60.xxx.xx dst=1.1.1.1 sport=50796 dport=22 [UNREPLIED] src=10.10.0.1 dst=1.1.1.1 sport=22 dport=50796 mark=0 secmark=0 use=3
webjin1
2016-11-09 10:51:42 +08:00
@FifiLyu 上面打错了. ipv4 2 tcp 6 117 SYN_SENT src=183.60.xxx.xx dst=1.1.1.1 sport=50796 dport=22 [UNREPLIED] src=10.0.0.2 dst=1.1.1.1 sport=22 dport=50796 mark=0 secmark=0 use=3
FifiLyu
2016-11-09 11:51:51 +08:00
@webjin1
我昨天才在阿里云作了一台转发。规则是没问题的,应该是其它地方有问题导致。

执行命令 iptables -vnL 和 iptables -t nat -vnL 把结果贴出来

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/319145

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX