Centos7 firewalld實現內網訪問外網

應用場景:項目作遷移,除了前段的nginx服務器要用外網,其餘的機器都內網;node

實現方法有三種:nginx

1。nginx正向代理{不知道有啥優勢,缺點是不支持https}vim

2。squid正向代理{比nginx好點,http和https都支持;缺點是不支持ping 域名這種形式(後端項目訪問外網的時候各類超時)}後端

3。防火牆實現nat路由轉發{目前來看是最簡單的,因此推薦使用這種的}centos

 

 

 1和2的部署及使用已經在本博客中描述tomcat

#####如今使用第三種方法來實現{推薦直接使用第三種方法} #####服務器

 

# 服務端ssh

 

systemctl start firewalld.service #關閉其餘防火牆,而後開啓firewalld
firewall-cmd --add-masquerade --permanent #內部主機依靠firewalld轉發上網
firewall-cmd --reload #生效
 

# 客戶端tcp

vim /etc/sysconfig/network-scripts/ifcfg-eth0
   #修改默認網關爲服務端的外網ip地址
cat /etc/resolv.conf #添加dns
# Generated by NetworkManager
nameserver 223.5.5.5

 

 

# 測試 測試

ping ng www.baidu.com

 

                                                            ######如下內容是記錄一些尚未用到的功能 ######

############################################################################
1.關閉其餘防火牆,而後開啓firewalld
[root@ci-node1 ~]# systemctl start firewalld
[root@ci-node1 ~]# systemctl enable firewalld
############################################################################
1.經常使用的區域
trusted 容許全部的數據包流入與流出
public 拒絕流入的流量,除非與流出的流量相關;  而若是流量與ssh、dhcpv6-client服務相關,則容許流量
drop 拒絕流入的流量,除非與流出的流量相關
2.查看默認區域
[root@ci-node1 ~]# firewall-cmd --get-default-zone
public
3.查看活躍區域
[root@ci-node1 ~]# firewall-cmd --get-active-zone
public
  interfaces: eth0 eth1
  
############################################################################
4.使用firewalld中各個區域規則結合
1.設定默認區域爲drop(拒絕全部)
2.設置白名單IP訪問,將源10.0.0.0/24網段加入trusted區域
1.修改默認的區域
[root@ci-node1 ~]# firewall-cmd --set-default-zone=drop
success
[root@ci-node1 ~]# firewall-cmd --get-default-zone
drop
2.將10.0.0.0/24網段主機都加入白名單
[root@ci-node1 ~]# firewall-cmd --add-source=10.0.0.0/24 --zone=trusted --p
ermanent
3.重啓生效
[root@ci-node1 ~]# firewall-cmd --reload
4.檢查配置
[root@ci-node1 ~]# firewall-cmd --get-active-zone
drop
  interfaces: eth0 eth1
trusted
  sources: 10.0.0.0/24
5.刪除添加過的配置
[root@ci-node1 ~]# firewall-cmd --remove-source=10.0.0.0/24 --zone=trusted --permanent
[root@ci-node1 ~]# firewall-cmd  --reload
[root@ci-node1 ~]# firewall-cmd  --get-active-zone
drop
  interfaces: eth0 eth1
trusted
  sources: 192.168.11.0/24
刪除配置的第二種方式,找到對應的zones區域進行刪除
 /etc/firewalld/zones/
