非固定IP在Ubuntu上架NAT+DHCP

By 浩剛, 2007 年 08 月 13 日 9:52 下午

應爸爸要求,昨晚(今早)成功架起NAT,簡言之就是Ubuntu + NAT + DHCP配上ADSL撥接(ppp0)。

Ubuntu是近來人氣很高的Linux作業系統,建立於Debian之上,其圖形化介面對使用者很友善。

DHCP(Dynamic Host Configuration Protocol)可以自動分發IP給其他電腦,只需要設定區段即可,例如中華電信便是使用DHCP才能給臺灣那麼多台電腦分發浮動IP。

NAT(Network Address Translation)可以將一個IP分給多台電腦共用,功能即一般的「IP分享器」。

所謂ADSL撥接就是一般人家的浮動IP,即需要使用撥接軟體才能上網的。我是跟中華電信申請1浮動改1固定,目前還不用另外加錢。這個固定IP本質並非真的固定IP,無法開機自動連線,仍需撥號。

原本沒用DHCP時,NAT一直架不起來,所以便決定先裝DHCP,無奈百般輸入「# sudo /etc/init.d/dhcp3-server restart」總是失敗,後來才發現是「/etc/network/interfaces」沒有設定好。

輸入「# sudo gedit /etc/network/interfaces」,底下會有auto lo、auto eth0、auto eth1……等,網路上教eth0那邊要打成如下(先不要打)

auto eth0
iface eth0 inet static
address xxx.xxx.xxx.xxx
#固定IP
netmask 255.255.255.0
gateway xxx.xxx.x.xxx
#預設閘道IP

我便有樣學樣,在address打上我固定的浮動IP,但是卻無法使用,稍微研究後,發現下還有個「auto dsl-provider」,我頓時領悟。現在重點不是eth0或者dsl-provider這些東西,它們本來就是OK我才能上網,就讓他們維持原狀,eth0不該學他們用成固定IP的樣子,就讓它像原本的「iface eth0 inet dhcp」即可,現在要改的是eth1啊!

auto eth1
iface eth1 inet static
address 192.168.1.2
#自訂私有IP
netmask 255.255.255.0

這個對內的網卡要設成固定(static),還要給予一個私有IP,且要與準備分配的IP同範圍(如上方的1)。設定好後要記得重新啟動網路服務「# sudo /etc/init.d/networking restart」

OK後,可以到系統 -> 管理 -> 網路檢查,此時你會發現一開始來這邊設就可以了。

接著別忘了「# sudo gedit /etc/default/dhcp3-server」,並修改「INTERFACES=""」成「INTERFACES="eth1"」。

最後一個困難的步驟就是修改「/etc/dhcp3/dhcpd.conf」,不過當我辛辛苦苦修改完,打開Firestarter並設定DHCP跟NAT(我選「Creat new DHCP configuration」),接著再回到「/etc/dhcp3/dhcpd.conf」,裡面的內容已經不是我參考鳥哥辛苦打入的,而是Firestarter靈巧的設定,比我打的還少,省了好幾B的容量。

# DHCP configuration generated by Firestarter
ddns-update-style interim;
ignore client-updates;

subnet 192.168.1.0 netmask 255.255.255.0 {
    option routers 192.168.1.2;
    option subnet-mask 255.255.255.0;
    option domain-name-servers 168.95.1.1; #中華電信的DNS位址
    option ip-forwarding off;
    range dynamic-bootp 192.168.1.30 192.168.1.50;
#自動分配IP的範圍
    default-lease-time 21600;
    max-lease-time 43200;
}

別忘了執行「# sudo /etc/init.d/dhcp3-server restart」

如果你跟我一樣懶得自己設定iptables,接下來就超級輕鬆了。請安裝Firestarter,記得將套件庫中的Universe打勾。

