簡易NAT server建置

NAT(Network Address Translation) 的功能簡單來說,就是當自己只能使用一個對外公開IP, 但有很多台設備需要IP聯網時,可以將私人IP(192.168.x.x)轉換成自己擁有的對外IP來使用連上網,也就是共用一個對外IP。 而有一些人擁有對外IP足夠,還是用NAT的功能,是為了增加一點安全性避免電腦能從外部直連被駭入, 但是這個保護措施其實能使用prxoychain4解掉。以下示範是以ufw為主,或者用iptables也是可以辦到的。

使用環境

OS:ubuntu 22.04 LTS
防火牆:ufw

防火牆簡易指令

1
2
3
4
ufw status 檢查ufw狀態
ufw enable 啟動ufw
ufw disable 關閉ufw
ufw reload 重載ufw rule

網路設定(針對20.04以後的。如果安裝時,有設定好就可以跳過)

1
2
3
vim /etc/netplan/01-network-manager-all.yaml

vim /etc/netplan/*.yaml

這裡可能不一定是01有時候是00以netplan目錄底下出現檔案名稱為主

01-network-manager-all.yaml的檔案設定如下(注意縮排)

1
2
3
4
5
6
7
8
9
10
network:
Version: 2
Renderer: NetworkManager/ networkd
ethernets:
DEVICE_NAME: #介面卡名稱ubuntu通常會是ens18 or ens 33...之類的,可以使用ifconfig或ip addr指令來查看。
Dhcp4: yes/no #如果沒有使用DHCP 此行可以省略
Addresses: [IP_ADDRESS/NETMASK] #192.168.0.1/24
Gateway: GATEWAY
Nameservers:
Addresses: [NAMESERVER_1, NAMESERVER_2]

編輯完後wq存檔離開,接者使其設定生效

1
netplan --debug apply

NAT 設定

首先要編輯的檔案有這三個sysctl.conf、ufw和before.rules vim /etc/sysctl.conf 將該文件內容的net.ipv4.ip_forward=1取消註解或新增這條 vim /etc/default/ufw DEFAULT_FORWARD_POLICY="DROP" 找到這行將其從DROP改成ACCEPT vim etc/ufw/before.rules

1
2
3
4
5
6
7
8
*nat
:POSTROUTING ACCEPT [0:0]

# Forward traffic through eth0 - Change to public network interface
-A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT
最後再重新加載/啟動ufw防火牆。

這裡不需設定允許IP連入的設定。