首页 > 编程知识 正文

LINUX 配置DNAT发布内网服务器,服务器怎么配置内网ip

时间:2023-05-05 10:06:26 阅读:235205 作者:1471

问题
本案例要求熟悉DNAT策略的典型应用场景,完成以下任务:
1)通过DNAT策略发布内网的Web服务器
2)通过DNAT策略发布内网的SSH服务器
3)通过DNAT策略发布内网的FTP服务器
方案
沿用练习二,采用三台RHEL6虚拟机svr5、gw1、pc120,如图-3所示。其中,虚拟机svr5作为局域网络的测试机,接入NAT网络(virbr0);虚拟机pc120作为Internet的测试机,接入隔离网络(virbr1);虚拟机gw1作为网关/路由器,配置eth0、eth1两块网卡,分别接入两个网络virbr0、virbr1。

图-3
内网测试机svr5还需要将默认网关指向Linux网关的内网接口192.168.4.1:

[root@svr5 ~]# route -n | grep UG0.0.0.0 192.168.4.1 0.0.0.0 UG 0 0 0 eth0

步骤
实现此案例需要按照如下步骤进行。
步骤一:通过DNAT策略发布内网的Web服务器
Web服务器的IP地址192.168.4.5为私有地址,从互联网无法直接访问;而企业站点的域名www.tedu.cn对外只能解析为公有地址(比如网关gw1外网接口的地址174.16.16.1)。
1)未启用DNAT策略时,外网无法访问私网Web服务器
启用svr5的httpd服务:

[root@svr5 ~]# service httpd restar.. ..[root@svr5 ~]# echo "Test Page 5." > /var/www/html/index.html //部署测试网页

关闭gw1的httpd服务:

[root@gw1 ~]# service httpd stop.. ..

从外网机pc120尝试访问http://174.16.16.1会失败:

[root@pc120 ~]# elinks --dump http://174.16.16.1ELinks: 拒绝连接

2)在网关gw1上添加DNAT规则
添加的规则应该在nat表内,将从外网接口eth1进来、目标地址为174.16.16.1、目标端口为TCP 80的数据包,在路由选择之前将数据包的目标IP地址修改为内网实际Web服务器svr5的IP地址192.168.4.5:

[root@gw1 ~]# service iptables stop //排除其他规则干扰iptables:将链设置为政策 ACCEPT:nat [确定]iptables:清除防火墙规则: [确定]iptables:正在卸载模块: [确定][root@gw1 ~]# iptables -t nat -A PREROUTING -i eth1 -d 174.16.16.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.4.5[root@gw1 ~]# iptables -t nat -nL PREROUTING //查看结果Chain PREROUTING (policy ACCEPT)target prot opt source destination DNAT tcp -- 0.0.0.0/0 174.16.16.1 tcp dpt:80 to:192.168.4.5[root@gw1 ~]#

3)再次测试从外网访问内网
从外网机pc120尝试访问http://174.16.16.1,可以看到svr5的Web页面:

[root@pc120 ~]# elinks --dump http://174.16.16.1 Test Page 5.

检查内网机svr5的Web访问日志,发现确实是外网机174.16.16.120在访问:

[root@svr5 ~]# tail -1 /var/log/httpd/access_log174.16.16.120 - - [19/May/2015:14:59:23 +0800] "GET / HTTP/1.1" 200 13 "-" "ELinks/0.12pre5 (textmode; Linux; -)"

步骤二:通过DNAT策略发布内网的SSH服务器
1)未启用DNAT策略时,外网无法以SSH方式远程管理私网Web服务器
如果网关gw1开启默认的SSH服务、且允许进站访问,那么当从外网机pc120远程SSH连接174.16.16.1时,登入的是gw1的Shell环境:

[root@pc120 ~]# ssh root@174.16.16.1 "hostname" //SSH执行远程主机上的命令root@174.16.16.1's password: //验证gw1的root口令gw1.tedu.cn //连接的是gw1[root@pc120 ~]#

2)在网关gw1上添加DNAT规则
准备映射端口2345,当从外网接口eth1进来、目标IP地址为174.16.16.1、目标端口为TCP 2345时,在路由选择之前将数据包的目标IP地址改为192.168.4.5、目标端口改为22:

[root@gw1 ~]# iptables -t nat -A PREROUTING -i eth1 -d 174.16.16.1 -p tcp --dport 2345 -j DNAT --to-destination 192.168.4.5:22[root@gw1 ~]# iptables -t nat -nL PREROUTINGChain PREROUTING (policy ACCEPT)target prot opt source destination DNAT tcp -- 0.0.0.0/0 174.16.16.1 tcp dpt:80 to:192.168.4.5 DNAT tcp -- 0.0.0.0/0 174.16.16.1 tcp dpt:2345 to:192.168.4.5:22