以下設定若想參考圖片,請參閱下方網址。
Firestarter -> Preferences -> NetWork Settings,連接乙太網路的「Internet connected network device」選擇ppp0,連接內部電腦的「Local network connected device」選擇eth1,中間兩個Enable都打勾,底下您可以選擇「Keep existing DHCP configuration」,他會使用您方才的設定,若選擇「Creat new DHCP configuration」則輸入好分配IP的範圍後,Firestarter會自己設定「/etc/dhcp3/dhcpd.conf」。

忘了提醒大家,要記得把線接好,不然Firestarter沒有測到兩張連接好的網路卡,它是不會啟動NAT的。

事情到這邊還沒有結束,我的電腦還是不能上網,等我把原本區域網路設的192.168.1.3改成「自動取得IP位址」,下方選擇「自動取得DNS伺服器位址」,一切才大功告成。

看著伴我許久的cFos顯示「已中斷連線」,竟有種莫名的悲痛,別了,我的cFos,而且從今以後,我要跟我弟弟共用IP了。

請參閱以下網站(依順序):
Ubuntu Note - DHCP Server
臺大資工 - linux server, network 和 dhcp 設定簡介
鳥哥的Linux私房菜 - Linux 防火牆與 NAT 主機
鳥哥的Linux私房菜 - DHCP 伺服器

Related Posts with Thumbnails

12 Responses to “非固定IP在Ubuntu上架NAT+DHCP”

  1. 藍色雷斯里 說道:

    啊啦...
    完全看不懂...
    我只會用現成的程式而已...

    • 浩剛 說道:

      如果可以,只要用現成的程式我就滿足了,只可惜我是資管的,不能只會用現成的,最算只用現成的,也要熟悉到可以任意把玩才行。

  2. 浩剛 說道:
    Linux學習網
    引用自ubuntu下配置雙網卡實現DHCP+NAT

    原來Firestarter的啟動腳本會從ifconfig的輸出信息中查找相關接口的配置信息。但它查找的是英文的字符串,現在由於ifconfig的輸出信息是中文的,一些參數信息它無法獲取了,所以導致啟動失敗。按照如下方法就能解決,終端中輸入
    sudo gedit /etc/firestarter/firestarter.sh

    # External network interface data
    這行註釋的上面,添加一行:
    LANG=en_US
    這樣,ifconfig的輸出就是英文的了,也就解決這個問題

    回溯發現的

  3. 浩剛 說道:

    修改:
    /etc/network/interfaces

      auto eth1
      iface eth1 inet static
      address 192.168.1.2 #自訂私有IP(修改此行)
      netmask 255.255.255.0

    看到酷!學園「關於nat設定卻不能上網的問題 」,發現這篇文章有錯,剛剛去看我那臺ubuntu,發現跟我寫的有個小地方不同,不曉得是我當時筆誤,還是後來忘了有改檔案?

    原本那行ip是寫192.168.1.254。

    • 浩剛 說道:

      其實對於網管不是很在行,這篇也只是初學者的記錄,希望不會誤人子弟啊。

      由於沒有酷學園的帳號似乎無法回應,所以直接在這邊講。

  4. wingwar 說道:

    很實用 謝了grin

    • 浩剛 說道:

      這……真糟糕,好久以前寫的東西,不曉得有沒有寫錯。

      之後發現有錯再自己偷偷改就好了,科科。
      (有沒有用trackback我不是很在意,可是沒有打我的名字或網誌,真希望那個網站主機爆炸。)

  5. rosostrov.ru 說道:

    Please provide detail of funding by program.

  6. lineii 說道:

    請教一下我想A連B目前用跳線連接兩台電腦。
    A想設定192.168.1.199,B想設定192.168.1.200讓A可以連到B的資料。
    想請問這部分要如何設定 ? 目前有多買一張網卡來讓內部網路用。
    感謝^^

    • 浩剛 說道:

      理論上你接下來只要把遮罩設成255.255.255.0應該就可以了。
      我也沒有試過,不過印象中是這樣。

      要透過遮罩讓兩台電腦處於同一個網段下,這樣才能形成區網並互通資料。

留下回應

Panorama Theme by Themocracy