計算機網路:基於iptalbes的SANT和DNAT|docker的服務釋出專案
阿新 • • 發佈:2021-08-14
1.實驗環境
我們需要準備三臺linux系統,一臺作為路由器機route,其它為客戶機client-1、client-2
主機改名
hostnamectl set-hostname 主機名
2.網路拓撲圖
3.三臺機器的IP地址配置
進入centos7的網絡卡配置檔案目錄
cd /etc/sysconfig/network-scripts/
route機IP地址配置
ens33:
ens37:
client-1IP地址配置
ens33:
client-2IP地址配置
ens33:
centos7的網絡卡過載命令
ifup 網絡卡名
ifup ens33
配置完後客戶機ping閘道器 成功我們配置完成
ping 192.168.17.254
4.連線到xshell方便操作
用管理員身份開啟cmd
新增路由表
route add 192.168.17.0/24 192.168.0.100 前者為目標網段 後者為下一跳地址,即路由器機的IP地址
4.開啟route機的路由功能
關閉三臺機器的firewall和selinux服務(皆為臨時修改,建議永久修改)
systemctl stop firewalld setenforce 0
開啟路由功能
echo 1 >/proc/sys/net/ipv4/ip_forward
5.實現SANT策略(區域網主機共享單個公網ip地址接入Internet)
#清除filter表和nat表裡的防火牆規則 iptables -F iptables -t nat -F #SNAT策略 #第一種 iptables -t nat -A POSTROUTING -s 192.168.17.0/24 -o ens33 -j SNAT --to-source 192.168.0.100 #第二種 iptables -t nat -A POSTROUTING -s 192.168.17.0/24 -o ens33 -j MASQUERADE
到這一步我們發現客戶機可以ping通Internet
6.為docker的服務釋出建立環境
開啟docker服務(linux裸機沒有安裝這個docker,需自行安裝)
systemctl start docker
下載映象建立容器並執行它
#客戶機1 #我運行了nginx和mysql的容器 docker run --name sc-nginx-1 -d -p 80:80 nginx #注意需關閉佔用客戶機3306埠的資料庫服務,否則會衝突 docker run --name sc-mysql-1 -e MYSQL_ROOT_PASSWORD='123' -d -p 3306:3306 mysql:5.7.35
#客戶機2 #這臺機器我們只起mysql的容器
#注意這臺機器把客戶機3307埠對映到容器的3306埠 docker run --name sc-mysql-2 -e MYSQL_ROOT_PASSWORD='123' -d -p 3307:3306 mysql:5.7.35
7,實現DNAT策略(將內網的伺服器釋出到Internet)
#DNAT策略 #dnat web iptables -t nat -A PREROUTING -i ens33 -d 192.168.0.100 -p tcp --dport 80 -j DNAT --to-destination 192.168.17.1:80 #dnat mysql 192.168.17.1 iptables -t nat -A PREROUTING -i ens33 -d 192.168.0.100 -p tcp --dport 3306 -j DNAT --to-destination 192.168.17.1:3306 #dnat mysql 192.168.17.2 iptables -t nat -A PREROUTING -i ens33 -d 192.168.0.100 -p tcp --dport 3307 -j DNAT --to-destination 192.168.17.2:3306
8,在其他的機器上測試釋出的web和MySQL服務,使用curl和chrome,SQLyog的測試工具進行測試