安基網 首頁 安全 安全學院 查看內容

VMware實現iptables NAT及端口映射

2020-5-18 11:27| 投稿: xiaotiger |來自: 互聯網


免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!

摘要: 1. 前言本文只講解實戰應用,不會涉及原理講解。如果想要了解iptables的工作流程或原理可參考如下博文。具體操作是在PC機的VMware虛擬機上進行的,因此涉及的地址都是內網IP。在實際工作中也是一樣的操作流程,只需要把涉及外網的地址改為公網IP即可。 1.1. 為什么有這篇文章?原因是在日常工作中,我 ...

1. 前言

本文只講解實戰應用,不會涉及原理講解。如果想要了解iptables的工作流程或原理可參考如下博文。

具體操作是在PC機的VMware虛擬機上進行的,因此涉及的地址都是內網IP。在實際工作中也是一樣的操作流程,只需要把涉及外網的地址改為公網IP即可。

1.1. 為什么有這篇文章?

原因是在日常工作中,我們都會在自己的電腦上安裝VMware虛擬機,并由此實現一些業務系統【如:LNMP】或模擬線上的網絡環境等。

而本文模擬的就是IDC機房或辦公網的環境。機房內網服務器不能上外網,只能通過網關服務器上外網。而外網服務器想要訪問機房內部的服務器,也只能通過網關服務器轉發實現訪問。


2. iptables表和鏈的工作流程

2.1. 常用操作

## 清空所有規則【默認是filter表】

iptables -F

iptables -X

iptables -Z

iptables -t nat -F

iptables -t nat -X

iptables -t nat -Z

## 查看規則

iptables -nL

iptables -nL -t nat

## 刪除指定表指定鏈的指定行數據

iptables -t nat -D POSTROUTING 1

  

3. 涉及虛擬機網絡設置

3.1. 內部服務器node01網絡設置

3.1.1. 內網設置【只有一個網卡】

備注:

使用LAN區段,那么本機登錄該虛擬機也不行,也ping不通,不在同一個網段不能互訪。只能通過網關服務器ssh跳轉登錄訪問。

eth0配置:

[[email protected] network-scripts]# cat ifcfg-eth0

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=none

IPV6INIT=yes

USERCTL=no

IPADDR=172.16.10.10

NETMASK=255.255.255.0

GATEWAY=172.16.10.5

# 阿里云DNS

DNS1=223.5.5.5

DNS2=223.6.6.6

  

3.2. 網關服務器網絡設置

3.2.1. 內網設置

備注:

網關服務器的內網地址和內部服務器的地址在同一個網段。因此他們之間可以互訪。

eth0配置:

[[email protected] network-scripts]$ cat ifcfg-eth0

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=none

IPV6INIT=yes

USERCTL=no

IPADDR=172.16.10.5

NETMASK=255.255.255.0

  

3.2.2. 外網設置【模擬的公網】

eth1配置:

[[email protected] network-scripts]# cat ifcfg-eth1

DEVICE=eth1

TYPE=Ethernet

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=none

IPV6INIT=yes

USERCTL=no

IPADDR=10.0.0.5

NETMASK=255.255.255.0

GATEWAY=10.0.0.2

# 阿里云DNS

DNS1=223.5.5.5

DNS2=223.6.6.6

  

3.3. 外網服務器設置

3.3.1. 外網設置【只有一個網卡】

eth0配置:

[[email protected] network-scripts]# cat ifcfg-eth0

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=none

IPV6INIT=yes

USERCTL=no

IPADDR=10.0.0.8

NETMASK=255.255.255.0

GATEWAY=10.0.0.2

# 阿里云DNS

DNS1=223.5.5.5

DNS2=223.6.6.6

  

4. 簡單的NAT路由器

4.1. 網絡架構

4.2. NAT需求介紹

網關2個網絡接口

Lan口: 172.16.10.5/24 eth0

Wan口: 10.0.0.5/24 eth1

目的:實現內網中的節點服務器node01 IP:172.16.10.10(網段:172.16.10.0/24)可控的訪問internet。

4.3. 網關服務器操作

1、網關機器開啟linux的轉發功能

[[email protected] ~]# tail /etc/sysctl.conf # 添加如下內容

…………

net.ipv4.ip_forward = 1

[[email protected] ~]# sysctl -p # 生效

  

2、網關機器iptables操作

iptables -P FORWARD DROP

將FORWARD鏈的策略設置為DROP,這樣做的目的是做到對內網ip的控制,你允許哪一個訪問internet就可以增加一個規則,不在規則中的ip將無法訪問internet。

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

這條規則規定允許任何地址到任何地址的確認包和關聯包通過。一定要加這一條,否則你只允許lan IP訪問沒有用。

iptables -t nat -A POSTROUTING -s 172.16.10.0/24 -j SNAT --to 10.0.0.5

