請教一下 iptables DNAT 的問題 - Linux

Skylar Davis avatar
By Skylar Davis
at 2011-02-16T11:54

Table of Contents

目前我的主機環境如下

Internet (Hinet) --> 主機 eth1 ppp0 -> 主機 eth0 --> NAT 環境
(固定ip: 192.168.111.1) (192.168.0.0 的網域)

主機上有兩張網卡
eth1 是連到小烏龜
ppp0 是做為 pppoe 連線用, 使用的是固定 ip 192.168.111.1
eth0 則是連到 switch hub, eth0 的 ip 為 192.168.0.254

我的目的很簡單, 只想達成兩個目的
1. 將主機做為 router
2. 將一些 port 轉給 NAT 下的主機使用
ex: 8000 port 給 192.168.0.170 使用

目的 1 是已經達成了
但是目的 2 卻試了好幾次都不成功

我的 iptables 設定如下, 麻煩各位給點意見, 謝謝

*filter
:INPUT ACCEPT [73:5037]
:FORWARD ACCEPT [3862:3184209]
:OUTPUT ACCEPT [61:5344]
-A FORWARD -m iprange --src-range 192.168.0.150-192.168.0.250 -j ACCEPT
-A FORWARD -s 192.168.0.0/255.255.255.0 -j DROP
COMMIT
*nat
:PREROUTING ACCEPT [295:18419]
:POSTROUTING ACCEPT [4:280]
:OUTPUT ACCEPT [4:280]
-A PREROUTING -d 192.168.111.1 -i eth0 -p tcp -m tcp --dport 3000 -j DNAT \
--to-destination 192.168.0.254
-A PREROUTING -d 192.168.111.1 -i eth0 -p tcp -m tcp --dport 8000 -j DNAT \
--to-destination 192.168.0.170
-A POSTROUTING -s 192.168.0.0/255.255.255.0 -o ppp0 -j MASQUERADE
COMMIT

在這個 script 裡面, 我將 port 3000 轉到 192.168.0.254 是沒問題的
但是將 port 8000 轉到 192.168.0.170 卻失敗了
我是少加了什麼步驟嗎?

--
Tags: Linux

All Comments

Joe avatar
By Joe
at 2011-02-20T15:28
/etc/sysctl.conf中 net.ipv4.ip_forward = 1?
Emma avatar
By Emma
at 2011-02-22T06:00
/etc/sysctl.conf 有設定成 1 還是不成功
/proc/sys/net/ipv4/ip_forward 也有設為 1
Olga avatar
By Olga
at 2011-02-25T14:24
-A FORWARD -s 192.168.0.0/255.255.255.0 -j DROP
Odelette avatar
By Odelette
at 2011-03-01T01:23
看起來是把連到192.168.0.0的封包都丟掉,註解掉呢?
Oscar avatar
By Oscar
at 2011-03-02T18:04
這行我之前也有試著註解掉, 也是不行Orz
James avatar
By James
at 2011-03-04T22:51
-A POSTROUTING --dst 192.168.0.170 --dport 3000
Emma avatar
By Emma
at 2011-03-06T10:55
-j SNAT --to-source 192.168.0.254
啊,應該是--dport 8000,加這行試試看
Queena avatar
By Queena
at 2011-03-09T05:48
先po一下你的route -n
Eden avatar
By Eden
at 2011-03-10T06:54
-A OUTPUT --dst 192.168.0.254 -p tcp -j DNAT
--to-destination 192.168.0.170 還有這行
Robert avatar
By Robert
at 2011-03-10T13:25
ppp0怎麼會是虛擬ip呀?...@@
Isla avatar
By Isla
at 2011-03-11T10:56
ppp0 的ip是為了描述方便才這樣寫, 請不要太再意 :)
Andrew avatar
By Andrew
at 2011-03-13T13:10
加了那兩行似乎也不行@@
Charlotte avatar
By Charlotte
at 2011-03-15T13:46
-A PREROUTING -p tcp -m tcp --dport 8000 -j DNAT
--to-destination 192.168.0.170:8000
Hedy avatar
By Hedy
at 2011-03-20T11:30
改成這樣試試看吧

$4 的 Debian 6.0 自動化安裝

Yuri avatar
By Yuri
at 2011-02-16T10:10
※ 引述《fourdollars (四元)》之銘言: : *製作可開機安裝 Debian 6.0 的 USB Stick* : 首先去下載 debian-6.0.0-i386-businesscard.iso (46M) 回來 : http://cdimage.debian.org/debian-cd/6.0 ...

請問怎麼在.sh檔裡用time輸出指令的執行時間?

George avatar
By George
at 2011-02-16T04:08
小弟如果直接在command line下列指令: (time ./a.out) andgt;andgt; test.log 可以把執行./a.out的輸出與其執行時間輸出到test.log這個檔 ex. ./a.out會輸出 Hello World 則test.log裡面的內容會是 Hello World ...

ubuntu安裝java的問題

Una avatar
By Una
at 2011-02-15T18:11
照著 http://www.webupd8.org/2010/09/how-to-install-java-jre-and-java-plugin.html 的方式執行,就出現下面這張圖,一直沒辦法按確定。按滑鼠,按enter都沒用 這該怎麼辦呢?安裝一半出現的框框。 http://img253.im ...

CIFS下的檔案無法用givm修改

Rachel avatar
By Rachel
at 2011-02-15T15:16
請問一下 文字檔案放在CIFS下 若是使用windows登入並用gvim修改完在儲存 檔案內容全都會變成and#39;^at^at^at^at^at^at^at^at^at^at^at^at^at^atand#39; 但若使用記事本修改 則可以順利打開 請問這該如何解決 Linux版本是centos ...

sendmail能寄信 不能收信 (收不到信)

Isla avatar
By Isla
at 2011-02-15T11:59
各位先進,小弟負責的是系上mail server工讀 平常主要是負責群組轉寄這樣 前幾天突然不能收信 (有斷電過,但以前重開也都可以正常運作) 但寄到外面和寄給自己是ok的 netstat下25和110port 都有在listening 用telnet去連也都OK sendmail和network也rest ...