[Armadillo:08110] iptablesを用いたNAT変換時のudp通信のソースアドレス トラブルの件

東浦 孝文 email@hidden
2012年 7月 2日 (月) 19:37:11 JST


お世話になっております。
東浦です。

iptables関連で格闘中です。(予想通りハマってます・・・・orz)

なんとか、過去のメーリングリスト等を参考にしまして、 iptablesでNATできる
ところ迄ビルド出来ました。先人の方々に感謝です。

現在、下記のような状況に陥りまして再びお知恵を拝借したいと思い、投稿させ
て戴きます。


下記の既製バージョンから開発バージョンへネットワークを切り替えて、UNITを
無線化を行っています。
iptablesを使用して、11.22.33.0と192.168.1.0のネットワークをNATで接続しま
してUNITを遠隔操作する予定です。

既製バージョン
(PC)---------------192.168.1.0/24------------------------------(UNIT)
192.168.1.10                                                 192.168.1.1

開発バージョン
(PC)=(MF111)---11.22.33.0/24---(MF111)=(Armadillo)---192.168.1.0/24-----(UNIT)
      11.22.33.10          11.22.33.1       192.168.1.20


ネットワークにはtcpとudpのデータが流れるのですが、192.168.1.1→11.22.33.10
へデータをフォワードする時にtcpの場合には、
ソース:11.22.33.1 ディストネーション:11.22.33.10
なのですが、

udpの場合には
ソース:192.168.1.1 ディストネーション:11.22.33.10
となってしまいます。
(USBモデムドライバ上でのダンプさせて確認しています。)


ここで質問なのですが、
1)iptablesの動作としてはこれで正しいのでしょうか?
 DoCoMo網ではソース側が変なIPアドレスだと弾かれて、ディストネーション側
 に届かないようです。
 ただ、これがiptablesの仕様と考えますと、相手先が送り返す時に、グローバ
 ルアドレスが取得出来ず送り返せないので不思議に思っております。

2)udpでもtcpの様にソース側が11.22.33.1で送信出来ないでしょうか?
 何らかの設定で出来る様にしたいのですが、ネットにて色々と情報を集めまし
 たが、見つかりませんでした。
 ドライバ側の設定または、 iptables側の設定情報でなにか良い方法はありま
 せんでしょうか?


ちなみに、iptablesには下記の設定でNATを行っています。
iptables -t nat -A PREROUTING -p tcp -i ppp0 -s 11.22.33.10 --dport 31200:31203 -j DNAT --to 192.168.1.1
iptables -t nat -A PREROUTING -p tcp -i eth0 -s 192.168.1.1 --sport 31200:31203 -j DNAT --to 11.22.33.10
iptables -t nat -A PREROUTING -p udp -i eth0 -s 192.168.1.1 --dport 39001 -j DNAT --to 11.22.33.10
echo 1 > /proc/sys/net/ipv4/ip_forward
(UDP通信はUNIT側からのみのデータ通信です)


以上、よろしくお願い致します。





armadillo メーリングリストの案内