I've two linux machines connected with wg. Machine #1 is a remote VM, & connects to the public 'net. Machine #2 is local, on my LAN. To date, they've only routed internal traffic. Nice -n- easy. I'm adding forwarding of specific EXTERNAL traffic from the 'net, received at Machine #1, to port-specific services, on the LAN. E.g. a 'listener' on a local lan machine, @ ip 10.0.0.1 port 11111 On the local end of the VPN, for any external IP that needs to traverse the VPN link, adding the specific IP to AllowedIPs = ... X.X.X.X works. Traffic flows. BUT, that adds a local route X.X.X.X dev wg0 scope link so ALL local traffic from local lan to that IP, e.g. an ssh session, gets routed BACK via that new route over the VPN. I'd like to limit that -- so that ONLY traffic from the 'net to that local listener on ip 10.0.0.1 port 11111 is routed back via the VPN; all _other_ traffic to the originating IP (e.g., that ssh connection), gets routed over my normal default route. What's the cleanest way -- in wireguard config -- to (a) allow any/all IPs over the VPN (b) limit the route to the specific ip target/port So far, I seem to _need_ that originating IP in the "allowedips ="; which creates the 'overreaching' route ... I'm guessing some judicious use of PostUp/Down routes set?
On 10/1/20 6:07 AM, B K E wrote:
> it's probably the easiest to let wg-quick do its work, then by hand modify the routes so they are correct, and then put the necessary route commands in a PostUp script.
yep.
Once I figured out that on _linux_, turning OFF auto-route generation is done with
Table = off
not
route-allowed-ips = false
turning it OFF, then simply generating _required_ routes, and adding fw restrictions, in PostUp/PostDown works well enough.
It's a _bit_ messy, but seems the most straighforward.
On Wed, 30 Sep 2020 15:42:19 -0700 PGNet Dev <pgnet.dev@gmail.com> wrote: > I've two linux machines connected with wg. > > Machine #1 is a remote VM, & connects to the public 'net. > > Machine #2 is local, on my LAN. > > To date, they've only routed internal traffic. Nice -n- easy. > > I'm adding forwarding of specific EXTERNAL traffic from the 'net, received at Machine #1, to port-specific services, on the LAN. > > E.g. a 'listener' on a local lan machine, @ ip 10.0.0.1 port 11111 > > On the local end of the VPN, for any external IP that needs to traverse the VPN link, adding the specific IP to > > AllowedIPs = ... X.X.X.X > > works. Traffic flows. > > BUT, that adds a local route > > X.X.X.X dev wg0 scope link > "That" is called wg-quick. For any sort of non-basic usage, I suggest going with "wg" directly. "wg" does not add any routes or IPs, it only sets up the encrypted tunnel. The rest is completely up to you. Make your own wrapper around it, that only does exactly what you need and nothing more. > so ALL local traffic from local lan to that IP, e.g. an ssh session, gets routed BACK via that new route over the VPN. > > I'd like to limit that -- so that ONLY traffic from the 'net to that local listener on ip 10.0.0.1 port 11111 is routed back via the VPN; all _other_ traffic to the originating IP (e.g., that ssh connection), gets routed over my normal default route. > > What's the cleanest way -- in wireguard config -- to > > (a) allow any/all IPs over the VPN > (b) limit the route to the specific ip target/port > > So far, I seem to _need_ that originating IP in the "allowedips ="; which creates the 'overreaching' route ... > > I'm guessing some judicious use of PostUp/Down routes set? > > -- With respect, Roman