Linux: Bridge two NICs and route traffic through VPN tunnel except specific destinations and portsiptables port forwardingftp tls firewalled :(iptables questionPort foreword + openVPN + iptables?Help With IPTables: Traffic Forced To Specific NIC?Redirecting IP traffic to tun0 using iptablesRHEL 6 Having issues forwarding port 80 to port 8080IPtables on Linux for mysql server private interfacespecific default route for NAT clients different from server itselfVPN Router does not reply to ARP Requests
Make all the squares explode
How to slow yourself down (for playing nice with others)
Do atomic orbitals "pulse" in time?
How to make a language evolve quickly?
Why was castling bad for white in this game, and engine strongly prefered trading queens?
51% attack - apparently very easy? refering to CZ's "rollback btc chain" - How to make sure such corruptible scenario can never happen so easily?
How to get reference to Component from inside an event method
Can 'sudo apt-get remove [write]' destroy my Ubuntu?
What's the word for the soldier salute?
On what legal basis did the UK remove the 'European Union' from its passport?
Was there ever any real use for a 6800-based Apple I?
How can a Lich look like a human without magic?
What does the expression "right on the tip of my tongue" mean?
What is Plautus’s pun about frustum and frustrum?
How are Core iX names like Core i5, i7 related to Haswell, Ivy Bridge?
How can dragons propel their breath attacks to a long distance
Why doesn't Rocket Lab use a solid stage?
Why did the ICC decide not to probe alleged US atrocities in Afghanistan?
What are the implications of the new alleged key recovery attack preprint on SIMON?
Usefulness of complex chord names?
As programers say: Strive to be lazy
Extracting sublists that contain similar elements
How to minimise the cost of guessing a number in a high/low guess game?
How do I compare the result of "1d20+x, with advantage" to "1d20+y, without advantage", assuming x < y?
Linux: Bridge two NICs and route traffic through VPN tunnel except specific destinations and ports
iptables port forwardingftp tls firewalled :(iptables questionPort foreword + openVPN + iptables?Help With IPTables: Traffic Forced To Specific NIC?Redirecting IP traffic to tun0 using iptablesRHEL 6 Having issues forwarding port 80 to port 8080IPtables on Linux for mysql server private interfacespecific default route for NAT clients different from server itselfVPN Router does not reply to ARP Requests
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
I have a Linux PC (Debian Wheezy) with two Ethernet adapters. Adapter eth0 is connected to the Internet (modem/router/DHCP/firewall thingy) and eth1 is connected to an WiFi access point. All other computers use WiFi and connect to that AP.
I want to configure the network so that all traffic from the clients behind the AP is passed through an OpenVPN tunnel on tun0. However, I need port 587 and the IP ranges 192.168.0.0/16 and 10.0.0.0/24 to always get passed through eth0.
I tried to build something with iptables but I'm having little success. Nothing is logged anywhere for some reason, so I am not sure how to start debugging. To be honest I am not even really sure what I am doing. English also isn't my native language so that makes reading a documentation difficult.
The following is what I have right now. Would a kind person tell me what I am doing wrong? Is this a wrong approach?
sysctl -w net.ipv4.conf.tun0.rp_filter=2
iptables -F
iptables -X LOGDROP
iptables -t mangle -F
iptables -N LOGDROP
iptables -A LOGDROP -m limit --limit 5/m --limit-burst 10 -j LOG
iptables -A LOGDROP -j DROP
iptables -A PREROUTING -t mangle -i eth0 -d 192.168.0.0/16 -j MARK --set-mark 1
iptables -A PREROUTING -t mangle -i eth0 -d 10.0.0.0/24 -j MARK --set-mark 1
iptables -A PREROUTING -t mangle -i eth0 -p tcp --dport 587 -j MARK --set-mark 1
iptables -A PREROUTING -t mangle -i eth0 -j MARK --set-mark 2
iptables -I FORWARD -m state --state INVALID -j LOGDROP
iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m mark --mark 1 --in-interface eth1 --out-interface eth0 -j ACCEPT
iptables -A FORWARD -m mark --mark 2 --in-interface eth1 --out-interface tun0 -j ACCEPT
iptables -A FORWARD --in-interface eth0 --out-interface eth1 -d 192.168.0.0/16 -j ACCEPT
iptables -A FORWARD --in-interface eth0 --out-interface eth1 -d 10.0.0.0/24 -j ACCEPT
iptables -A FORWARD -j LOGDROP
linux iptables routing openvpn
add a comment |
I have a Linux PC (Debian Wheezy) with two Ethernet adapters. Adapter eth0 is connected to the Internet (modem/router/DHCP/firewall thingy) and eth1 is connected to an WiFi access point. All other computers use WiFi and connect to that AP.
I want to configure the network so that all traffic from the clients behind the AP is passed through an OpenVPN tunnel on tun0. However, I need port 587 and the IP ranges 192.168.0.0/16 and 10.0.0.0/24 to always get passed through eth0.
I tried to build something with iptables but I'm having little success. Nothing is logged anywhere for some reason, so I am not sure how to start debugging. To be honest I am not even really sure what I am doing. English also isn't my native language so that makes reading a documentation difficult.
The following is what I have right now. Would a kind person tell me what I am doing wrong? Is this a wrong approach?
sysctl -w net.ipv4.conf.tun0.rp_filter=2
iptables -F
iptables -X LOGDROP
iptables -t mangle -F
iptables -N LOGDROP
iptables -A LOGDROP -m limit --limit 5/m --limit-burst 10 -j LOG
iptables -A LOGDROP -j DROP
iptables -A PREROUTING -t mangle -i eth0 -d 192.168.0.0/16 -j MARK --set-mark 1
iptables -A PREROUTING -t mangle -i eth0 -d 10.0.0.0/24 -j MARK --set-mark 1
iptables -A PREROUTING -t mangle -i eth0 -p tcp --dport 587 -j MARK --set-mark 1
iptables -A PREROUTING -t mangle -i eth0 -j MARK --set-mark 2
iptables -I FORWARD -m state --state INVALID -j LOGDROP
iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m mark --mark 1 --in-interface eth1 --out-interface eth0 -j ACCEPT
iptables -A FORWARD -m mark --mark 2 --in-interface eth1 --out-interface tun0 -j ACCEPT
iptables -A FORWARD --in-interface eth0 --out-interface eth1 -d 192.168.0.0/16 -j ACCEPT
iptables -A FORWARD --in-interface eth0 --out-interface eth1 -d 10.0.0.0/24 -j ACCEPT
iptables -A FORWARD -j LOGDROP
linux iptables routing openvpn
add a comment |
I have a Linux PC (Debian Wheezy) with two Ethernet adapters. Adapter eth0 is connected to the Internet (modem/router/DHCP/firewall thingy) and eth1 is connected to an WiFi access point. All other computers use WiFi and connect to that AP.
I want to configure the network so that all traffic from the clients behind the AP is passed through an OpenVPN tunnel on tun0. However, I need port 587 and the IP ranges 192.168.0.0/16 and 10.0.0.0/24 to always get passed through eth0.
I tried to build something with iptables but I'm having little success. Nothing is logged anywhere for some reason, so I am not sure how to start debugging. To be honest I am not even really sure what I am doing. English also isn't my native language so that makes reading a documentation difficult.
The following is what I have right now. Would a kind person tell me what I am doing wrong? Is this a wrong approach?
sysctl -w net.ipv4.conf.tun0.rp_filter=2
iptables -F
iptables -X LOGDROP
iptables -t mangle -F
iptables -N LOGDROP
iptables -A LOGDROP -m limit --limit 5/m --limit-burst 10 -j LOG
iptables -A LOGDROP -j DROP
iptables -A PREROUTING -t mangle -i eth0 -d 192.168.0.0/16 -j MARK --set-mark 1
iptables -A PREROUTING -t mangle -i eth0 -d 10.0.0.0/24 -j MARK --set-mark 1
iptables -A PREROUTING -t mangle -i eth0 -p tcp --dport 587 -j MARK --set-mark 1
iptables -A PREROUTING -t mangle -i eth0 -j MARK --set-mark 2
iptables -I FORWARD -m state --state INVALID -j LOGDROP
iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m mark --mark 1 --in-interface eth1 --out-interface eth0 -j ACCEPT
iptables -A FORWARD -m mark --mark 2 --in-interface eth1 --out-interface tun0 -j ACCEPT
iptables -A FORWARD --in-interface eth0 --out-interface eth1 -d 192.168.0.0/16 -j ACCEPT
iptables -A FORWARD --in-interface eth0 --out-interface eth1 -d 10.0.0.0/24 -j ACCEPT
iptables -A FORWARD -j LOGDROP
linux iptables routing openvpn
I have a Linux PC (Debian Wheezy) with two Ethernet adapters. Adapter eth0 is connected to the Internet (modem/router/DHCP/firewall thingy) and eth1 is connected to an WiFi access point. All other computers use WiFi and connect to that AP.
I want to configure the network so that all traffic from the clients behind the AP is passed through an OpenVPN tunnel on tun0. However, I need port 587 and the IP ranges 192.168.0.0/16 and 10.0.0.0/24 to always get passed through eth0.
I tried to build something with iptables but I'm having little success. Nothing is logged anywhere for some reason, so I am not sure how to start debugging. To be honest I am not even really sure what I am doing. English also isn't my native language so that makes reading a documentation difficult.
The following is what I have right now. Would a kind person tell me what I am doing wrong? Is this a wrong approach?
sysctl -w net.ipv4.conf.tun0.rp_filter=2
iptables -F
iptables -X LOGDROP
iptables -t mangle -F
iptables -N LOGDROP
iptables -A LOGDROP -m limit --limit 5/m --limit-burst 10 -j LOG
iptables -A LOGDROP -j DROP
iptables -A PREROUTING -t mangle -i eth0 -d 192.168.0.0/16 -j MARK --set-mark 1
iptables -A PREROUTING -t mangle -i eth0 -d 10.0.0.0/24 -j MARK --set-mark 1
iptables -A PREROUTING -t mangle -i eth0 -p tcp --dport 587 -j MARK --set-mark 1
iptables -A PREROUTING -t mangle -i eth0 -j MARK --set-mark 2
iptables -I FORWARD -m state --state INVALID -j LOGDROP
iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m mark --mark 1 --in-interface eth1 --out-interface eth0 -j ACCEPT
iptables -A FORWARD -m mark --mark 2 --in-interface eth1 --out-interface tun0 -j ACCEPT
iptables -A FORWARD --in-interface eth0 --out-interface eth1 -d 192.168.0.0/16 -j ACCEPT
iptables -A FORWARD --in-interface eth0 --out-interface eth1 -d 10.0.0.0/24 -j ACCEPT
iptables -A FORWARD -j LOGDROP
linux iptables routing openvpn
linux iptables routing openvpn
asked Feb 12 '15 at 23:41
taka3taka3
11
11
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
You're right about marking packets using the firewall, but you should not be routing them at that level — use multiple routing tables.
First, set up your main routing table so that it routes through eth0
:
ip route add default via XXXX dev eth0
Once the tunnel is up, set up a secondary routing table that routes through tun0
:
ip route add default via YYYY dev tun0 table 42
Now mark packets destined to tun0
:
iptables -t mange -A PREROUTING ... --set-mark 54
and set up a routing rule so that marked packets go through table 42:
ip rule add priority 100 fwmark 54 table 42
In order to ensure that packets don't go through eth0
when the tunnel is down, you may optionally add a lower priority rule to drop any marked packets that failed to get routed by table 42:
ip rule add priority 110 fwmark 54 table default
add a comment |
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%2f667270%2flinux-bridge-two-nics-and-route-traffic-through-vpn-tunnel-except-specific-dest%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You're right about marking packets using the firewall, but you should not be routing them at that level — use multiple routing tables.
First, set up your main routing table so that it routes through eth0
:
ip route add default via XXXX dev eth0
Once the tunnel is up, set up a secondary routing table that routes through tun0
:
ip route add default via YYYY dev tun0 table 42
Now mark packets destined to tun0
:
iptables -t mange -A PREROUTING ... --set-mark 54
and set up a routing rule so that marked packets go through table 42:
ip rule add priority 100 fwmark 54 table 42
In order to ensure that packets don't go through eth0
when the tunnel is down, you may optionally add a lower priority rule to drop any marked packets that failed to get routed by table 42:
ip rule add priority 110 fwmark 54 table default
add a comment |
You're right about marking packets using the firewall, but you should not be routing them at that level — use multiple routing tables.
First, set up your main routing table so that it routes through eth0
:
ip route add default via XXXX dev eth0
Once the tunnel is up, set up a secondary routing table that routes through tun0
:
ip route add default via YYYY dev tun0 table 42
Now mark packets destined to tun0
:
iptables -t mange -A PREROUTING ... --set-mark 54
and set up a routing rule so that marked packets go through table 42:
ip rule add priority 100 fwmark 54 table 42
In order to ensure that packets don't go through eth0
when the tunnel is down, you may optionally add a lower priority rule to drop any marked packets that failed to get routed by table 42:
ip rule add priority 110 fwmark 54 table default
add a comment |
You're right about marking packets using the firewall, but you should not be routing them at that level — use multiple routing tables.
First, set up your main routing table so that it routes through eth0
:
ip route add default via XXXX dev eth0
Once the tunnel is up, set up a secondary routing table that routes through tun0
:
ip route add default via YYYY dev tun0 table 42
Now mark packets destined to tun0
:
iptables -t mange -A PREROUTING ... --set-mark 54
and set up a routing rule so that marked packets go through table 42:
ip rule add priority 100 fwmark 54 table 42
In order to ensure that packets don't go through eth0
when the tunnel is down, you may optionally add a lower priority rule to drop any marked packets that failed to get routed by table 42:
ip rule add priority 110 fwmark 54 table default
You're right about marking packets using the firewall, but you should not be routing them at that level — use multiple routing tables.
First, set up your main routing table so that it routes through eth0
:
ip route add default via XXXX dev eth0
Once the tunnel is up, set up a secondary routing table that routes through tun0
:
ip route add default via YYYY dev tun0 table 42
Now mark packets destined to tun0
:
iptables -t mange -A PREROUTING ... --set-mark 54
and set up a routing rule so that marked packets go through table 42:
ip rule add priority 100 fwmark 54 table 42
In order to ensure that packets don't go through eth0
when the tunnel is down, you may optionally add a lower priority rule to drop any marked packets that failed to get routed by table 42:
ip rule add priority 110 fwmark 54 table default
answered Feb 15 '15 at 18:18
jchjch
42226
42226
add a comment |
add a comment |
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%2f667270%2flinux-bridge-two-nics-and-route-traffic-through-vpn-tunnel-except-specific-dest%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