rp_filter on kaikissa interfaceissa nolla.
Ongelma sekä selvisi, että ei selvinnyt
wan3.network:
Koodi:
[Match]
Name=wan3
[Network]
DHCP=ipv4
[DHCP]
RouteTable=130
[RoutingPolicyRule]
OutgoingInterface=wan3
Table=130
Tämä johtaa tälläiseen lopputulokseen (wan0 ei ole RouteTable määritystä lainkaan):
$ ip route
Koodi:
default via xx.xx.91.1 dev wan0 proto dhcp src xx.xx.91.10 metric 1024
xx.xx.91.0/24 dev wan0 proto kernel scope link src xx.xx.91.10 metric 1024
xx.xx.91.1 dev wan0 proto dhcp scope link src xx.xx.91.10 metric 1024
$ ip route show table 130
Koodi:
default via xx.xx.91.1 dev wan3 proto dhcp src xx.xx.91.84 metric 1024
xx.xx.91.0/24 dev wan3 proto dhcp scope link src xx.xx.91.84 metric 1024
xx.xx.91.1 dev wan3 proto dhcp scope link src xx.xx.91.84 metric 1024
$ ip rule
Koodi:
0: from all lookup local
5000: from yy.yy.0.0/20 to yy.yy.0.0/20 lookup 5000 proto static
32757: from all oif wan3 lookup 130 proto static
32761: from yy.yy.3.0/24 iif lan3 lookup 130 proto static
32766: from all lookup main
32767: from all lookup default
Tässähän käy niin, että Elisa tarjoilee liki peräkkäisiä ip-osoitteita kaikille wan interfaceille ja jokaisessa on sama gateway.
Tällä setupilla pingatessa ulkoa päin
wan3
ip:tä
xx.xx.91.84
, vastaukset lähtee
wan0
:sta, mutta
wan3
:n ip:llä.
Kun lisään käsin rulen
wan3
:n ip-osoitteella:
ip rule add from xx.xx.91.84 table 130
Alkaa paketit kulkemaan oikein
wan3
:n kautta.
Ongelma on se, että en keksinyt yksinkertaista keinoa jolla saisi tuon ip rulen lisättyä siinä vaiheessa kun Elisan DHCP tarjoilee leasen.
Toki voin ottaa käyttöön
networkd-dispatcher
:n ja kirjoitella scriptin joka rulen tekee aina kun lease saadaan, mutta siitä joutuu tekemään ikävän monimutkaisen jos huomioi sen, että ip-osoite voi myös vaihtua lennosta. Tosin Elisa kyllä pääsääntöisesti tarjoaa aina saman ip:n leasen uudistuksessa, mutta jos esim. gfast silta on tunnin pari virrattomana ja itse gateway on tämän ajan käynnissä, niin osoitteet todennäköisesti vaihtuvat ja vanha ip rule pitäisi siivota pois uuden alta.
Edit: rulen lisäämisen jälkeen:
$ ip rule
Koodi:
0: from all lookup local
4999: from xx.xx.91.84 lookup 130
5000: from yy.yy.0.0/20 to yy.yy.0.0/20 lookup 5000 proto static
...