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,可從其他主機如 deyu.wang 連線 http://kvm5.deyu.wang:5423 測試是否 port forwarding?完整測試請參考Port Forwarding 測試[*]
    [root@dyw219 ~]# curl http://kvm5.deyu.wang:5423
    port forwarding test
    

  4. 當然也可以轉發到不同主機的 port,例如將進入本機 5423 port 的封包,轉發到主機 192.168.122.7 的 80 port。
    [root@kvm5 ~]# firewall-cmd --permanent --zone=public \
    --add-forward-port=port=5423:proto=tcp:toport=80:toaddr=192.168.122.7
    success
    [root@kvm5 ~]# firewall-cmd --permanent --zone=public --list-forward-ports 
    port=5423:proto=tcp:toport=80:toaddr=192.168.122.7
    
  5. 另一例子為使用 rich rules 轉發來自 192.168.122.0/24 到 5423/tcp port 的封包,到 firewall 主機上的 80/tcp port。
    [root@kvm5 ~]# firewall-cmd --permanent --zone=public --add-rich-rule=\
    'rule family=ipv4 source address=192.168.122.0/24 forward-port \
    port=5423 protocol=tcp to-port=80'
    success
    [root@kvm5 ~]# firewall-cmd --permanent --zone=public --list-rich-rules 
    rule family="ipv4" source address="192.168.122.0/24" forward-port 
    port="5423" protocol="tcp" to-port="80"
    



2017-11-30