From: Amos Jeffries <squid3@treenet.co.nz>
To: Roc Bai <buroc83@gmail.com>
Cc: Jan Engelhardt <jengelh@medozas.de>, netfilter@vger.kernel.org
Subject: Re: How to redirect the package from eth0 to eth2
Date: Wed, 12 Jan 2011 14:03:34 +1300 [thread overview]
Message-ID: <4D2CFDE6.7040202@treenet.co.nz> (raw)
In-Reply-To: <AANLkTinvmfXMtPTP1KuZ6_t_KQCqSoQVEFEEBihhzcfa@mail.gmail.com>
On 12/01/11 04:26, Roc Bai wrote:
> 2011/1/11 Jan Engelhardt<jengelh@medozas.de>:
>>
>> On Tuesday 2011-01-11 04:22, Roc Bai wrote:
>>>>> Dear all:
>>>>> in my service, there are four net card. eth0, eth1, eth2,
eth3. I
>>>>> want to forward the data in from eth0 to eth1, eth2, eth3 with
>>>>> different application protocol. Does some body send me some ideas on
>>>>> it?
>>>>
>>>> If you want to re-route packages, that has to happen in pre-routing.
>>>> If you want to use DNAT for examples, just add a rule to the
>>>> PREROUTING chain in the nat table.
>>>
>>> I think the DNAT should change the package data, including the IP or
>>> higher level protocol header, isn't it?
>>
>> That is the point of NAT. NAT is _not_ routing/forwarding (dammit).
>> And it's "packet", not "package".
>>
>>> I think the best idea which can redirect the package is to add/change
>>> the route rule to do it. I have write some source codes which doesn't
>>> work.
>>
>> That's redundant (and as you can see, error prone). Just use
>> the iproute utilities to define extra rules and routes, which
>> are known to work.
>>
>>> ncf_get_entry() can generate a dst_entry whose dev point to the eth2
>>> net_device structure. But when i use tcpdum -i eth2. I cannot get the
>>> package from eth0. So it doesn't work.
>>
>> I don't expect it to. You are using a global variable, which is not
>> SMP-safe without a lock.
>> You might find Paul McKenny's Parallel Programming Book helping.
> Jan, thanks your comments.
> I want to make the packet ( I think it's right now:) ) redirected to
> an anticipant port, so I haven't consider the concurrent problem now.
>
> In the requirement, redirect the packet with protocal is the first
> step, and in the second step, the system should redirect the packet
> with application packet content, such as GET in HTTP.
>
> eth0 ---------- if (GET in SKB), redirect to ----------> eth2
>
> So i think i have to write my module to redirect the packet now, and
> then i can change little in the future. That's the key why i thouldn't
> to use the exist nat/diverter tool.
>
> Maybe i want to know how to set the SKB in the
> ip_route_input_common() routine. Then the SKB can be send out from
> eth2 port. So
> whether my plan is right, to create a dst-entry and add it to
> skb->_skb_refdst? and Whether the dst_entry optiosn values are
> corrent?
>
This discussion is showing signs of being an XYZ problem.
http://www.perlmonks.org/index.pl?node_id=542341
Roc Bai, are you attempting to do this redirection for *any* protocol?
or just for some specific ones related to a not mentioned task?
AYJ
next prev parent reply other threads:[~2011-01-12 1:03 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-10 10:08 How to redirect the package from eth0 to eth2 Roc Bai
2011-01-10 11:56 ` Maximilian Wilhelm
2011-01-11 3:22 ` Roc Bai
2011-01-11 11:11 ` Jan Engelhardt
2011-01-11 15:26 ` Roc Bai
2011-01-12 1:03 ` Amos Jeffries [this message]
2011-01-12 2:00 ` Roc Bai
-- strict thread matches above, loose matches on Subject: below --
2011-01-10 10:08 Roc Bai
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D2CFDE6.7040202@treenet.co.nz \
--to=squid3@treenet.co.nz \
--cc=buroc83@gmail.com \
--cc=jengelh@medozas.de \
--cc=netfilter@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.