亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

VMware實(shí)現(xiàn)iptables NAT及端口映射

1. 前言

本文只講解實(shí)戰(zhàn)應(yīng)用,不會(huì)涉及原理講解。如果想要了解iptables的工作流程或原理可參考如下博文。

具體操作是在PC機(jī)的VMware虛擬機(jī)上進(jìn)行的,因此涉及的地址都是內(nèi)網(wǎng)IP。在實(shí)際工作中也是一樣的操作流程,只需要把涉及外網(wǎng)的地址改為公網(wǎng)IP即可。

 

1.1. 為什么有這篇文章?

原因是在日常工作中,我們都會(huì)在自己的電腦上安裝VMware虛擬機(jī),并由此實(shí)現(xiàn)一些業(yè)務(wù)系統(tǒng)【如:LNMP】或模擬線上的網(wǎng)絡(luò)環(huán)境等。

而本文模擬的就是IDC機(jī)房或辦公網(wǎng)的環(huán)境。機(jī)房?jī)?nèi)網(wǎng)服務(wù)器不能上外網(wǎng),只能通過(guò)網(wǎng)關(guān)服務(wù)器上外網(wǎng)。而外網(wǎng)服務(wù)器想要訪問(wèn)機(jī)房?jī)?nèi)部的服務(wù)器,也只能通過(guò)網(wǎng)關(guān)服務(wù)器轉(zhuǎn)發(fā)實(shí)現(xiàn)訪問(wèn)。

 

2. iptables表和鏈的工作流程

VMware實(shí)現(xiàn)iptables NAT及端口映射

 

 

2.1. 常用操作

## 清空所有規(guī)則【默認(rèn)是filter表】

iptables -F

iptables -X

iptables -Z

iptables -t nat -F

iptables -t nat -X

iptables -t nat -Z

## 查看規(guī)則

iptables -nL

iptables -nL -t nat

## 刪除指定表指定鏈的指定行數(shù)據(jù)

iptables -t nat -D POSTROUTING 1

  

 

3. 涉及虛擬機(jī)網(wǎng)絡(luò)設(shè)置

3.1. 內(nèi)部服務(wù)器node01網(wǎng)絡(luò)設(shè)置

3.1.1. 內(nèi)網(wǎng)設(shè)置【只有一個(gè)網(wǎng)卡】

VMware實(shí)現(xiàn)iptables NAT及端口映射

 

備注:

使用LAN區(qū)段,那么本機(jī)登錄該虛擬機(jī)也不行,也ping不通,不在同一個(gè)網(wǎng)段不能互訪。只能通過(guò)網(wǎng)關(guān)服務(wù)器ssh跳轉(zhuǎn)登錄訪問(wèn)。

 

eth0配置:

