仮想ホストへのポート転送はできませんか?

仮想ホストへのポート転送はできませんか?

やや珍しいネットワーク設定があります。それはインターネットのvpsで始まります。長年使ってきましたが、接続に問題はありませんでした。その上にip-networkstack-in-userspace(今から「MyIP」;すでにインターネット上の他の場所で実行されており、sipとhttpを提供しているので動作します。少なくとも基本的には十分だと言います)。

ここで、vpsのeth0を介して着信UDPポート161トラフィックを仮想ネットワークインターフェイスにリダイレクトしたいと思います。何らかの理由で一般的なiptablesルールは機能しません。 tcpdumpは仮想インターフェイスにトラフィックを表示せず、IPスタック(「MyIP」)には何も受信しないという指示があります(ARPも含む)。

internet -> vps[eth0, 37.34.63.177] -> vps[myip, 192.168.4.1] -> MyIP[myip, 192.168.4.2]

iptables -t nat -A PREROUTING -i eth0 -p udp --dport 161 -j LOG --log-prefix "DNAT: " --log-level 0                                   
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 161 -j DNAT --to 192.168.4.2:161                                                 
iptables -A FORWARD -d 192.168.4.2 -p udp --dport 161 -j LOG --log-prefix "FWD: " --log-level 0                                         
iptables -A FORWARD -d 192.168.4.2 -p udp --dport 161 -j ACCEPT    
iptables -A INPUT -i eth0 -p udp --destination-port 161 -j ACCEPT                                                                     

eth0でtcpdumpを実行すると、着信要求が表示されます。 「myip」ネットワークインタフェースのtcpdumpには何も表示されません。 dmesg には何もなく、iptables -t nat -L -n -v はインクリメントするカウンタを表示しません。

したがって、パケットを仮想ネットワークインターフェイス(VPNに影響を与える)に転送できないか、私のiptablesルールが正しくありません。誰にもアイデアがありますか?

(パケットは通常200バイト未満であるため、MTUの問題とは思わないでください。)

ベストアンサー1

これは、壊れたルールをクリアし、INPUTチェーンのSSHルールを処理したと仮定します。

DNAT仕様は次のようにする必要があります。

iptables -t nat -A PREROUTING -i eth0 -p udp --dport 161 -j LOG --log-prefix "DNAT: " --log-level 0                      
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 161 -j DNAT --to 192.168.4.2:161

                                

FORWARDステートメントは次のようにする必要があります。

iptables -A FORWARD -d 37.34.63.177 -p udp --dport 161 -j LOG --log-prefix "FWD: " --log-level 0                         
iptables -A FORWARD -d 37.34.63.177 -p udp --dport 161 -j ACCEPT 

最後に、戻りトラフィックを許可します。

iptables -A FORWARD -o eth0 -p udp -s 192.168.4.2 --sport 161 -m state --state RELATED,ESTABLISHED -j ACCEPT

DNATは動作するためにINPUT文を必要としません。

おすすめ記事