1

I am trying to setup a software router with the goal of routing packets to a proxy server on the router. The tutorial I am reading has the following routing rules:

ip rule add fwmark 1 table 100 ip route add local 0.0.0.0/0 dev lo table 100 

and the following iptables rules:

iptables -t mangle -N V2RAY iptables -t mangle -A V2RAY -d [Private Addresses] -j RETURN iptables -t mangle -A V2RAY -p udp -j TPROXY --on-port 12345 --tproxy-mark 1 iptables -t mangle -A V2RAY -p tcp -j TPROXY --on-port 12345 --tproxy-mark 1 iptables -t mangle -A PREROUTING -j V2RAY 

The whole thing works perfectly. But now I am moving to use systemd-networkd to avoid any startup scripts, and I am having trouble to convert ip route add local 0.0.0.0/0 dev lo table 100 to systemd-networkd language.

My first question is, what does this route do? My understanding so far is:

  • iptables add a firewall wall mark 1.
  • The rule selects all packets with mark 1 to use routing table 100.
  • The route is added to table 100, so it only applies to packets with mark 1.
  • The "0.0.0.0/0" part means it is a default route.
  • But what does "local" mean here? Why device lo? Why do we need a route here? Can't iptables handle this directly?

My second question is how to do this in systemd-networkd.

For matching packets with mark 1, it seems easy (and worked on my router):

[Match] Name = * [RoutingPolicyRule] FirewallMark = 1 Table = 100 

I am not sure if Name = * is required though. Does this make sure that any packet from any device, as long as it has mark 1, will be routed using table 100? Or could I match some particular network device here?

I cannot, however, make the route in systemd-networkd. My attempt so far is:

[Match] Name = lo [Route] Type = local Destination = 0.0.0.0/0 Table = 100 

But it seems that this has no effect: ip route show table 100 actually gives:

Error: ipv4: FIB table does not exist. Dump terminated 

How should I approach this?

1

1 Answer 1

2
[Match] Name = lo [RoutingPolicyRule] FirewallMark = 1 Table = 100 Priority = 100 [Route] Table = 100 Destination = 0.0.0.0/0 Type = local 

Combine them into one file

0

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.