服务器 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的内网映射转发的实现方法,谢谢
不是一条命令的事么,不需要 iptables
echo 1 > /proc/sys/net/ipv4/ip_forward
需要 iptables 配置端口的。
socat 应该更简单,只需要一行命令。 iptables 需要配两行代码。
可以参考这个教程。我的配置和这个差不多,你按这个配完,然后保存 iptables 就可以查看是怎么配的了。
http://coolnull.com/3322.html
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
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 你找到默认端口,设置转发即可。
第二行这样配有啥区别不?我不知道这些参数的意思。
iptables -t nat -A POSTROUTING -d 10.0.0.2 -p tcp -m tcp --dport 22 -j SNAT --to-source 1.1.1.1
开启了
查到区别了, 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
这个地方, MASQUERADE 和 SNAT 效果基本相同。它们的作用:所有从本地网络出去的包的源地址改为 Internet 连接的地址。如果不作 SNAT 或 MASQUERADE ,返回给客户端的数据包不知道怎么发出去。
区别:
SNAT 必须指定 source IP 地址
MASQUERADE 并需要指定 source IP 地址
@hanxiV2EX
请原谅我的错别字。 233
MASQUERADE 不需要指定 source IP 地址
动态 IP 的情况必须用 MASQUERADE
静态 IP
socat 的可以,但是 socat 的 fork 出来的子进程几个小时上上几千,感觉他不会释放出来.
不行.昨天也找了这个教程.怎么搞也弄不出来.后来看了 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
上面打错了. 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
我昨天才在阿里云作了一台转发。规则是没问题的,应该是其它地方有问题导致。
执行命令 iptables -vnL 和 iptables -t nat -vnL 把结果贴出来