回首頁
修改
Mail
FTP

中




2007年11月18日 星期日

[Ubuntu]如何架設簡易NAT 伺服器[入門篇]

鑑於ADSL撥接人數還蠻多的如果我們想架一個NAT環境
並且能夠能區域網內的電腦能夠上網+MSN
來說一下這次的環境
單純架nat環境:Lan網內的電腦需要設定Static(固定)IP
NAT+Dhcp :則可自動取的ip (這篇往後會寫到)
配備:
中古電腦一台灌Ubuntu 7.10內建兩張網卡透過中華電信ADSL撥接上網
取的浮動IP(ppp0)
(eth0)外部網路(public ip)
(eth1)內部網路(Private IP)
(ppp0)ADSL撥接虛擬介面  <--設定的重點
首先網路環境我們設在class c level
192.168.1.0~192.168.1.255 netmask:255.255.255.0

1.首先,來設定內部網路eth1的網路組態
/etc/network/interfaces
auto eth1
iface eth1 inet static (靜態)
  address 192.168.1.1 (內部ip)
  netmask 255.255.255.0(子網路遮罩)
  network 192.168.1.0 (網域)
  broadcast 192.168.1.255 (廣撥位址)
  dns-nameservers 168.95.1.1 (可省略)

2.在來設定讓Linux有router的功能
echo "1" > /proc/sys/net/ipv4/ip_forward

vim /etc/sysctl.conf
看裡頭有沒有這一行net.ipv4.ip_forward=1
沒有的話在新增進去就可以
sysctl -w net.ipv4.ip_forward=1 然後將此功能打開

3.設定加入內網對外連線封包偽裝的規則
#看一下下面的設定不難發現-s後面接的是子網路遮罩
#注意-o後面接的是ADSL的介面而不是eth1唷!當初我就是設錯攪老半天
#MASQUERADE就是偽裝的參數,偽裝成ppp0介面的ip(對外招搖撞騙) =_=
#當然-j後面也可以接isp分配給你的ip
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE
NAT端設定完成了!
在來是區網部份,要上網的電腦主機請這樣做
#為何gateway 是192.168.1.1 因為nat主機的內部ip是192.168.1.1 懂了吧!
vim /etc/network/interfaces
auto eth0 (啟動的意思)
iface eth0 inet static
address 192.168.1.2 (內部ip)
  netmask 255.255.255.0(子網路遮罩)
  network 192.168.1.0 (網域)
  broadcast 192.168.1.255 (廣撥位址)
  dns-nameservers 168.95.1.1 (可省略)
  gateway 192.168.1.1 (超級重要一定要設不設就ping不到外網了)


建議架設nat server 之後能夠將核心功能
rp_filter功能開啟,以避免nat成為駭客跳板
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
預設是0

23 回應:

匿名提到... 提到...

如果是宿舍網路給的是虛擬IP上網
該如何使用NAT設定呢?

可以指導一下嗎?
感謝

傳承科技 : 提到...

你如果是使用者~可能無法設定~
nat設定是要在server端設定
所以想先跟您確認一下你基地台是自行架設還是就如您所說的!你只是使用宿舍給的網路上網呢?

匿名提到... 提到...

感謝您的回覆

因為我是住在宿舍
所分配的都是虛擬IP
我現在要研究架設NAT
我現在是利用VMWARE練習
伺服器端
eth0 NAT對外(可以上網)
eth1 對內網卡

用戶端
eth0

設定都是依照您的說明
iptables 是不是要改成<... -o eth0 ...>

傳承科技 : 提到...

iptables -t nat -A POSTROUTING -s 《你內網的ip/netmast》 -o 《對外上網的網卡》 -j MASQUERADE
以你的例子~-o eth0是沒錯的~-j後面在指定您配到的ip 如果您有固定ip盡量用snat來設定~因為MAQUERADE耗的cpu資源較多~
目前還不知道你的問題點!
是lan裡的電腦無法上網嗎?

匿名提到... 提到...

目前我是使用VMWARE練習架設NAT
我作為SEVER端的eth0對外 eth1對內

目前我的用戶端可以成功PING到SEVER端所設定的虛擬IP
但是還是無法成功利用NAT上網(用戶端)

是不是iptables 我沒啟動
如果需要啟動 可以麻煩您指導一下指令嗎?
感謝您的回覆

傳承科技 : 提到...

一般來說!透過iptables來架設防火牆!當下的設定只要重新開機就會不見!
一般的作法會寫一個程序稿放在rc.local裡
讓開機自動載入
vim /home/dragon/iptables.conf
#!/bin/bash
iptables -A .....

:wq < 存檔離開
chmod 700 /home/dragon/iptables.conf
(變成可執行檔)
vim /etc/rc.local
/home/dragon/iptables.conf
exit 0

匿名提到... 提到...

目前我該設定的我都設定好了
我是有個疑問
iptables 要啟動嗎?
實在找不出什麼原因
一直無法對外連線

傳承科技 : 提到...

基本上你打完iptables就是設定好
可以用iptables指令查看設定
但是只要重新開機設定的東西就都消失
所以需要建一個程序稿放在rc.local裡
讓開機自動載入

傳承科技 : 提到...