這條規則做了一個SNAT,也就是源地址轉換,將來自172.16.10.0/24的地址轉換為10.0.0.5。

有這幾條規則,一個簡單的nat路由器就實現了。這時你可以將允許訪問的ip或網段添加至FORWARD鏈,他們就能訪問internet了。

iptables -A FORWARD -s 172.16.10.10 -j ACCEPT # 允許單個地址 或者如下命令

iptables -A FORWARD -s 172.16.10.0/24 -j ACCEPT # 允許該網段

比如我想讓172.16.10.10這個地址訪問internet,那么你就加如上的命令就可以了。

3、保存iptables規則

iptables-save > /etc/sysconfig/iptables

  

4.4. 內部服務器node01測試

[[email protected] ~]# ping www.baidu.com # 查看是否可以ping通

PING www.a.shifen.com (180.97.33.108) 56(84) bytes of data.

64 bytes from 180.97.33.108 (180.97.33.108): icmp_seq=1 ttl=127 time=43.4 ms

64 bytes from 180.97.33.108 (180.97.33.108): icmp_seq=2 ttl=127 time=42.6 ms

64 bytes from 180.97.33.108 (180.97.33.108): icmp_seq=3 ttl=127 time=42.1 ms

^C

--- www.a.shifen.com ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 2005ms

rtt min/avg/max/mdev = 42.114/42.735/43.420/0.561 ms

[[email protected] ~]#

[[email protected] ~]# telnet www.baidu.com 80 # telnet 是否可行

Trying 112.34.112.40...

Connected to www.baidu.com.

Escape character is '^]'.

  

5. 端口轉發

5.1. 網絡架構

5.2. 端口轉發需求介紹

內部機器1個網絡接口

Lan內web server: 172.16.10.10:80

網關2個網絡接口

Lan口:172.16.10.5/24 eth0

Wan口:10.0.0.5/24 eth1

目的:對內部server進行端口轉發,實現internet 10.0.0.8(網段:10.0.0.0/24)用戶【模擬外網機器】訪問內網服務器172.16.10.10:80。

5.3. 網關服務器操作

1、網關機器開啟linux的轉發功能

[[email protected] ~]# tail /etc/sysctl.conf # 添加如下內容

…………

net.ipv4.ip_forward = 1

[[email protected] ~]# sysctl -p # 生效

  

2、網關機器iptables操作

iptables -P FORWARD DROP

將FORWARD鏈的策略設置為DROP,這樣做的目的是做到ip的控制,你允許哪一個訪問就可以增加一個規則,不在規則中的ip將無法訪問。

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

這條規則規定允許任何地址到任何地址的確認包和關聯包通過。一定要加這一條,否則你只允許lan IP訪問沒有用。

iptables -t nat -A PREROUTING -d 10.0.0.5 -p tcp --dport 80 -j DNAT --to 172.16.10.10:80

如果你要把訪問 10.0.0.5:80 的數據包轉發到Lan內web server,用上面的命令。

好了,命令完成了,端口轉發也做完了,本例能不能轉發呢?不能,為什么呢?我下面分析一下。

本例中我們的FORWARD策略是DROP。那么也就是說,沒有符合規則的包將被丟棄,不管內到外還是外到內。因此,我們需要加入下面的規則。

iptables -A FORWARD -d 172.16.10.10 -p tcp --dport 80 -j ACCEPT

3、保存iptables規則

iptables-save > /etc/sysconfig/iptables

  

5.4. 操作驗證

1、在內部服務器監聽80端口

## xshell標簽1操作

[[email protected] ~]# nc -l 80 # 保持持續監聽

## xshell標簽2操作

[[email protected] ~]# netstat -lntup

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 808/rpcbind

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1971/nc ### 可見80端口已經監聽成功

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1099/sshd

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1355/master

  

2、在外網服務器Telnet

[[email protected] ~]$ telnet 10.0.0.5 80

Trying 10.0.0.5...

Connected to 10.0.0.5.

Escape character is '^]'.

^]

telnet> quit

Connection closed.

由上可知,外網服務器(10.0.0.8)訪問內部服務器(172.16.10.10:80)成功。




小編推薦:欲學習電腦技術、系統維護、網絡管理、編程開發和安全攻防等高端IT技術,請 點擊這里 注冊賬號,公開課頻道價值萬元IT培訓教程免費學,讓您少走彎路、事半功倍,好工作升職加薪!

本文出自:https://www.toutiao.com/a6827656522307207692/

免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!


鮮花

握手

雷人

路過

雞蛋

相關閱讀

最新評論

 最新
返回頂部
洗衣店赚钱联系澳洁 重庆时时专家在线人工计划 股票行情软件 股票分析报告3000字 2020年最新 如何买股票新手入门 江苏11选5走势图表结果 排列三和值尾遗漏值尾 理财平台被骗十多万能找回来吗 幸运飞艇就是个骗局 930好彩十码三期必中一期 浙江11选5有什么问题