最近碰到了這個(gè)問題,所以將解決方案記錄一下.
我在vmware中安裝了deepin 15.4,并且配置了兩張網(wǎng)卡,一張連接到了vmnet8,即nat模式,所以這張網(wǎng)卡可以連接外網(wǎng),它采用dhcp的方式獲取網(wǎng)絡(luò)地址,它的地址為192.168.140.132
,子網(wǎng)掩碼為255.255.255.0
,網(wǎng)關(guān)為192.168.140.2
,為了實(shí)現(xiàn)域名解析,還需要配置一個(gè)dns服務(wù)器,這里選用阿里的223.5.5.5
. 此外,為了做snat的實(shí)驗(yàn),我將另外一張網(wǎng)卡連接到了vmnet1,也就是僅主機(jī)模式,這張網(wǎng)卡配置的地址為10.0.0.130
.這個(gè)模式相當(dāng)于配置了一個(gè)局域網(wǎng),我們可以用這個(gè)網(wǎng)絡(luò)充當(dāng)內(nèi)網(wǎng).此外,可以將其他虛擬機(jī)連入vmnet1,這樣的話,一個(gè)內(nèi)網(wǎng)就搭建完成了.
在這期間遇到了一些問題.
解決網(wǎng)絡(luò)不穩(wěn)定
首先是,外網(wǎng)連接不穩(wěn)定,兩張網(wǎng)卡導(dǎo)致網(wǎng)絡(luò)時(shí)斷時(shí)續(xù),然而關(guān)閉10
網(wǎng)段的網(wǎng)卡之后,網(wǎng)絡(luò)恢復(fù)正常.
一般來說,不應(yīng)該出現(xiàn)這樣的問題的,網(wǎng)上查了一下,解決方案是這樣的,編輯/etc/net/interfaces
,我的配置文件如下:
auto lo
iface lo inet loopback
auto ens33
# 不使用dhcp服務(wù)
iface ens33 inet static
address 192.168.140.132
netmask 255.255.255.0
gateway 192.168.140.2
dns-nameservers 223.5.5.5
上面的做法其實(shí)就是不使用dhcp
服務(wù),自己手工配置網(wǎng)關(guān)等信息.配置完成之后,重新啟動網(wǎng)卡:
sudo /etc/init.d/networking restart
此時(shí),網(wǎng)絡(luò)恢復(fù)順暢.
配置SNAT
snat的配置十分簡單,關(guān)于原理什么的,推薦去看一下鳥哥的linux私房菜,服務(wù)器架設(shè)篇這本書.具體而言,就是一個(gè)命令就可以了:
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o ens33 -j SNAT --to-source 192.168.140.132
命令的意思很簡單,就是對于從10.0.0.0/24這個(gè)網(wǎng)段發(fā)送過來的數(shù)據(jù),如果需要轉(zhuǎn)發(fā)的話,將數(shù)據(jù)包中的源地址轉(zhuǎn)化為192.168.140.132
.
對了,在執(zhí)行這個(gè)命令之前,還要保證ip_forward功能開啟,只有這個(gè)功能開啟了,你的機(jī)器才會像網(wǎng)關(guān)一樣轉(zhuǎn)發(fā)數(shù)據(jù),否則的話,對于目的地不是本機(jī)的數(shù)據(jù),它會直接丟棄.
至于如何開啟,我們需要用 sudo 模式在 shell 或終端下執(zhí)行下面的命令。
sudo -s # 切換到root用戶
echo 1 > /proc/sys/net/ipv4/ip_forward # 開啟ip forward
上面的命令能馬上啟用ip轉(zhuǎn)發(fā),但只是臨時(shí)的,直到下一次重啟。要永久啟用,我們需要使用我們慣用的文本編輯器打開 /etc/sysctl.conf 文件,并且增加net.ipv4.ip_forward = 1到文件.