配置ubuntu搭建一個路由器

本教程用來實現利用一個PC機(Ubuntu14.04系統)實現路由器功能。

如果你有一臺擁有兩塊網卡的電腦的話,那麼你可以通過一些簡單的配置將這臺電腦變成一個具有強大潛能的路由器。你可以在這個路由器上建立簡單的NAT(Network Address Translation)功能,轉發數據或者實現代理服務等等許多其他的功能。這裏將介紹通過一些簡單的配置步驟將一個Ubuntu系統的PC機變成一臺路由器。

首先介紹一下需要準備的一些東西:

1、一臺Ubuntu系統的PC機(筆記本,臺式機均可)

2、兩個網卡(我用了一USB轉RJ45網線接口+筆記本內置網卡)

3、網絡連接(做這些當然還是爲了能夠通過電腦上網)

4、iptables的一些知識,這個可以查看我轉的一篇介紹iptables的博文

再次說明,我們需要電腦裝有兩塊網卡,其中一塊網卡連接在Internet上,我這裏連接Internet的網卡是eth0;另外一塊網卡連接即將搭建的內網,我這裏連接內網的網卡是eth1.希望呈現的效果是:HostA(192.168.6.3)<==>eth1<==>Ubuntu Gateway<==>eth0<==>Internet,下圖是整個系統搭建的框架:


從左到右的一些說明:

  • router:Host A通過這個路由器與Internet相連
  • eth0:連接到Internet的網絡適配器
  • Host A:Ubuntu系統的PC機
  • eth1:連接到內網的網絡適配器
  • switch:因爲不希望直接用網線連接Host A和Host B,中間通過這個交換機連接
  • eth0:Host B的連接到網絡的網絡適配器(Host B只需要一塊網卡就可以了)
接下來是一些具體的配置步驟:

首先是給各個網絡端口配置靜態IP,因爲我們這裏並沒有運行dhcpd,所以所有的網絡端口都需要手動配置一個靜態IP,對於端口IP的配置,既可以通過命令行配置,也可以通過修改網絡配置文件來配置,還可以通過桌面版本的網絡設置裏進行配置。通過命令行配置的話,下次再重新啓動電腦或者重啓網絡服務之後配置也就隨之失效了,而且在我的測試裏,過了一段時間之後,網絡又恢復了默認配置。接下來具體介紹下通過修改配置文件和桌面版本的網絡設置裏配置的方法。

(1)通過桌面版本的網絡設置進行網絡的配置

系統設置(System Settings)=>網絡(Network)=>選擇網絡端口=>選項(Options)


我這裏給eth1配置的IP爲192.168.6.1。


對於eth0,執行同樣的操作就可以了,從上面的系統結構圖可以看到我們的eth0通過一個路由器連接到Internet,這個路由器的網段爲192.168.1.1/24,所以我這裏給eth0配置的IP地址爲192.168.1.155。


上面都是針對Host A的兩塊網卡所配置的靜態IP,對於Host B同樣需要配置靜態IP,這裏我用的Host B是windows系統,配置的靜態IP如下:


這裏的默認網關和DNS服務器是需要寫上的,同時爲了網速的考慮,這裏的DNS服務器最好和前面的路由器上的保持一致,這個可以通過任意一臺通過該路由器接入Internet的設備上查詢,這裏就不贅述了。

(2)如果你想要通過更改網絡配置文件來配置網絡的話,那麼參見下面的步驟

1、打開一個終端(Ctrl+Alt+t)

2、更改相應的配置文件:

sudo vim /etc/network/interfaces

3、修改這個配置文件如下:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.1.155
netmask 255.255.255.0
gateway 192.168.1.1

auto eth1
iface eth1 inet static
address 192.168.6.1
netmask 255.255.255.0
gateway 192.168.6.1

注意上面的修改操作需要有root權限才能保存,同時修改完之後需要重啓網絡服務或者直接重啓電腦,上面的設置就會生效了。重啓網絡的命令爲:

sudo /etc/init.d/networking restart

注意這裏你可能不能通過interfaces這個文件來修改配置網絡,這個可能和你安裝了network-manager有關,刪除這個之後就可以通過更改interfaces來配置網絡了。

對於Host B,如果你也是ubuntu系統並且想通過配置文件來配置網絡的話,可以按照上面的步驟來,但是對於DNS服務器的配置在/etc/resolv.conf:

nameserver 210.45.240.99#這裏是我的DNS服務器地址,你可以配置成你能夠訪問的,比如說8.8.8.8

上面兩部分介紹了配置靜態IP地址的過程,接下來需要讓你的PC機能夠轉發IP數據包,Linux系統本身就有IP數據包轉發的功能,但是默認情況下是關閉的,你需要通過修改配置文件來啓動這個功能,修改/etc/sysctl.conf文件,將net.ipv4.ip_forward=1前面的註釋去掉。


再使用下面的命令來使上面的修改生效(當然你也可以重啓電腦):

sudo sysctl -p

上網看很多教程在這裏還加了一步:

sudo echo 1 > /proc/sys/net/ipv4/ip_forward

在你修改sysctl.conf並使之生效後會發現ip_forward這個文件中的0自動變成了1,不需要再通過這一步來改變。同時如果你沒有更改sysctl.conf的話,那麼你也沒辦法用這個命令來修改ip_forward裏的內容,你會發現怎麼改ip_forward裏的內容都是0.

搞定IP數據包轉發的問題,接下來就是添加路由表讓eth1和eth0能夠通信了,這個通過iptables來搞定。在終端中輸入以下命令:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

注意這裏是針對我的情況來寫的,你要注意eth0和eth1所連接的內網和外網的關係!關於這些命令的意思,可以參見iptables的一些說明,我也有轉一篇介紹iptables的博文:iptables簡單介紹。接下來保存這些規則:

iptables-save > /etc/iptables.rules

到這裏差不多也就完成了,接下來就是連接Host A和Host B測試一下了。

將Host A和Host B用網線連接起來,Host B的配置上面已經講過,下面是我在Host B上打開百度網頁的測試:



可以看到Host B通過Host A成功的接入了Internet。

我們這裏還都是通過靜態配置IP地址來完成整個實驗的,如果需要自動分配IP的話,需要在Host A上搭建一個dhcp服務器,我這就沒有去實驗了,有興趣的可以嘗試下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章