У меня следующая конфигурация сетевого интерфейса,
где оба шлюза имеют доступ в Интернет.
В этом сценарии ping -I eth1 4.2.2.2
не работает. Ниже приведены результаты выполнения команд:
$ ip route show
192.168.78.0/24 dev eth0 proto kernel scope link src 192.168.78.1
192.168.253.0/24 dev eth2 proto kernel scope link src 192.168.253.131
192.168.254.0/24 dev eth1 proto kernel scope link src 192.168.254.65
169.254.0.0/16 dev eth0 scope link metric 1002
169.254.0.0/16 dev eth1 scope link metric 1003
169.254.0.0/16 dev eth2 scope link metric 1004
default via 192.168.253.1 dev eth2
$ cat /etc/iproute2/rt_tables
255 local
254 main
253 default
0 unspec
1 eth1
2 eth2
$ ip rule ls
0: from all lookup local
32765: from 192.168.254.65 lookup eth1
32766: from all lookup main
32767: from all lookup default
$ ip route show table eth1
default via 192.168.254.1 dev eth1
$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 100
link/ether 00:0b:ab:65:10:97 brd ff:ff:ff:ff:ff:ff
inet 192.168.78.1/24 brd 192.168.78.255 scope global eth0
inet6 fe80::20b:abff:fe65:1097/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 100
link/ether 00:0b:ab:65:10:98 brd ff:ff:ff:ff:ff:ff
inet 192.168.254.65/24 brd 192.168.254.255 scope global eth1
inet6 fe80::20b:abff:fe65:1098/64 scope link
valid_lft forever preferred_lft forever
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 100
link/ether 00:0b:ab:65:10:99 brd ff:ff:ff:ff:ff:ff
inet 192.168.253.131/24 brd 192.168.253.255 scope global eth2
inet6 fe80::20b:abff:fe65:1099/64 scope link
valid_lft forever preferred_lft forever
5: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 00:0b:ab:65:10:9a brd ff:ff:ff:ff:ff:ff
6: eth4: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 00:0b:ab:65:10:9b brd ff:ff:ff:ff:ff:ff
7: eth5: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 00:0b:ab:65:10:9c brd ff:ff:ff:ff:ff:ff
8: sit0: <NOARP> mtu 1480 qdisc noop state DOWN
link/sit 0.0.0.0 brd 0.0.0.0
Все rp_filter
значения установлены на 0.
Примечание: traceroute -i eth1 4.2.2.2
работает должным образом, но проверка связи через интерфейс eth1 неуспешна, если это не маршрут по умолчанию.
Пожалуйста, дайте мне знать, если требуются дополнительные настройки или у вас есть указатели.
Насколько я понимаю, это не должно работать так, как вы думаете. Пакеты будут проходить через шлюз по умолчанию, если вы не добавите статический маршрут для конкретного IP-адреса назначения или не используете политику маршрутизации. Поэтому попробуйте добавить несколько правил маршрутизации политики:
echo 300 eth2_gate >> /etc/iproute2/rt_tables
ip route add default via 192.168.254.1 table eth2_gate
ip rule add from 192.168.253.131 table eth2_gate
После этого ping -I
должно сработать. Я надеюсь, что это помогает.
Я также не понимаю, почему traceroute -s
хоть работать.
Может это связано с rp_filter
. Смотрите этот ответ: https://superuser.com/a/1504004/162485