3)测试针对SSH服务的DNAT转换
从外网机pc120以SSH连接174.16.16.1的2345端口,实际登入的是内网机svr5:

[root@pc120 ~]# ssh -p 2345 root@174.16.16.1 "hostname"root@174.16.16.1's password: //实际需验证svr5的root口令svr5.tedu.cn //实际访问的是svr5[root@pc120 ~]#

步骤三:通过DNAT策略发布内网的FTP服务器
1)准备测试环境
在内网机svr5上开启vsftpd服务:

[root@svr5 ~]# yum -y install vsftpd.. ..[root@svr5 ~]# service vsftpd restart.. ..[root@svr5 ~]# echo "FTP Test 5." > /var/ftp/a.txt //部署FTP测试文件

关闭网关gw1上的vsftpd服务:

[root@gw1 ~]# service vsftpd stop关闭 vsftpd: [确定]

2)未启用DNAT策略时,外网无法访问私网FTP服务器
尝试访问gw1的FTP端口时,因服务不可用而拒绝:

[root@pc120 ~]# ftp 174.16.16.1 ftp: connect: 拒绝连接ftp> quit[root@pc120 ~]#

尝试访问svr5的FTP端口时,因目标地址为私网地址而不可达:

[root@pc120 ~]# ftp 192.168.4.5ftp: connect: 网络不可达ftp> quit[root@pc120 ~]#

3)在网关gw1上添加DNAT规则
添加的规则应该在nat表内,将从外网接口eth1进来、目标地址为174.16.16.1、目标端口为TCP 20或21的数据包,在路由选择之前将数据包的目标IP地址修改为内网实际FTP服务器svr5的IP地址192.168.4.5:

[root@gw1 ~]# iptables -t nat -A PREROUTING -i eth1 -d 174.16.16.1 -p tcp --dport 20:21 -j DNAT --to-destination 192.168.4.5 [root@gw1 ~]# iptables -t nat -nL PREROUTINGChain PREROUTING (policy ACCEPT)target prot opt source destination DNAT tcp -- 0.0.0.0/0 174.16.16.1 tcp dpt:80 to:192.168.4.5 DNAT tcp -- 0.0.0.0/0 174.16.16.1 tcp dpt:2345 to:192.168.4.5:22 DNAT tcp -- 0.0.0.0/0 174.16.16.1 tcp dpts:20:21 to:192.168.4.5

4)测试从外网访问内网的FTP服务
从外网机pc120访问174.16.16.1的FTP端口,实际上连接到内网机svr5的vsftpd服务,经DNAT转换后,能够成功登录,但是无法下载数据:

[root@pc120 ~]# ftp 174.16.16.1Connected to 174.16.16.1 (174.16.16.1).220 (vsFTPd 2.2.2)Name (174.16.16.1:root): ftp331 Please specify the password.Password:230 Login successful. //成功登入Remote system type is UNIX.Using binary mode to transfer files.ftp> ls //获取目录列表失败227 Entering Passive Mode (192,168,4,5,204,144).ftp: connect: 网络不可达ftp> quit221 Goodbye.[root@pc120 ~]#

4)在网关gw1上加载FTP相关模块

[root@gw1 ~]# modprobe nf_nat_ftp nf_conntrack_ftp//加载内核模块[root@gw1 ~]# lsmod | grep nat_ftp //确认结果nf_nat_ftp 3507 0 nf_conntrack_ftp 12913 1 nf_nat_ftpnf_nat 22759 2 nf_nat_ftp,iptable_natnf_conntrack 79758 7 nf_nat_ftp,nf_conntrack_ftp,iptable_nat,nf_nat,nf_conntrack_ipv4,nf_conntrack_ipv6,xt_state

5)再次测试从外网访问内网的FTP服务
从外网机pc120访问174.16.16.1的FTP端口,实际上连接到内网机svr5的vsftpd服务,可以成功登录,也可以下载数据:

[root@pc120 ~]# ftp 174.16.16.1Connected to 174.16.16.1 (174.16.16.1).220 (vsFTPd 2.2.2)Name (174.16.16.1:root): ftp331 Please specify the password.Password:230 Login successful. //成功登入Remote system type is UNIX.Using binary mode to transfer files.ftp> ls //获取目录列表成功227 Entering Passive Mode (174,16,16,1,237,199).150 Here comes the directory listing.drwxr-xr-x 3 14 0 4096 Apr 11 06:53 pubdrwxr-xr-x 2 0 0 4096 Apr 27 02:13 rhel6.. ..226 Directory send OK.ftp> quit221 Goodbye.[root@pc120 ~]#

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。