Iptables packet forwarding vs NATMarking packets with iptables with a NATLinux IPTables Destination NAT with Asymmetrical Routing?iptables port forwardingiptables NAT with multiple interfacesNAT, iptables and problematic portsNAT / Port Forwarding with iptables firewallHow to configure iptables rules for connecting 2 eth to the net (forwarding & masquerading)CentOS, dual route, natiptables foward to multiple interfaces with NATBlock linux bridge traffic (only one way) using iptables or ebtables
What is the color associated with lukewarm?
Do items with curse of vanishing disappear from shulker boxes?
Why is gun control associated with the socially liberal Democratic party?
Is it possible to install Firefox on Ubuntu with no desktop enviroment?
How do you translate “talk shit”?
How can I detect if I'm in a subshell?
Do legislators hold the right of legislative initiative?
The last tree in the Universe
Nth term of Van Eck Sequence
Can Dive Down protect a creature against Pacifism?
Idiom for 'person who gets violent when drunk"
What should I be aware of in buying second-hand sinks and toilets?
Is it a good security practice to force employees hide their employer to avoid being targeted?
How do credit card companies know what type of business I'm paying for?
Are there any rules for identifying what spell an opponent is casting?
How many times to repeat an event with known probability before it has occurred a number of times
Digital signature that is only verifiable by one specific person
Is it unethical to quit my job during company crisis?
Is there a risk to write an invitation letter for a stranger to obtain a Czech (Schengen) visa?
Are athletes' college degrees discounted by employers and graduate school admissions?
Can I give my friend the sour dough "throw away" as a starter to their sourdough starter?
Is it possible to have battery technology that can't be duplicated?
How can Caller ID be faked?
Print the phrase "And she said, 'But that's his.'" using only the alphabet
Iptables packet forwarding vs NAT
Marking packets with iptables with a NATLinux IPTables Destination NAT with Asymmetrical Routing?iptables port forwardingiptables NAT with multiple interfacesNAT, iptables and problematic portsNAT / Port Forwarding with iptables firewallHow to configure iptables rules for connecting 2 eth to the net (forwarding & masquerading)CentOS, dual route, natiptables foward to multiple interfaces with NATBlock linux bridge traffic (only one way) using iptables or ebtables
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
From what I have read on packet forwarding, in case of a multihomed host that is connected to two different networks, packet forwarding allows packets to travel from one network to another through its two network interfaces.
Given the above, I have a Raspberry Pi setup with its WiFi connected to the Internet via a router. The WiFi interface has an IP address of 10.0.0.10 obtained via DHCP from the router. I have the RPI's Ethernet interface connected to a computer. The Ethernet interface has a static IP address of 192.168.0.1 and the computer obtains an IP address 192.168.0.15 from the DHCP server running on the RPI. The setup looks like this:
Router[10.0.0.1] <--> RPI WiFi[10.0.0.10] <--> RPI Ethernet[192.168.0.1] <--> PC[192.168.0.15]
Going by the definition of packet forwarding for a multihomed host, on applying the following Iptable rules that forwards packets from RPI's Ethernet to WiFi, I expect the computer to be able to ping the router [10.0.0.1] and also connect to the Internet.
iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
However, things do not work as I expected. Whereas, on removing the above rules and adding the NAT rule:
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
The computer is able to connect to the Internet.
- Why doesn't the packet forwarding work?
- Or if it works why can't I ping or get the computer to access the Internet?
- What would I need to do to have all traffic on the Ethernet interface go out via the WiFi?
Note: I have forwarding enabled on the RPI.
iptables nat forwarding raspbian
add a comment |
From what I have read on packet forwarding, in case of a multihomed host that is connected to two different networks, packet forwarding allows packets to travel from one network to another through its two network interfaces.
Given the above, I have a Raspberry Pi setup with its WiFi connected to the Internet via a router. The WiFi interface has an IP address of 10.0.0.10 obtained via DHCP from the router. I have the RPI's Ethernet interface connected to a computer. The Ethernet interface has a static IP address of 192.168.0.1 and the computer obtains an IP address 192.168.0.15 from the DHCP server running on the RPI. The setup looks like this:
Router[10.0.0.1] <--> RPI WiFi[10.0.0.10] <--> RPI Ethernet[192.168.0.1] <--> PC[192.168.0.15]
Going by the definition of packet forwarding for a multihomed host, on applying the following Iptable rules that forwards packets from RPI's Ethernet to WiFi, I expect the computer to be able to ping the router [10.0.0.1] and also connect to the Internet.
iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
However, things do not work as I expected. Whereas, on removing the above rules and adding the NAT rule:
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
The computer is able to connect to the Internet.
- Why doesn't the packet forwarding work?
- Or if it works why can't I ping or get the computer to access the Internet?
- What would I need to do to have all traffic on the Ethernet interface go out via the WiFi?
Note: I have forwarding enabled on the RPI.
iptables nat forwarding raspbian
1
You need the masquerade because the router has no idea that the 192.168.0.0/24 network is reachable via the raspberry pi. Masquerade changes the address to that of the pi, which the router knows how to reach (it's the same local network).
– yoonix
May 30 at 17:57
@yoonix Just to re-phrase, what you are saying is the computer is able to reach the router via forwarding, however, the router itself is not able to respond to the ping or send the requested webpage back to the computer as it cannot reach the 192.168.0.0/24 network? Then a question arises, can we masquerade without NATting? What other options do we have to enable cross communication?
– John
May 30 at 18:07
@John, you would need to add a route to the router so that it knows that it can reach the 192.168.0.0/24 network via the RPi. The steps for doing that depend greatly on your router model, and may in fact not be possible.
– Joel C
May 30 at 19:14
add a comment |
From what I have read on packet forwarding, in case of a multihomed host that is connected to two different networks, packet forwarding allows packets to travel from one network to another through its two network interfaces.
Given the above, I have a Raspberry Pi setup with its WiFi connected to the Internet via a router. The WiFi interface has an IP address of 10.0.0.10 obtained via DHCP from the router. I have the RPI's Ethernet interface connected to a computer. The Ethernet interface has a static IP address of 192.168.0.1 and the computer obtains an IP address 192.168.0.15 from the DHCP server running on the RPI. The setup looks like this:
Router[10.0.0.1] <--> RPI WiFi[10.0.0.10] <--> RPI Ethernet[192.168.0.1] <--> PC[192.168.0.15]
Going by the definition of packet forwarding for a multihomed host, on applying the following Iptable rules that forwards packets from RPI's Ethernet to WiFi, I expect the computer to be able to ping the router [10.0.0.1] and also connect to the Internet.
iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
However, things do not work as I expected. Whereas, on removing the above rules and adding the NAT rule:
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
The computer is able to connect to the Internet.
- Why doesn't the packet forwarding work?
- Or if it works why can't I ping or get the computer to access the Internet?
- What would I need to do to have all traffic on the Ethernet interface go out via the WiFi?
Note: I have forwarding enabled on the RPI.
iptables nat forwarding raspbian
From what I have read on packet forwarding, in case of a multihomed host that is connected to two different networks, packet forwarding allows packets to travel from one network to another through its two network interfaces.
Given the above, I have a Raspberry Pi setup with its WiFi connected to the Internet via a router. The WiFi interface has an IP address of 10.0.0.10 obtained via DHCP from the router. I have the RPI's Ethernet interface connected to a computer. The Ethernet interface has a static IP address of 192.168.0.1 and the computer obtains an IP address 192.168.0.15 from the DHCP server running on the RPI. The setup looks like this:
Router[10.0.0.1] <--> RPI WiFi[10.0.0.10] <--> RPI Ethernet[192.168.0.1] <--> PC[192.168.0.15]
Going by the definition of packet forwarding for a multihomed host, on applying the following Iptable rules that forwards packets from RPI's Ethernet to WiFi, I expect the computer to be able to ping the router [10.0.0.1] and also connect to the Internet.
iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
However, things do not work as I expected. Whereas, on removing the above rules and adding the NAT rule:
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
The computer is able to connect to the Internet.
- Why doesn't the packet forwarding work?
- Or if it works why can't I ping or get the computer to access the Internet?
- What would I need to do to have all traffic on the Ethernet interface go out via the WiFi?
Note: I have forwarding enabled on the RPI.
iptables nat forwarding raspbian
iptables nat forwarding raspbian
asked May 30 at 17:54
JohnJohn
99
99
1
You need the masquerade because the router has no idea that the 192.168.0.0/24 network is reachable via the raspberry pi. Masquerade changes the address to that of the pi, which the router knows how to reach (it's the same local network).
– yoonix
May 30 at 17:57
@yoonix Just to re-phrase, what you are saying is the computer is able to reach the router via forwarding, however, the router itself is not able to respond to the ping or send the requested webpage back to the computer as it cannot reach the 192.168.0.0/24 network? Then a question arises, can we masquerade without NATting? What other options do we have to enable cross communication?
– John
May 30 at 18:07
@John, you would need to add a route to the router so that it knows that it can reach the 192.168.0.0/24 network via the RPi. The steps for doing that depend greatly on your router model, and may in fact not be possible.
– Joel C
May 30 at 19:14
add a comment |
1
You need the masquerade because the router has no idea that the 192.168.0.0/24 network is reachable via the raspberry pi. Masquerade changes the address to that of the pi, which the router knows how to reach (it's the same local network).
– yoonix
May 30 at 17:57
@yoonix Just to re-phrase, what you are saying is the computer is able to reach the router via forwarding, however, the router itself is not able to respond to the ping or send the requested webpage back to the computer as it cannot reach the 192.168.0.0/24 network? Then a question arises, can we masquerade without NATting? What other options do we have to enable cross communication?
– John
May 30 at 18:07
@John, you would need to add a route to the router so that it knows that it can reach the 192.168.0.0/24 network via the RPi. The steps for doing that depend greatly on your router model, and may in fact not be possible.
– Joel C
May 30 at 19:14
1
1
You need the masquerade because the router has no idea that the 192.168.0.0/24 network is reachable via the raspberry pi. Masquerade changes the address to that of the pi, which the router knows how to reach (it's the same local network).
– yoonix
May 30 at 17:57
You need the masquerade because the router has no idea that the 192.168.0.0/24 network is reachable via the raspberry pi. Masquerade changes the address to that of the pi, which the router knows how to reach (it's the same local network).
– yoonix
May 30 at 17:57
@yoonix Just to re-phrase, what you are saying is the computer is able to reach the router via forwarding, however, the router itself is not able to respond to the ping or send the requested webpage back to the computer as it cannot reach the 192.168.0.0/24 network? Then a question arises, can we masquerade without NATting? What other options do we have to enable cross communication?
– John
May 30 at 18:07
@yoonix Just to re-phrase, what you are saying is the computer is able to reach the router via forwarding, however, the router itself is not able to respond to the ping or send the requested webpage back to the computer as it cannot reach the 192.168.0.0/24 network? Then a question arises, can we masquerade without NATting? What other options do we have to enable cross communication?
– John
May 30 at 18:07
@John, you would need to add a route to the router so that it knows that it can reach the 192.168.0.0/24 network via the RPi. The steps for doing that depend greatly on your router model, and may in fact not be possible.
– Joel C
May 30 at 19:14
@John, you would need to add a route to the router so that it knows that it can reach the 192.168.0.0/24 network via the RPi. The steps for doing that depend greatly on your router model, and may in fact not be possible.
– Joel C
May 30 at 19:14
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "2"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fserverfault.com%2fquestions%2f969539%2fiptables-packet-forwarding-vs-nat%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Server Fault!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fserverfault.com%2fquestions%2f969539%2fiptables-packet-forwarding-vs-nat%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
You need the masquerade because the router has no idea that the 192.168.0.0/24 network is reachable via the raspberry pi. Masquerade changes the address to that of the pi, which the router knows how to reach (it's the same local network).
– yoonix
May 30 at 17:57
@yoonix Just to re-phrase, what you are saying is the computer is able to reach the router via forwarding, however, the router itself is not able to respond to the ping or send the requested webpage back to the computer as it cannot reach the 192.168.0.0/24 network? Then a question arises, can we masquerade without NATting? What other options do we have to enable cross communication?
– John
May 30 at 18:07
@John, you would need to add a route to the router so that it knows that it can reach the 192.168.0.0/24 network via the RPi. The steps for doing that depend greatly on your router model, and may in fact not be possible.
– Joel C
May 30 at 19:14