0

2つのシステムAとBがあります。AはTCPクライアントであり、B上のTCPサーバーにメッセージを送信します。

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

  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に送信します。

TCPサーバーはシステムBのポート8000​​で127.0.0.1で実行されているため、これはBのローカルインターフェイスにリダイレクトする必要があります。

したがって、次のip tableルールを作成しましたが、Bのサーバーはメッセージを受信しません。ところで、これら2つのシステムはUbuntuLinuxシステムです。

これが私がシステム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でサーバーを起動し、AでTCPクライアントからメッセージを送信します。wlan0の192.168.0.5からのwiresharkのパケットを確認できますが、転送されることはありません:(

助けてください。

4

1 に答える 1

1

「<」ではなく「>」にする必要があります。

echo "1" > /proc/sys/net/ipv4/ip_forward
于 2012-04-26T08:52:22.913 に答える