請問你有架設Dhcp嗎?
還是設定固定ip?
還有一點你的vmware 所設定的網卡是nat還是橋接式?
另外你的設定值就是/etc/network/interfaces 可po出來看一下嗎?
iptables有做程序稿嗎?
你ping是ping eth0的ip還是eth1的ip
還有iptables 的設定INPUT,OUTPUT,預設您是設ACCEPT還是?
盡量將設定檔po上來才能參考!

匿名提到... 提到...

抱歉很久沒回應~~
最近比較忙沒時間研究...
我目前VM對外是用橋接
對內是用VM的虛擬網卡對接

我的設定都是按照您的教學
其他設定都沒更改
不知道是不是IPTABLES要做設定?
是設定對外全部通過嗎?

傳承科技 : 提到...

基本上我會建議您先不要設定iptables~
來試看看~等網路都通了在來考慮設定防火牆這樣問題可以先簡單化..

匿名提到... 提到...

我現在完全沒有使用IPTABLES
只照著您上面的設定做設定
我用使用者端可以PING到SEVER對內網卡所設定的IP
但是還是無法利用NAT上網

我宿舍所分配的IP都是虛擬的IP
會是這個原因導致無法成功使用NAT嗎?

匿名提到... 提到...

ping IP 內網可以PING到外面
但是PING tw.yahoo.com 會出現 unknow host 是我哪裡沒有設定到媽

傳承科技 : 提到...

Dear apin
目前無法確定是否因為你宿網所配ip所造成~
請問你能夠ping 的出去嗎?
ping 168.95.192.1 or 168.95.1.1
如果ping的出去在ping看看tw.yahoo.com

傳承科技 : 提到...

re: ping IP 內網可以PING到外面
但是PING tw.yahoo.com 會出現 unknow host 是我哪裡沒有設定到媽

ans:
你應該是dns沒設定好
vim /etc/reslov.conf

在vim /etc/network/interfaces
新增:dns-nameservers 168.95.1.1
在/etc/init.d/netwokking restart看看

匿名提到... 提到...

我確定我可以PING YAHOO 的IP 可以有回應
但是我連到他的網頁之後 好像只只能看那個IP網頁(首頁) 也無法點選其他內容(出現連線失敗)
我如果直接PING tw.yahoo.com
則是完全沒辦法連線

DNS用戶端 SERVER端都要設定嗎?
都是168.95.1.1 嗎?

匿名提到... 提到...

ubuntu iptables 規則
我開機都沒有設定過

這樣是不是救照著你的設定作呢?
應該我沒有改設定(iptables)

傳承科技 : 提到...

你是指client端ping yahoo ip有回應嗎?
如果是的話應該是dns沒設好~因為你ping tw.yahoo.com無回應~
dns則是server端與client端都要設定~
如果是dhcp+nat 則client會自動取的server端給的設定~
單純nat環境~client就要在設定一次~
到vim /etc/reslov.conf 裡面看一下有沒有設定~另外設完重新/etc/init.d/netwokking restart
然後在client 端用route 看一下你的預設Gateway(UG)是否為Server端的Eth1:ip 即為192.168.1.1
看一下文章內有寫到:#為何gateway 是192.168.1.1 因為nat主機的內部ip是192.168.1.1 懂了吧!

匿名提到... 提到...

我只要架設單純NAT
不需要防火牆
所以就不用IPTABLES指令
我用戶端可以PING到外網 IP
但是打網址就不行

我可以PING到 NAT主機的外網網卡IP跟內往網卡IP

也可以PING到外網IP

就是沒辦法PING 網址
會出現unknow host

我也設定過DNS了

我用戶端 伺服端 都照您的設定

伺服端也只新增設定
sysctl -w ...
iptables -t nat.ipv4.ip_forward=1

這兩行設定 就可以讓我用戶端PING到外網
但是我輸入網址 還是會出現unknow host

匿名提到... 提到...

我設定那是
sysctl -w ...
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 ...

這兩行設定而已

匿名提到... 提到...

我可以正常使用了
真的很感謝你的幫忙
原來DNS要設在/etc/reslov.conf 底下
不能設定在interfaces
我好笨><"

下一個階段 我是將用戶端全部倒到我NAT網站 NAT網站只有一個按鈕按一下就直接到原來要去的網站
我目前已經可以不管輸入什麼網站位址
都導到我NAT主機!!
iptables -t nat -A PREROUTING -i eth1 -j DANT --to-destination 192.168.1.1 這是強制導入NAT主機

不知道要讓他通過 該如何處理

傳承科技 : 提到...

不太懂你的意思!你內網是有架web server嗎?

匿名提到... 提到...

NAT 主機 架設網站
內網主機不管打什麼網址都會先導到
NAT主機的網站
再經由 NAT網頁 按鈕 或 轉址到原來想到的網址

好像需要利用到IPTABLE
我現在可以 強制導到NAT主機的網頁
但是不知道該如何利用網頁的按鍵
刪除IPTABLES的指令

iptables -t nat -A PREROUTING -i eth1 -j DANT --to-destination 192.168.1.1 這是強制導入NAT主機的指令

目前是先利用簡單網頁的按鈕讓他通過
以後就要利用認證才能通過