Categories: links, linux, programming, python, snark, solaris, spam, sysadmin, tech, unix, web.
|
2007-03-28 A surprise to remember about starting modern machinesIn the very old days you connected to Unix systems through serial
terminals, which only had their getty processes started once
In the old days you connected to Unix systems through rlogin(d),
which was started through These days you connect to Unix systems through This mistake was at the root of my debugging adventure today. We're
switching to a new system of managing NFS mounts on our Ubuntu machines,
and I was seeing a mysterious problem where the test machine would boot
up with its NFS mounts partially or almost completely missing. Due to
local needs we start You can get into really weird states because of this. In the past I've
managed to have (I think what tipped me off back then was the same thing as this time around; I got a process tree dump and saw the startup script still running.) (2 comments.)
sysadmin/StartupSurprise written at 23:49:14; Add Comment
Dual identity routing with Linux's policy based routingIn the last entry I talked about the idea that an end node machine in a VPN actually has two distinct identities that need to be routed separately: the inside identity that should be routed over the VPN, and the outside identity that should be routed over the Internet. In this case each identity has an IP address associated with it; call the inside identity's IP address I and the outside identity's IP address O. We can do this sort of routing with Linux's policy based routing, which fortunately is not as scary as it looks. To simplify somewhat, Linux does policy based routing by having multiple routing tables, and then providing rules to pick between them. We need two new routing tables, one for each identity, but fortunately we don't need them to have many routes; all they actually need is a default route. So we set up the tables like this:
(Here VPN and REAL are your VPN and REAL network interfaces; you may
need to add ' Now we need two policy rules so that traffic explicitly from one or another of our identities is sent out the appropriate interface:
(The table numbers and the priorities are mostly arbitrary.) This says that traffic explicitly from I should consult table 10 before theoretically falling through to the default main routing table. Similarly for traffic explicitly from O, which gets sent to table 11. Since tables 10 and 11 have a default route, we never actually fall through. The final thing to do is to set up which networks default to using the inside or the outside identity when we connect to them. We do this in the regular routing table by choosing which interface we send a route to, for example to route 128.100.5.0/24 over my VPN connection I do:
(Unless you change your default route, the default identity is your outside identity and thus you just need to add route entries for stuff you want to go over the VPN. Because the most specific route matches, you can make some large network go through the VPN, and then exempt specific subnets if you need to.) This works because both the VPN and the REAL interfaces have local IP addresses associated with them, which determines the local IP address for outgoing connections that haven't explicitly specified it. (Connections that have specified the local IP address will get stolen by our explicit rules before we reach the main routing table.) As a bonus you can make outgoing connections use a specific identity by
specifying the origin address; for example, I could still connect to a
machine in 128.100.5/24 as my outside identity by using ' (I owe a real debt to the documentation for the (2 comments.)
linux/DualIdentityRouting written at 00:45:37; Add Comment
|
These are my WanderingThoughts GettingAround This is part of CSpace, and is written by ChrisSiebenmann. * * * Atom feeds are available; see the bottom of most pages. Categories: links, linux, programming, python, snark, solaris, spam, sysadmin, tech, unix, web |