6.修改區域
[root@ci-node1 ~]# firewall-cmd --set-default-zone=public 
[root@ci-node1 ~]# firewall-cmd --get-default-zone 
public
############################################################################
1.配置防火牆, 訪問80/tcp 80/udp端口的流量策略設置爲永久容許, 並當即生效
[root@ci-node1 ~]# firewall-cmd --add-port=80/tcp --permanent
[root@ci-node1 ~]# firewall-cmd --reload
2.查看開放的端口
[root@ci-node1 ~]# firewall-cmd --list-ports
80/tcp 80/udp
3.修改配置文件添加
/etc/firewalld/zones/public.xml
4.移除端口
[root@ci-node1 ~]# firewall-cmd --remove-port=80/tcp --permanent
[root@ci-node1 ~]# firewall-cmd --reload
############################################################################
1.添加服務方式--add-service 添加  --remove-service 移除
[root@ci-node1 ~]# firewall-cmd --add-service=http --add-service=https
[root@ci-node1 ~]# firewall-cmd --list-service
ssh dhcpv6-client http https
2.存放firewalld添加服務的模板文件
/usr/lib/firewalld/services/
3.自定義端口與服務關聯
[root@ci-node1 ~]# cd /usr/lib/firewalld/services/
[root@ci-node1 services]# cp http.xml tomcat.xml
[root@ci-node1 services]# firewall-cmd --reload
[root@ci-node1 services]# firewall-cmd --add-service=tomcat 
success
############################################################################
firewall-cmd --permanent --zone=<區域> --add-forward-port=port=<源端口號>:proto=<協議>:toport=<目標端口號>:toaddr=<目標IP地址>
1.--add-forward-port=port    # 監聽本地firewalld哪一個端口,哪一個協議
2.toport=<目標端口號>:toaddr=<目標IP地址>    # 轉發給哪臺主機的哪一個端口
1.轉發本機firewalld 555/tcp端口的流量至22/tcp端口,要求當前和長期有效
[root@ci-node1 ~]# firewall-cmd --permanent --zone=public --add-forward-port=port=5555:proto=tcp:toport=22:toaddr=10.0.0.11
success
[root@ci-node1 ~]# firewall-cmd --reload
success
#####修改ssh配置 將listen 44443 上防火牆開放44443端口,開啓ssh服務優先級
2.若是須要將本地的10.0.0.11:6666端口轉發至後端10.0.0.12:22端口
#1.開啓IP假裝
[root@Firewalld ~]# firewall-cmd --add-masquerade --permanent
#2.配置轉發
[root@Firewalld ~]# firewall-cmd --permanent --zone=public --add-forward-port=port=6666:proto=tcp:toport=22:toaddr=10.0.0.12
#3.重啓firewalld
[root@Firewalld ~]# firewall-cmd --reload
10.0.0.11 ->10.0.0.12:22 通
10.0.0.1 -》10.0.0.11:6666 -》10.0.0.12:22
3.內部主機依靠firewalld轉發上網
[root@ci-node1 ~]# firewall-cmd --add-masquerade --permanent
success
[root@ci-node1 ~]# firewall-cmd --reload
success
4.客戶端測試
1.指向firewalld的網關
2.配置dns便可
  1.修改/etc/sysconfig/network-scripts/ifcfg-eth1-->指向firewalld做爲網關
  2.centos7重啓網卡方式 nmcli conn reload && nmcli down eth1 && nmcli conn up eth1
############################################################################
1.容許10.0.0.0/24網段中10.0.0.1主機訪問http服務, 其餘同網段主機沒法訪問,當前和永久生效
[root@ci-node1 ~]# firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=10.0.0.1/32 service name=http accept'
[root@ci-node1 ~]# firewall-cmd --reload
success
2.拒絕10.0.0.0/24網段中的10.0.0.12主機發起的22請求, 當前和永久生效
[root@ci-node1 ~]# firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=10.0.0.12/32 port port="22" protocol="tcp" drop'
[root@ci-node1 ~]# firewall-cmd --reload
success
3.將遠程10.0.0.1主機請求firewalld的5551端口,轉發至firewalld防火牆的22端口
[root@m01 ~]# firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=10.0.0.1/32 forward-port port=5551 protocol=tcp to-port=22'
[root@m01 ~]# firewall-cmd --reload
success
4.將遠程10.0.0.1主機請求firewalld的6661端口,轉發至後端主機10.0.0.12的22端口
[root@m01 ~]# firewall-cmd --add-masquerade --permanent
[root@m01 ~]# firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=10.0.0.1/32 forward-port port=6661 protocol=tcp to-port=22 to-addr=10.0.0.12'
success
[root@m01 ~]# firewall-cmd --reload
#################
firewalld區域
一個區域可以管理多個網卡
一個網卡只能對應一個區域
注意:每一個區域能夠配置不一樣的規則
firewalld端口放行和取消
firewall-cmd --add-port
firewall-cmd --remove-port
firewalld服務放行和取消(能夠自定義服務)
firewall-cmd --add-service
firewall-cmd --remove-service
firewalld端口轉發
1.本機轉發(不經常使用)
2.轉發後端(通常)
3.共享上網(較多)
firewalld富規則
1.精確匹配規則,根據設定的規則嚴格執行
針對:端口、服務、轉發
相關文章
相關標籤/搜索