[root@InnerNode01 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. 網(wǎng)關(guān)服務(wù)器網(wǎng)絡(luò)設(shè)置

3.2.1. 內(nèi)網(wǎng)設(shè)置

VMware實(shí)現(xiàn)iptables NAT及端口映射

 

備注:

網(wǎng)關(guān)服務(wù)器的內(nèi)網(wǎng)地址和內(nèi)部服務(wù)器的地址在同一個(gè)網(wǎng)段。因此他們之間可以互訪。

 

eth0配置:

[zhang@gateway01 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. 外網(wǎng)設(shè)置【模擬的公網(wǎng)】

VMware實(shí)現(xiàn)iptables NAT及端口映射

 

eth1配置:

[root@gateway01 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. 外網(wǎng)服務(wù)器設(shè)置

3.3.1. 外網(wǎng)設(shè)置【只有一個(gè)網(wǎng)卡】

VMware實(shí)現(xiàn)iptables NAT及端口映射

 

eth0配置:

[root@internet01 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. 簡(jiǎn)單的NAT路由器

4.1. 網(wǎng)絡(luò)架構(gòu)

VMware實(shí)現(xiàn)iptables NAT及端口映射

 

 

4.2. NAT需求介紹

網(wǎng)關(guān)2個(gè)網(wǎng)絡(luò)接口

Lan口: 172.16.10.5/24 eth0

Wan口: 10.0.0.5/24 eth1

目的:實(shí)現(xiàn)內(nèi)網(wǎng)中的節(jié)點(diǎn)服務(wù)器node01 IP:172.16.10.10(網(wǎng)段:172.16.10.0/24)可控的訪問(wèn)internet。

 

4.3. 網(wǎng)關(guān)服務(wù)器操作

1、網(wǎng)關(guān)機(jī)器開(kāi)啟linux的轉(zhuǎn)發(fā)功能

[root@gateway01 ~]# tail /etc/sysctl.conf # 添加如下內(nèi)容

…………

net.ipv4.ip_forward = 1

[root@gateway01 ~]# sysctl -p # 生效

  

2、網(wǎng)關(guān)機(jī)器iptables操作

iptables -P FORWARD DROP

將FORWARD鏈的策略設(shè)置為DROP,這樣做的目的是做到對(duì)內(nèi)網(wǎng)ip的控制,你允許哪一個(gè)訪問(wèn)internet就可以增加一個(gè)規(guī)則,不在規(guī)則中的ip將無(wú)法訪問(wèn)internet。

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

這條規(guī)則規(guī)定允許任何地址到任何地址的確認(rèn)包和關(guān)聯(lián)包通過(guò)。一定要加這一條,否則你只允許lan IP訪問(wèn)沒(méi)有用。

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

這條規(guī)則做了一個(gè)SNAT,也就是源地址轉(zhuǎn)換,將來(lái)自172.16.10.0/24的地址轉(zhuǎn)換為10.0.0.5。

 

有這幾條規(guī)則,一個(gè)簡(jiǎn)單的nat路由器就實(shí)現(xiàn)了。這時(shí)你可以將允許訪問(wèn)的ip或網(wǎng)段添加至FORWARD鏈,他們就能訪問(wèn)internet了。

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

iptables -A FORWARD -s 172.16.10.0/24 -j ACCEPT # 允許該網(wǎng)段

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

 

3、保存iptables規(guī)則

iptables-save > /etc/sysconfig/iptables

  

4.4. 內(nèi)部服務(wù)器node01測(cè)試

[root@InnerNode01 ~]# 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

[root@InnerNode01 ~]#

[root@InnerNode01 ~]# telnet www.baidu.com 80 # telnet 是否可行

Trying 112.34.112.40...

Connected to www.baidu.com.

Escape character is '^]'.

  

 

5. 端口轉(zhuǎn)發(fā)

5.1. 網(wǎng)絡(luò)架構(gòu)

VMware實(shí)現(xiàn)iptables NAT及端口映射

 

 

5.2. 端口轉(zhuǎn)發(fā)需求介紹

內(nèi)部機(jī)器1個(gè)網(wǎng)絡(luò)接口

Lan內(nèi)web server: 172.16.10.10:80

 

網(wǎng)關(guān)2個(gè)網(wǎng)絡(luò)接口

Lan口:172.16.10.5/24 eth0

Wan口:10.0.0.5/24 eth1

目的:對(duì)內(nèi)部server進(jìn)行端口轉(zhuǎn)發(fā),實(shí)現(xiàn)internet 10.0.0.8(網(wǎng)段:10.0.0.0/24)用戶【模擬外網(wǎng)機(jī)器】訪問(wèn)內(nèi)網(wǎng)服務(wù)器172.16.10.10:80。

 

5.3. 網(wǎng)關(guān)服務(wù)器操作

1、網(wǎng)關(guān)機(jī)器開(kāi)啟linux的轉(zhuǎn)發(fā)功能

[root@gateway01 ~]# tail /etc/sysctl.conf # 添加如下內(nèi)容

…………

net.ipv4.ip_forward = 1

[root@gateway01 ~]# sysctl -p # 生效

  

2、網(wǎng)關(guān)機(jī)器iptables操作

iptables -P FORWARD DROP

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

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

這條規(guī)則規(guī)定允許任何地址到任何地址的確認(rèn)包和關(guān)聯(lián)包通過(guò)。一定要加這一條,否則你只允許lan IP訪問(wèn)沒(méi)有用。

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

如果你要把訪問(wèn) 10.0.0.5:80 的數(shù)據(jù)包轉(zhuǎn)發(fā)到Lan內(nèi)web server,用上面的命令。

 

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

本例中我們的FORWARD策略是DROP。那么也就是說(shuō),沒(méi)有符合規(guī)則的包將被丟棄,不管內(nèi)到外還是外到內(nèi)。因此,我們需要加入下面的規(guī)則。

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

 

3、保存iptables規(guī)則

iptables-save > /etc/sysconfig/iptables

  

5.4. 操作驗(yàn)證

1、在內(nèi)部服務(wù)器監(jiān)聽(tīng)80端口

## xshell標(biāo)簽1操作

[root@InnerNode01 ~]# nc -l 80 # 保持持續(xù)監(jiān)聽(tīng)

## xshell標(biāo)簽2操作

[root@InnerNode01 ~]# 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 ### 可見(jiàn)80端口已經(jīng)監(jiān)聽(tīng)成功

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、在外網(wǎng)服務(wù)器Telnet

[zhang@internet01 ~]$ telnet 10.0.0.5 80

Trying 10.0.0.5...

Connected to 10.0.0.5.

Escape character is '^]'.

^]

telnet> quit

Connection closed.

由上可知,外網(wǎng)服務(wù)器(10.0.0.8)訪問(wèn)內(nèi)部服務(wù)器(172.16.10.10:80)成功。

 

 

分享到:
標(biāo)簽:VMware
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定