next up previous contents
Next: *NAT 設定與測試 Up: Netfilter Previous: firewall rich rules   Contents


Masquerading and Port Forwarding

  1. 內網虛擬 IP 無法直接上網,必須靠 NAT 轉發 (Forwarding) 內部網路封包時偽裝 (Masquerading) 封包發送 IP 為可以連上網際網路的實體 IP。
    [root@kvm5 ~]# firewall-cmd --permanent --zone=public --add-masquerade 
    success
    [root@kvm5 ~]# firewall-cmd --permanent --zone=public --list-all
    public (default)
      interfaces: 
      sources: 
      services: dhcpv6-client ssh
      ports: 
      masquerade: yes
      forward-ports: 
      icmp-blocks: 
      rich rules:
    
  2. NAT 的另一項重要工作是 Port forwarding。Port forwarding 可以將 port 轉發到同台主機上不同的 port,例如將進入 5423 port 的封包,轉發到同一台主機上的 80 port。
    [root@kvm5 ~]# firewall-cmd --permanent --zone=public --add-forward-port=port=5423:proto=tcp:toport=80
    success
    [root@kvm5 ~]# firewall-cmd --reload 
    success
    [root@kvm5 ~]# firewall-cmd --list-forward-ports 
    port=5423:proto=tcp:toport=80:toaddr=
    
  3. 如果本機已架設 httpd,可從其他主機如 kvm7.deyu.wang 連線 http://kvm5.deyu.wang:5423 測試是否 port forwarding?kvm5 先安裝 httpd 服務,但一開始 repository 並未設定,所以要先設定 repository。
    [root@kvm5 ~]# vim /etc/yum.repos.d/dywang.repo
    [root@kvm5 ~]# cat /etc/yum.repos.d/dywang.repo 
    [dywang]
    name=De-Yu Wang
    baseurl=http://dywang.csie.cyut.edu.tw/centos7
    gpgcheck=0
    
  4. 安裝、啟動、設定開機啟動 httpd 服務。
    [root@kvm5 ~]# yum install httpd
    [root@kvm5 ~]# systemctl enable httpd.service 
    ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service'
    [root@kvm5 ~]# systemctl start httpd.service
    
  5. 寫一個簡單的網頁首頁。
    [root@kvm5 ~]# echo 'port forwarding test' > /var/www/html/index.html
    
  6. kvm7 連線 kvm5.deyu.wang 的 5423 port,被轉發到網頁的 80 port。
    [root@kvm7 ~]# curl http://kvm5.deyu.wang:5423
    port forwarding test
    



De-Yu Wang 2018-09-07