iptables设置映射通过外网端口代理ssh登录内网服务器

一、环境阐述

img

环境介绍:现有一台搭载数据库的内网服务器,要求是不能访问外网,需要其他可以有公网IP的服务器做端口代理,以SSH方式登录此服务器做系统管理。

环境模拟为两台VM虚拟机(搭载CentOS6.8):

img

外网服务器:一台虚拟机配置两张网卡,一张网卡eth1为NAT模式,可以访问外网,ip地址为192.168.10.133,开机后可以直接SSH登录系统;另一张eth2为内网的vlan(VMnet2),网段设置为192.168.9.0/24,ip地址为192.168.9.101。

img

内网服务器:不可直接外网访问,网卡eth1设置为内网vlan(VMnet2),ip地址为192.168.9.134。

img

两台服务器是可以连通的,并且外网服务器可以通过内网ssh登录内网服务器

img

二、开启外网服务器的IP路由转发功能

[root@centos6 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

或者

[root@centos6 ~]# vim /etc/sysctl.conf 

修改或添加为net.ipv4.ip_forward = 1

[root@centos6 ~]#  sysctl -p

img

三、在外网服务器上设置iptables的NAT转发功能

[root@centos6 ~]# iptables -t nat -A PREROUTING -p tcp -m tcp --dport 2222 -j DNAT --to-destination 192.168.9.134:22 

\#外网服务器上的2222端口代理到内网服务器的22端口。

[root@centos6 ~]# iptables -t nat -A POSTROUTING -d 192.168.9.134/32 -p tcp -m tcp --sport 22 -j SNAT --to-source 192.168.9.101

\#修改转发数据来源为内网网卡IP。

[root@centos6 ~]#iptables -t filter -A INPUT -p tcp -m state --state NEW -m tcp --dport 2222 -j ACCEPT 

\#设置接受对2222端口的访问

[root@centos6 ~]# iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE

\#设置转发出接口为eth2

[root@centos6 ~]# service iptables save

[root@centos6 ~]# service iptables restart

\#保存重启iptables

nat端口转发设置成功后,/etc/sysconfig/iptables文件里要注释掉下面两行!不然nat转发会有问题!一般如上面在nat转发规则设置好并save和restart防火墙之后就会自动在/etc/sysconfig/iptables文件里删除掉下面两行内容了。

[root@centos6 ~]# vim /etc/sysconfig/iptables

..........
 \#-A INPUT -j REJECT --reject-with icmp-host-prohibited     //这两行最好是注释掉。在一般的白名单设置中,如果这两行不注释,也会造成iptables对端口的设置无效
 \#-A FORWARD -j REJECT --reject-with icmp-host-prohibited

[root@centos6 ~]# service iptables restart

外网服务器的iptables规则表

img

内网服务器的iptables规则表

img

四、测试登录

用支持ssh软件登录或其他外网主机进行登录

img

img

上图第一行提示从外网服务器的内网IP登录系统,说明实验成功。

如有疏漏,欢迎指正,谢谢!

最后修改:2024 年 03 月 08 日
如果觉得我的文章对你有用,请随意赞赏