資訊人筆記

Work hard, Have fun, Make history!

使用者工具

網站工具


operating_system:server:nat_server

NAT Server

0x00 前言

常常因為作業, 實驗, 或個人需求架設伺服器,但面臨的一個問題就是手上沒有 public IP,該如何是好

這時我們就會需要 NAT Server 來幫助我們將 private network 轉到 public network 啦

本篇介紹在 VMware Esxi 上用 FreeBSD+pf 架設一台 NAT Server 為 gateway,讓其餘虛擬機可已不需要拿 public 連上網路

0x01 架構與需求

  • NAT Server 本身要帶兩張網卡,一張拿 public IP 接到對外網路,一張拿 private IP 接對內網路。下圖 VM network 為對外網路 switch,ksh_NAT 為對內網路 switch
  • controller 和 network 則是 LAN 中的兩台機器,都拿中的兩台機器,都拿 private IP


0x02 Setting

  • /etc/rc.conf 中設置好兩張網卡的 IP
rc.conf
ifconfig_em0="inet 140.113.24.188 netmask 255.255.255.224"
defaultrouter="140.113.24.161"
 
ifconfig_em1="inet 192.168.1.253 netmask 255.255.255.0"
 
pf_enable="YES"
pflog_enable="YES"
gateway_enable="YES"
  • 重啟網路,這邊如果用 ssh 可能會斷線
# /etc/rc.d/netif restart
# /etc/rc.d/routing restart
  • 接著設定 /etc/pf.conf
pf.conf
ext_if="em0"
int_if="em1"
lan_net="192.168.1.0/24"
 
table <ssh_bruteforce> persist
table <trusted> {}
 
set skip on lo0
 
scrub in all
 
nat on $ext_if from $lan_net to any -> 140.113.24.188
no nat on $ext_if from !$lan_net to any
 
block drop in quick on $ext_if from <ssh_bruteforce> to any
pass in quick on $ext_if from <trusted> to any
  • 然後也需要在前面的 rc.conf 加入 pf_enable 和 gatewat_enable,讓 pf 和 gateway 開機啟動

gateway_enable=“YES” 可用下列指令在不重開機下執行

# sysctl net.inet.ip.forwarding=1
  • 接著重啟 pf
# service pf restart

這樣一台 NAT Server 基本就能運作了

0x03 參考資料

operating_system/server/nat_server.txt · 上一次變更: 127.0.0.1