2012-04-25 60 views
0

我有兩個系統A和B,A是一個TCP客戶端和發送消息到TCP服務器B.如何使用iptables

------------------    -------------------------- 

    System A      System B 
    192.168.0.5 wlan0    192.168.0.3 wlan0 
    127.0.0.1 lo     127.0.0.1 lo 
    TCP Client <------------> TCP Server on 127.0.0.1 
------------------    ---------------------------- 

的TCP客戶端發送消息到192.168.0.3的IP制定轉發規則。

這應該作爲TCP服務器在系統的8000端口B.

因此在127.0.0.1被重定向至B的本地接口,我寫了下面的IP表規則,但我的服務器在B點沒有收到任何消息。哦,順便說一句,這兩個系統是Ubuntu的Linux系統。

這是我做了系統B:

#Enable IP Forwarding for NAT 
echo "1" < /proc/sys/net/ipv4/ip_forward 

#Flush all iptable chains and start afresh 
sudo iptables -F 

#Forward incoming packets on 192.168.0.3 at wlan0 interface to 127.0.0.1 
sudo iptables -t nat -A PREROUTING -p tcp -i wlan0 -d 192.168.0.3 --dport 8000 -j DNAT --to 127.0.0.1:8000 

#Explicitly allow incoming connections on port 8000 
sudo iptables -A INPUT -i wlan0 -p tcp --dport 8000 -m state --state NEW,ESTABLISHED -j ACCEPT 

#Explicitly allow outgoing messages from port 8000 
sudo iptables -A OUTPUT -o wlan0 -p tcp --sport 8000 -m state --state ESTABLISHED -j ACCEPT 

然後我開始B上的服務器和TCP客戶端上爲wlan0發送關於A的消息,我可以看到Wireshark的數據包從192.168.0.5但他們從來沒有被轉發:(

請幫

回答

1

它應該是 「>」,而不是 「<」:

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