開啟內核路由轉發使內網機器通過Gnu/Linux上網
阿新 • • 發佈:2018-07-27
cep 轉換 gen 測試 tina 機器 flag ipv4 5.1 問題描述
內網客戶機器通過一臺Gnu/Linux服務器訪問互聯網。服務器的eth0網卡可以訪問互聯網,eth1網卡與內網相連。客戶端要通過該服務端訪問互聯網。
實驗環境
服務器: |
網卡 | IP | 子網掩碼 | 網關 |
---|---|---|---|---|
eth0 | 192.168.16.220 | 255.255.255.0 | 192.168.16.1 | |
eth1 | 192.168.15.222 | 255.255.255.0 | 192.168.15.1 |
客戶端:
網卡 | IP | 子網掩碼 | 網關 |
---|---|---|---|
eth0 | 192.168.15.111 | 255.255.255.0 | 192.168.15.222 |
服務器與客戶端的配置
服務器端的配置
查看服務器上的路由表信息,
# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.16.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.15.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1 0.0.0.0 192.168.16.1 0.0.0.0 UG 0 0 0 eth0
開啟服務器內核的路由轉發功能,使其具有路由功能
# echo 1 > /proc/sys/net/ipv4/ip_forward
# 或者使用下面的方式
# sysctl -w net.ipv4.ip_forward=1
# sysctl -p
最好修改/etc/sysctl.conf
配置文件,使其配置永久生效。
配置NAT規則
經過第二部分配置後,雖然可以ping相關的IP地址,但是內網主機還是無法上網。問題在於內網主機的IP地址是無法在公網上路由的。因此,需要轉換成Linux系統主機可以上網的IP(註:這裏我們之所以不說是公網IP,是因為Linux系統可以直接上外網的IP同樣是內網IP。但是該內網IP(192.168.16.220)已經通過一些機制,實際上同樣是NAT的方式,可以訪問外網了,因此我們只需將Host A的IP轉換成Linux系統eth0接口的IP即可)。
以下是我們配置的NAT規則:
# iptables -t nat -A POSTROUTING -s 192.168.15.0/24 -o eth0 -j SNAT --to-source 192.168.16.220
# iptables -A FORWARD -i eth1 -j ACCEPT
客戶端的配置
客戶端的設置比較簡單,客戶端的網關IP地址為服務器內網IP地址,DNS與服務器的一樣即可。
測試
如果客戶端可以ping的通www.baidu.com,則說明內網可以訪問互聯網。
開啟內核路由轉發使內網機器通過Gnu/Linux上網