配置多層NAT和端口映射實現外網訪問內網 安全
經過配置NAT能夠實現內網中不能直接訪問外網的主機經過NAT代理訪問內網,配置方法這裏再也不贅述(前文有介紹)。本文以兩層的NAT代理作模擬,經過端口映射實現從外網訪問內網中某一臺主機,並實現某一服務(如ftp功能)。端口映射就是將外網主機的IP地址的一個端口映射到內網中一臺機器,提供相應的服務。當用戶訪問該IP的這個端口時,服務器自動將請求映射到對應局域網內部的機器上(目的端口必須開放)。 服務器
在虛擬機中建立三臺Linux系統(能夠經過克隆建立),分別命名爲Linux一、Linux2 ssh
和Linux3。其中Linux1和Linux2都具備兩塊網卡,Linux3具備1塊網卡。 tcp
對應的網卡ip分配: 工具
Linux1: 測試
eth0(NAT模式) 192.168.214.210(此ip跟VMware的NAT模式同網段,即能直接訪問外網) spa
eth1(僅主機模式) 192.168.1.254(此ip做爲Linux2的網關) 3d
Linux2: 代理
eth0(僅主機模式) 192.168.1.100 網關192.168.1.254 blog
eth1(LAN區段) 192.168.2.254(此ip做爲Linux3的網關)
Linux3:
eth0 (LAN區段) 192.168.2.100 網關192.168.2.254
配置相應的NAT代理,使得Linux3能夠經過兩級的NAT代理訪問外網
執行命令ping www.baidu.com –c4檢驗
3.1 對於Linux1映射Linux2,在Linux1上指定一個端口(範圍是1024-65536,此處指定爲4022),指定映射到Linux2的一個端口(端口範圍相同,此處指定爲3022)
在Linux1上執行命令:
iptables -t nat -A PREROUTING -d 192.168.214.210 -p tcp --dport 4022 -j DNAT --to 192.168.1.100:3022
3.2 對於Linux2映射Linux3,在 Linux2上使用端口映射的端口爲同一端口即3022,指定映射到Linux3的一個端口(端口範圍相同,此處爲了方便,指定Linux3開放的ssh端口51323,便於經過ssh客戶端測試端口映射的鏈接及分析)
在Linux2上執行命令:
iptables -t nat -A PREROUTING -d 192.168.1.100 -p tcp --dport 3022 -j DNAT --to 192.168.2.100:51323
4.1 經過ssh登陸Linux1映射到Linux2再映射到Linux3,最終ssh會經過兩級的端口映射登陸到Linux3,
4.2 在Windows平臺(此時至關於外網訪問)使用netstat命令過濾出4022端口的tcp通訊,發現外網與Linux1經過4022端口創建起了tcp通訊
4.3 在登陸到的Linux3上使用netstat命令過濾出上面步驟獲得的52640端口的tcp通訊,發現Linux3經過51323端口與外網創建起了tcp通訊
4.4 在Linux1上能夠經過tcpdump抓包工具抓取端口4022的相關信息
在Linux2上經過tcpdump抓包工具抓取端口3022的相關信息
在Linux3上經過tcpdump抓包工具抓取端口51323的相關信息
能夠得出,外網主機192.168.214.1經過其52640端口與Linux3主機192.168.2.100經過51323端口創建了tcp鏈接,實現了從外網經過端口映射訪問內網主機
5.1 在Linux3安裝vsftpd服務端,啓動服務並建立普通用戶及密碼
yum install vsftpd -y
/etc/init.d/vsftpd start
useradd test
echo 123456|passwd --stdin test
5.2 用ftp客戶端登陸。因爲只配置了Linux3的51323端口映射,該端口又是ssh使用的端口,ftp默認端口21並無配置端口映射,可使用sftp(SSH File Transfer Protocol)利用ssh端口登陸到Linux3
說明:sftp命令能夠經過ssh來上傳和下載文件,是經常使用的文件傳輸工具,它的使用方式與ftp相似,但它使用ssh做爲底層傳輸協議,因此安全性比ftp要好得多
回車登陸成功,能夠拖拽文件進行測試
到Linux3的ftp服務的test用戶下查看
博主原創文章,轉載請務必註明出處