繼上次分內外網的需求完成後,內網的主機也需要可以連到外網才能安裝相關的套件,所以今天我們要將能對外的那台主機當成內網的gateway 透過 NAT 設定就可以讓內網的主機也可以連到外網。
這邊先解釋一下一些相關的專有名詞
NAT 就是IP轉發,當gateway 那台主機收到內網的ip的時候會把發出去的封包轉成對外封包,反之收到外網的封包後會再轉回內網ip然後傳送給內網相對應ip的主機。
DNS 就是把網堿名稱轉成ip的服務 現在常用的有google 8.8.8.8 / 8.8.4.4 還有中華電信的 168.95.1.1 / 168.95.192.1
DHCP 就是自動分配ip的主機,從設定好的ip池中分配ip給主機,當主機用完後再交回ip池中等待下一次的分配。
gateway 那台主機的網路設定
1 |
nano /etc/netplan/01-network-manager-all.yaml |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# Let NetworkManager manage all devices on this system network: version: 2 # renderer: NetworkManager ethernets: eno1: addresses: [220.99.16.33/24] gateway4: 220.99.16.254 nameservers: addresses: [8.8.8.8,8.8.4.4] dhcp4: no enx33: addresses: [192.168.61.195/24] gateway4: 192.168.61.255 dhcp4: no |
- NAT 配置
1 2 3 4 |
sudo iptables -A FORWARD -o eno1 -i enx33 -s 192.168.61.195/24 -m conntrack --ctstate NEW -j ACCEPT sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT sudo iptables -t nat -F POSTROUTING sudo iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE |
這邊我略過 重開機自動配置iptables的部份,有需求請點選 參考網址。
- 路由轉發
1 2 3 4 5 6 7 |
nano /etc/sysctl.conf # net .ipv4.ip_forward=1 修改後 net .ipv4.ip_forward=1 存檔 |
- 啟用路由
1 |
sudo sysctl -p |
- 安裝 dnsmasq
1 |
apt install dnsmasq |
- 備份 dnsmasq 配置文件
1 |
sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf-backup |
- 編輯 dnsmasq 配置文件
1 2 3 4 |
nano /etc/dnsmasq.conf interface= enx33 dhcp-range= 192.168.61.1,192.168.61.194,72h |
- 重啟 dnsmasq
1 |
sudo /etc/init.d/dnsmasq restart |
client 那台主機的網路設定
- 編輯網路設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
nano /etc/netplan/01-network-manager-all.yaml # Let NetworkManager manage all devices on this system network: version: 2 # renderer: NetworkManager ethernets: eno1: addresses: [192.168.61.197/24] gateway4: 192.168.61.195 nameservers: addresses: [8.8.8.8,8.8.4.4] dhcp4: no |
說明:主要就是 gateway4 要設成gateway 那台主機的ip,還有dns要設定好。
如果你要自動取得ip 請將 dhcp4: yes ,然後拿掉 addresses: [192.168.61.197/24] 這段
- 載入新的網路設定
1 |
sudo netplan apply |