酷!學園
技術討論區 => Linux 討論版 => 主題作者是: john70480 於 2008-05-31 22:14
-
各位大大您們好
小弟我為了練習linux
在自己家想架個dhcp+nat的環境
我是用ubuntu來架dhcp+nat
我的網路環境是這樣的
ADSL
┌┴┐
別人 └┐
電腦 HUB
┌┴┐
XP UBUNTU
我現在的問題是
我XP上面用VMware模擬redhat無法上網
我ubuntu目前是用一張實體網卡
一張對外
一張對內
我網路是用ppp的
我ubuntu
對外網路介面ppp0
對內網路介面eth1
dhcp的設定檔我全是參考這個網站的
http://blog.aquirede.net/read.php?275
auto eth1
iface eth1 inet static
address 192.168.1.254 #自訂私有IP
netmask 255.255.255.0
/etc/dhcp3/dhcpd.conf
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;
}
我dhcp成功架成了
可是我nat的不知道哪裡出問題
我的iptables設定檔
#!/bin/bash
/sbin/modprobe iptable_filter
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_irc
/sbin/modprobe ipt_state
/sbin/modprobe ipt_limit
/sbin/modprobe ipt_REJECT
/sbin/modprobe ipt_REDIRECT
/sbin/modprobe ipt_LOG
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -Z
/sbin/iptables -F -t nat
/sbin/iptables -X -t nat
/sbin/iptables -Z -t nat
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
/sbin/iptables -t nat -P OUTPUT ACCEPT
/sbin/iptables -A INPUT -i lo -j ACCEPT
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
我在xp的vmware下的redhat
能夠成功的分配到ip
192.168.1.47
可以ping 到192.168.1.254
不能ping 168.95.1.1
我redhat的ifcfg-eht0
DEVICE=eth0
ONBOOT=yes
HWADDR=XXXXXXXXXXXX
TYPE=ethernet
BOOTPROTO=dhcp
#network=192.168.0
NETMASK=255.255.255.0
BROADCAST=192.168.1.255
GETWAY=192.168.1.2
我現在不知道是我ubuntu的nat設定錯誤
還是我redhat的clinet設定錯誤
-
192.168.1.2在哪?
XP是接在HUB下?還是接在UBUNTU後?
-
我redhat的ifcfg-eht0
DEVICE=eth0
ONBOOT=yes
HWADDR=XXXXXXXXXXXX
TYPE=ethernet
BOOTPROTO=dhcp
#network=192.168.0
NETMASK=255.255.255.0
BROADCAST=192.168.1.255
GETWAY=192.168.1.2
你明明是用DHCP為什麼還設NETMASK,GETWAY,BROADCAST ?
還有你是透過VMware那你的Vmware網路設定有正確嗎 ?
不要透過DHCP依照你XP上的設定去設可以連上網路嗎 ?
-
to:yoww
192.168.1.2在哪?
那是我的route位址
設定在etc/dhcp3/dhcpd.conf
option routers 192.168.1.2;
我XP是在hub後面
我也試過ubuntu>hub>xp的狀況
不過那個情況我也是連不出去
現在的網路狀況是
狀況1
HUB┬─ ubuntu
│
XP
我也用過
狀況2
ubuntu ─ HUB ─ XP
不過我看書他也有寫狀況1的網路狀況
to: pippeng
我redhat的ifcfg-eht0
原本也只設定
DEVICE=eth0
ONBOOT=yes
HWADDR=XXXXXXXXXXXX
TYPE=ethernet
BOOTPROTO=dhcp
這樣而已
可是因為連不出去
我就又加了那些上去
我寫那樣也是抓的到ip的阿
還有你是透過VMware那你的Vmware網路設定有正確嗎 ?
vmware的網路設定是指什麼?
我只知道我vmware用的是bridged
不要透過DHCP依照你XP上的設定去設可以連上網路嗎 ?
我xp都是用adsl連線程式連網路的
也可以靠DHCP抓到內部IP
我個人猜測應該主要的問題是在nat的問題吧
我比較想知道的是
我ubuntu的nat有設定錯?
還是我
redhat的設定有錯
或是整個網路環境設定錯誤
-
我覺得是整個網路環境的問題吧?
有沒有試過 HUB ─ ubuntu ─ XP(Redhat)
192.168.1.2是"route" ?
你指的"route"在哪裡?
你在DHCP裡設定的"option routers 192.168.1.2;"
指的是DHCP用戶端的Gateway
應該是設在ubuntu上面eth1的IP
也就是說
DHCP的用戶端要連去Internet時,要到192.168.1.2
再由192.168.1.2那台主機幫他做NAT轉發出去
你的DHCP用戶端連的到192.168.1.2嗎?
你真的了解NAT是在做甚麼嗎?
你把自己的環境搞太複雜了.....
要用VM的話,還不如全部都在VM裡測試
不然混著真實主機,出問題會不好除錯
建議你把每台主機的連接方式跟上面的IP和Gateway畫張圖標示出來
這樣你就能知道封包出去時 他有沒有傳送到正確的地方
-
我覺得是整個網路環境的問題吧?
有沒有試過 HUB ─ ubuntu ─ XP(Redhat)
192.168.1.2是"route" ?
你指的"route"在哪裡?
你在DHCP裡設定的"option routers 192.168.1.2;"
指的是DHCP用戶端的Gateway
應該是設在ubuntu上面eth1的IP
也就是說
DHCP的用戶端要連去Internet時,要到192.168.1.2
再由192.168.1.2那台主機幫他做NAT轉發出去
你的DHCP用戶端連的到192.168.1.2嗎?
你真的了解NAT是在做甚麼嗎?
你把自己的環境搞太複雜了.....
要用VM的話,還不如全部都在VM裡測試
不然混著真實主機,出問題會不好除錯
建議你把每台主機的連接方式跟上面的IP和Gateway畫張圖標示出來
這樣你就能知道封包出去時 他有沒有傳送到正確的地方
HUB ─ ubuntu ─ XP(Redhat)
跟我
狀況2是一樣的網路狀況阿
網路線還要跳線更麻煩
192.168.1.2是"route" ?
你指的"route"在哪裡?
那個部份其實我真不是很懂
http://linux.vbird.org/linux_server/0340dhcp.php#client_linux
不過鳥哥的DHCP 用戶端的設定
步驟1-4的測試我都有成功
我執行route -n
得到的結果
0.0.0.0 192.168.1.254 0.0.0.0 UG eth0
步驟五我就沒有設定了
我只知道nat的作用就是我redha(192.168.1.47)t的封包傳到ubuntu(192.168.1.254)
之後在用
public ip送出封包
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
這兩行設定
我的封包應該就可以送出去了才對阿
會不會是我這裡設定沒有接收封包
其實我真的不是很懂這些
我接觸linux不過幾個月而已
希望各位高手教一教我
-
HUB ─ ubuntu ─ XP(Redhat)
跟我
狀況2是一樣的網路狀況阿
網路線還要跳線更麻煩
192.168.1.2是"route" ?
你指的"route"在哪裡?
那個部份其實我真不是很懂
http://linux.vbird.org/linux_server/0340dhcp.php#client_linux
不過鳥哥的DHCP 用戶端的設定
步驟1-4的測試我都有成功
我執行route -n
得到的結果
0.0.0.0 192.168.1.254 0.0.0.0 UG eth0
步驟五我就沒有設定了
我只知道nat的作用就是我redha(192.168.1.47)t的封包傳到ubuntu(192.168.3.254)
阿你的DHCP SERVER -ubuntu是192.168.3.254
怎麼dhcp發出來的會是192.168.1.47
你怎樣有辦法溝通喔 ??
阿鳥哥網有這樣設嗎 ??
阿如果你真的有這需求
請先解決Route
-
HUB ─ ubuntu ─ XP(Redhat)
跟我
狀況2是一樣的網路狀況阿
網路線還要跳線更麻煩
192.168.1.2是"route" ?
你指的"route"在哪裡?
那個部份其實我真不是很懂
http://linux.vbird.org/linux_server/0340dhcp.php#client_linux
不過鳥哥的DHCP 用戶端的設定
步驟1-4的測試我都有成功
我執行route -n
得到的結果
0.0.0.0 192.168.1.254 0.0.0.0 UG eth0
步驟五我就沒有設定了
我只知道nat的作用就是我redha(192.168.1.47)t的封包傳到ubuntu(192.168.3.254)
阿你的DHCP SERVER -ubuntu是192.168.3.254
怎麼dhcp發出來的會是192.168.1.47
你怎樣有辦法溝通喔 ??
阿鳥哥網有這樣設嗎 ??
阿如果你真的有這需求
請先解決Route
那是我打錯了不好意思
我DHCP SERVER -ubuntu是192.168.1.254
-
我看你整個打掉重蓋比較快 ;D
如果不想用跳線的話
試試看把環境改成這樣
ADSL ── ubuntu ── HUB ── XP(Redhat)
(eth0) (eth1) (eth0)
(ppp0)
其中
ubuntu(eth0)設定ppp0連線ADSL
ubuntu(eth1)設定固定IP:192.168.1.254/24,不需設Gateway
Redhat(eth0)設定DHCP發放
再改DHCP的設定
option routers 192.168.1.254;
這樣試試看~
Redhat(eth0)IP應該要分到192.168.1.30~192.168.1.50之間,Gateway應該是192.168.1.254
沒問題的話這樣就可以連出去了
分不到IP的話
請在Redhat(eth0)上設定192.168.1.X的IP,測試能不能PING的到192.168.1.254
IP分配都正確的話
請檢查ubuntu的ADSL是否正常
-
我看你整個打掉重蓋比較快 ;D
如果不想用跳線的話
試試看把環境改成這樣
ADSL ── ubuntu ── HUB ── XP(Redhat)
(eth0) (eth1) (eth0)
(ppp0)
其中
ubuntu(eth0)設定ppp0連線ADSL
ubuntu(eth1)設定固定IP:192.168.1.254/24,不需設Gateway
Redhat(eth0)設定DHCP發放
再改DHCP的設定
option routers 192.168.1.254;
這樣試試看~
Redhat(eth0)IP應該要分到192.168.1.30~192.168.1.50之間,Gateway應該是192.168.1.254
沒問題的話這樣就可以連出去了
分不到IP的話
請在Redhat(eth0)上設定192.168.1.X的IP,測試能不能PING的到192.168.1.254
IP分配都正確的話
請檢查ubuntu的ADSL是否正常
好的我試看看
-
等等,我也覺得 option routers 192.168.1.2; 是個問題。
請問 182.168.1.2 是 ubuntu 上的 IP 嗎?
改為 option routers 192.168.1.254; 看看?
-
嗯…仔細看…好像option routers不是應該指到ubuntu的eth1嗎
再由ubuntu幫你forward出去…再做NAT…
可以ping到192.168.1.254…這應該是相同網段…就算不是用dhcp派的…
自己設一個同網段也可以ping得到
-
嗯…仔細看…好像option routers不是應該指到ubuntu的eth1嗎
再由ubuntu幫你forward出去…再做NAT…
可以ping到192.168.1.254…這應該是相同網段…就算不是用dhcp派的…
自己設一個同網段也可以ping得到
我解決問題了
眾位大大的回答真是為我解惑阿
最終問題其實是
route設定錯誤
應該指定192.168.1.254才對
原來是教學寫錯了
虧我那麼相信他
http://blog.aquirede.net/read.php?275
我用我狀況一的網路設定也可以連上網了
太感謝了
照著人家的教法做不懂其中的原因才是真正問題的盲點
-
盡信書不如無書 ;D
-
盡信書不如無書 ;D
沒辦法阿
第一次接觸這東西
只能選擇相信他
雖然第一次看他設定檔的時候
我也很納悶那192.168.1.2是幹嘛用的
想說是他自訂的route ip勒
-
設定參數的時候最好要先了解那個參數的功能
每個人的環境都不盡相同
所以沒有萬用設定檔這種東西
把參數設定上網搜尋一下就會找到解釋了~
EX.鳥哥的私房菜 http://linux.vbird.org/linux_server/0340dhcp.php#server_dhcpd.conf (http://linux.vbird.org/linux_server/0340dhcp.php#server_dhcpd.conf)
當然~你要先了解自己的網路環境
EX.你的路由器在哪?