iptables - source routing?

Fórumok

Sziasztok,

Nem vagyok valami nagy iptables hozzáértő, ezért nem sikerült megcsináljam a következő alap dolgot:
van egy Linux (Debian 6.0), azon pedig egy OpenVPN tunel, tap0. Azt szeretném, hogy azon csomagok, melyek a tap0-on jöttek be, a válasz is azon menjen vissza, mert alap esetben az alapértelmezett átjárón akarja kiadni, ami ugyebár nem jó. BSD és Mikrotik alatt is meg tudtam csinálni, itt nem megy :(
Ha valakinek van javaslata, várom.

Köszi

Hozzászólások

Az "ip rule" parancsot nézd meg közelebbről. (iproute2)

Hozzáadtam a megfelelő szabályokat:

echo 200 openvpn >> /etc/iproute2/rt_tables
ip rule add from [TAP0_IP_CIME] table openvpn
ip route add default via [OPENVPN_SERVER] dev tap0 table openvpn
ip route flush cache

A "Világból" érkező csomagok a tcpdump szerint még mindig nem azon az úton akarnak visszamenni mint ahol (TAP0) beérkeztek.

Ez nem pont azt csinálja, amit szeretnél:

ip rule add from [TAP0_IP_CIME] table openvpn -> a tap0 IP címéről érkező csomagok az openvpn tábla szerint routolódnak
ip route add default via [OPENVPN_SERVER] dev tap0 table openvpn -> az openvpn tábla default gw az ovpn szerver

Ez akkor lenne jó, ha a kimenő kapcsolatokat a nat tábla PREROUTING-jában átütnéd a tap0 címére, viszont akkor a túloldal nem azt a címet fogja látni a forrásban, mint akivel elkezdett beszélgetni.

A kerneltől az "ip ro get"-el tudod megkérdezni merre akar menni a csomag, lehet neki megadni forráscímet is.

Nézd meg a connmark-ot, ezzel meg tudod jelölni a tap0-n bejövő kapcsolatokat és visszafelé tudod mark alapján routolni a választ.

Valami ilyesmi (teszteletlen):

iptables -A PREROUTING -t mangle -j CONNMARK --restore-mark
iptables -A PREROUTING -t mangle -m mark ! --mark 0 -j ACCEPT
iptables -A PREROUTING -t mangle -i tap0 -j MARK --set-mark 1
iptables -A PREROUTING -t mangle -j CONNMARK --save-mark

ip rule add fwmark 1 table openvpn

Végül sikerült:

ip route add [OPENVPN_IP_TARTOMANY] dev tap0 src [OPENVPN_IP] table openvpn
ip route add default via [OPENVPN_ATJARO] table openvpn
ip rule add from [OPENVPN_IP] table openvpn