[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 12/25 17:52 / Filesize : 218 KB / Number-of Response : 981
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Linuxプログラミング



345 名前:login:Penguin [2007/09/29(土) 23:45:42 ID:KUrKiugz]
iptables を使用してトランスペアレントプロキシを作成しようとしています。
ポート10000に届くすべてのあて先IPアドレスを自身宛に書き換えて受け取っています。

その状態で getsockopt()に SO_ORIGINAL_DSTを与えると本来のあて先アドレスがわかるということで試していますが上手くいきません。
ENOPROTOOPT : 指定された層(level)にはこのオプションは存在しない
というエラーが返されます。

どのように解決すれば良いかわからず投稿させていただきました。
アドバイスがございましたらよろしくお願いします。

環境
fedoracore6 2.6.18-1.2798.fc6xen
gcc 4.1.1

-----------------------------一部抜粋-----------------------------------
int sock;
socklen_t len;
struct sockaddr_in addr0,orig_dst;

addr0.sin_family = AF_INET;
addr0.sin_port = htons(10000);
addr0.sin_addr.s_addr = htonl(INADDR_ANY);

sock = socket(AF_INET,SOCK_DGRAM,0);
bind(sock,(struct sockaddr *)&addr0,(socklen_t)sizeof(addr0));

len = (socklen_t)sizeof(orig_dst);

if(getsockopt(sock,SOL_IP,SO_ORIGINAL_DST,(struct sockaddr *)&orig_dst,(socklen_t *)&len)){
perror("getsockopt");
}
-------------------------------------------------------------------------






[ 続きを読む ] / [ 携帯版 ]

全部読む 前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<218KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef