Adott 2 kártya, két IP-vel. Egy adott felhasználó forgalmazását szeretném a második ip, illetve az ahhoz tartozó gateway felé terelni. Főként ez alapján dolgoztam: http://www.debian-administration.org/article/379/Policy_routing
Mit rontok el?
eth0: ip=192.168.168.236 gw=192.168.168.1
wlan0: ip=192.168.2.12 gw=192.168.2.1
nameserver: 192.168.168.1
Kezdetben a tűzfalban nincsenek szabályok, minden policy ACCEPT.
root@kipkopp:~# ip rule list
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
root@kipkopp:~# ip route show
192.168.2.0/24 dev wlan0 proto kernel scope link src 192.168.2.12 metric 2
192.168.168.0/24 dev eth0 proto kernel scope link src 192.168.168.236 metric 1
169.254.0.0/16 dev eth0 scope link metric 1000
default via 192.168.168.1 dev eth0 proto static
root@kipkopp:~# cat /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
100 copyofmain
101 new
Elkészül a copyofmain tábla, a 'new' tábla még üres.
root@kipkopp:~# ip route show table copyofmain
192.168.2.0/24 dev wlan0 proto kernel scope link src 192.168.2.12 metric 2
192.168.168.0/24 dev eth0 proto kernel scope link src 192.168.168.236 metric 1
169.254.0.0/16 dev eth0 scope link metric 1000
default via 192.168.168.1 dev eth0 proto static
root@kipkopp:~# iptables -t mangle -A OUTPUT -m owner --uid-owner 1001 -j MARK --set-mark 1
root@kipkopp:~# ip rule add fwmark 1 pri 100 table copyofmain
root@kipkopp:~# ip rule add from 192.168.168.236 pri 200 table copyofmain
root@kipkopp:~# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source=192.168.168.236
Ha uid=1001 ekkor próbál böngészni, még minden rendben.
Elkészítjük a 'new' táblát
root@kipkopp:~# ip route show table new
192.168.2.0/24 dev wlan0 proto kernel scope link src 192.168.2.12 metric 1
192.168.168.0/24 dev eth0 proto kernel scope link src 192.168.168.236 metric 2
169.254.0.0/16 dev wlan0 scope link metric 1000
default via 192.168.2.1 dev wlan0 proto static
root@kipkopp:~# ip rule add from 192.168.2.1 pri 200 table new
root@kipkopp:~# iptables -t nat -A POSTROUTING -o wlan0 -j SNAT --to-source=192.168.2.12
root@kipkopp:~# ip rule show
0: from all lookup local
100: from all fwmark 0x1 lookup copyofmain
200: from 192.168.168.236 lookup copyofmain
200: from 192.168.2.12 lookup new
32766: from all lookup main
32767: from all lookup default
Az 1001-es user még mindig a copyofmain táblát használja, és tud is webezni.
root@kipkopp:~# ip rule delete from all fwmark 0x1 lookup copyofmain
root@kipkopp:~# ip rule add fwmark 1 pri 100 table new
root@kipkopp:~# ip rule list
0: from all lookup local
100: from all fwmark 0x1 lookup new
200: from 192.168.168.236 lookup copyofmain
200: from 192.168.2.12 lookup new
32766: from all lookup main
32767: from all lookup default
Ekkor azonban már nem megy a webezés. Próbálkozunk még:
root@kipkopp:~# echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
root@kipkopp:~# echo 0 > /proc/sys/net/ipv4/conf/wlan0/rp_filter
root@kipkopp:~# ip route flush cache
De hiába.
Ha azonban átírjuk a main(!) táblát:
root@kipkopp:~# ip route delete default via 192.168.168.1 dev eth0 proto static
root@kipkopp:~# ip route add default via 192.168.2.1 dev wlan0 proto static
Ismét megy a netezés.
- 1464 megtekintés
Hozzászólások
up
- A hozzászóláshoz be kell jelentkezni
Itt a hup-on volt valahol loadbalancing topic.
- A hozzászóláshoz be kell jelentkezni
Ez nem loadbalancing, hanem policy routing.
- A hozzászóláshoz be kell jelentkezni
Igaz.
A link alapján írtam, és azért külön hsz-ben:
...use some kind of load-balancing setup
- A hozzászóláshoz be kell jelentkezni
ip rule delete from all fwmark 0x1 lookup copyofmain
ezzel leszeded a copyofmain-t, és itt látszódik is
root@kipkopp:~# ip rule list
0: from all lookup local
100: from all fwmark 0x1 lookup new <---
ez inkább a route körüli gond lesz:
(ip route add default via 192.168.2.1 dev wlan0 proto static)
Tehát a wlan-on keresztül menne az uid=1001 user a netre?
- A hozzászóláshoz be kell jelentkezni
Ne bántsd a main táblát.
Csinálj egy másik táblát (new), amiben a default gw a wlan0-n megy keresztül és persze benne van a többi hálózat elérhetősége.
ip rule add from ... table new
A postroutingba kell snat.
kb ennyi az egész. A többi szerintem felesleges.
Kellhet még 1 ip rule add ... sor is. Ami a wlan0 felől jön, az menjen a new tábla szerint. Különben nem fognak visszatalálni a csomagok.
- A hozzászóláshoz be kell jelentkezni