配置DNAT發佈內網服務器

3.配置DNAT發佈內網服務器
問題
本案例要求熟悉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 UG
0.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.1
ELinks: 拒絕連接
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_log
174.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 [email protected] “hostname” //SSH執行遠程主機上的命令
[email protected]’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 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
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 [email protected] “hostname”
[email protected]’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.5
ftp: 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 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
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.1
Connected to 174.16.16.1 (174.16.16.1).
220 (vsFTPd 2.2.2)
Name (174.16.16.1:root): ftp
331 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> quit
221 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_ftp
nf_nat 22759 2 nf_nat_ftp,iptable_nat
nf_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.1
Connected to 174.16.16.1 (174.16.16.1).
220 (vsFTPd 2.2.2)
Name (174.16.16.1:root): ftp
331 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 pub
drwxr-xr-x 2 0 0 4096 Apr 27 02:13 rhel6
… …
226 Directory send OK.
ftp> quit
221 Goodbye.
[root@pc120 ~]#

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章