其實在Linux下配置網關服務器很簡單,若是配置好以後出現沒法訪問外網的狀況,那麼能夠排查如下狀況:服務器
一、防火牆和iptables的服務關掉(firewalld、iptables)spa
二、清空iptables的規則(iptables -F、iptables -X、iptables -F -t nat、iptables -X -t nat)code
三、轉發開啓(/etc/sysctl.conf-> net.ipv4.ip_forward=1)blog
經過以上的配置通常能夠配置成功。ip
下面是實驗環境:table
說明一下,網關能夠兩個網卡,一樣也不必定須要兩個網卡,一張網卡也是能夠的。class
PC1:配置
eth0:192.168.104.12/255.255.255.0/192.168.104.1,DNS:8.8.8.8iptables
PC2:network
eth0:192.168.104.13/255.255.255.0/192.168.104.12,DNS:8.8.8.8
下面是實際配置:
PC1:
# 開啓轉發 echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf # 生效 sysctl -p # 配置iptables作SNAT,下面有兩種方式,推薦用第二種,比較清晰 # 1、使用MASQUERADE iptables -t nat -I POSTROUTING -j MASQUERADE # (不須要設置)能夠指定哪一個網卡 iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE # (不須要設置)也能夠指定具體的網段作SNAT iptables -t nat -I POSTROUTING -s 192.168.104.0/24 -j MASQUERADE # 2、(推薦這種)指明SNAT的具體IP iptables -t nat -I POSTROUTING -j SNAT --to-source 192.168.104.12 # (不須要設置)能夠指定哪一個網卡 iptables -t nat -I POSTROUTING -o eth0 -j SNAT --to-source 192.168.104.12 # (不須要設置)也能夠指定具體的網段作SNAT iptables -t nat -I POSTROUTING -s 192.168.104.0/24 -j SNAT --to-source 192.168.104.12
PC2:
此時只須要在/etc/sysconfig/network-script/ifcfg-eth0修改GATEWAY=192.168.104.12,也就是修改網關地址。
總結:
一、其實若是你時間過一張網卡的狀況時,那麼你會發現只要開啓了內核轉發功能以後不須要配置iptables也是能夠行的。
二、當兩張網卡是狀況,實體機,一張鏈接外網,一張內網鏈接交換機,再鏈接多個子PC,此時iptables就是必須的,且SNAT也必須爲外網網卡IP。