pingu icon indicating copy to clipboard operation
pingu copied to clipboard

How to set gateway to each interface?

Open HuJK opened this issue 7 years ago • 3 comments
trafficstars

I want to set gateway in conf

if I set

ip route change default nexthop via 192.168.0.254 dev eth1 weight 1 nexthop via 192.168.11.50 dev eth2 weight 1

pingu will remove all my route settings.

But if I set gateway=192.168.0.254 I will get error like this:

/etc/pingu/pingu.conf: Unknown keyword 'gateway' (line 19)

HuJK avatar Aug 31 '18 06:08 HuJK

Not sure if this helps but I found that running pingu -v removes the routes when sopping it with ctrl+c. However, when I do service pingu start/stop the routes remain.

typecampo avatar Aug 31 '18 12:08 typecampo

This is what I am doing:

##Initial condition: alpine in docker with CAP_NET_ADMIN
##and connected 3 networks. 
apk add iproute2 pingu
ifconfig
#(3 interface returned. eth0 eth1 eth2)
#(eth0 is internal , eth1 is interface1 with macvlan, eth2 is interface2 with macvlan)

##enable NAT
sysctl net.ipv4.ip_forward=1
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -j MASQUERADE

##set gateway                         ↓gateway1↓                                  ↓gateway2↓
ip route change default nexthop via 192.168.0.254 dev eth1 weight 1 nexthop via 192.168.11.50 dev eth2 weight 1
#Now I can get internet access, package will randomly choose eth1 or eth2 to send


ip route list
#default
#        nexthop via 192.168.0.254 dev eth1 weight 1
#        nexthop via 192.168.11.50 dev eth2 weight 1
#172.18.0.0/24 dev eth0 proto kernel scope link src 172.18.0.4
#192.168.0.0/24 dev eth1 proto kernel scope link src 192.168.0.2
#192.168.11.0/24 dev eth2 proto kernel scope link src 192.168.11.3

vi /etc/pingu/pingu.conf
#interval        30
#retry           5
#required        3
#timeout         1.0
#interface eth1 {
#        label           ISP via eth1
#        rule-priority 20000
#        required-hosts-online   1
#        load-balance
#}
#
#interface eth2 {
#        label           ISP via eth2
#        rule-priority 20000
#        required-hosts-online   1
#        load-balance
#}
#host 8.8.8.8 {
#        label           Google public DNS (via eth1)
#        bind-interface  eth1
#        bind-interface  eth2
#}

##start pingu
pingu
#pingu[49]: New interface: eth1
#pingu[49]: eth1: got link
#pingu[49]: New interface: eth2
#pingu[49]: eth2: got link
#pingu[49]: New route to 192.168.0.0/24 dev eth1 metric 0 table 2
#pingu[49]: New route to 192.168.11.0/24 dev eth2 metric 0 table 1
#pingu[49]: Google public DNS (via eth1): went OFFLINE
#pingu[49]: 8.8.4.4: went OFFLINE
#pingu[49]: ISP via eth2: went OFFLINE
#pingu[49]: 8.8.4.4: went OFFLINE
#pingu[49]: ISP via eth1: went OFFLINE
######Now I can no longer access the internet##########
ip route list
#172.18.0.0/24 dev eth0 proto kernel scope link src 172.18.0.4
#192.168.0.0/24 dev eth1 proto kernel scope link src 192.168.0.2
#192.168.11.0/24 dev eth2 proto kernel scope link src 192.168.11.3
##getway record has been removed

Any step I do is wrong?

HuJK avatar Sep 03 '18 15:09 HuJK

I have not played with the loud-balance option. Im only wanting pingu to switch between the two if one goes down (will be handled with gateway up/down action in pingu.conf).

Here is what I have in my interfaces file: `auto eth1 iface eth1 inet static address 10.11.10.100 netmask 255.255.0.0 gateway 10.11.0.1 post-up ip route add 10.11.0.0/16 dev eth1 table 11 post-up ip route add default via 10.11.0.1 dev eth1 table 11 post-up ip rule add priority 11 from 10.11.10.100 table 11 post-up ip rule add priority 12 to 10.11.10.100 table 11 post-down ip rule del priority 11 from 10.11.10.100 table 11 post-down ip rule del priority 12 to 10.11.10.100 table 11

auto eth2 iface eth2 inet static address 10.14.10.100 netmask 255.255.0.0 post-up ip route add 10.14.0.0/16 dev eth2 table 21 post-up ip route add default via 10.14.0.1 dev eth2 table 21 post-up ip rule add priority 21 from 10.14.10.100 table 21 post-up ip rule add priority 22 to 10.14.10.100 table 21 post-down ip rule del priority 21 from 10.14.10.100 table 21 post-down ip rule del priority 22 to 10.14.10.100 table 21 ` interface eth1 { label VSAT1 via eth1 route-table 11 rule-priority 11 required-hosts-online 1 ping 8.8.4.4 }

interface eth2 { label VSAT2 via eth2 route-table 21 rule-priority 21 required-hosts-online 1 ping 8.8.8.8 }

If you notice, the route-table and rule-priority match the table I use in the interfaces file. This way the routes persist and no new route is added or removed when pingu starts or stops.

typecampo avatar Sep 05 '18 12:09 typecampo