Я подключился к двум провайдерам и объявил им свое собственное пространство IP (/24 IPv4), поэтому оба провайдера направляют трафик, предназначенный моей подсети, на мой маршрутизатор (сервер Linux).
Два интернет-провайдера подключены к другому интерфейсу на маршрутизаторе Linux, скажем, eth0
и eth1
.
Теперь, когда я пытаюсь ping
адрес, все, что я получаю, это время ожидания запроса. Однако, выполнив tcpdump
, я вижу ответ удаленного компьютера, но не на том же интерфейсе, с которого маршрутизатор Linux отправляет запрос. (то есть отправка с eth0
, получение ответа на eth1
):
eth0:
17:11:26.136885 IP tky01.jp.nat.moe > syr.edu: ICMP echo request, id 22910, seq 1, length 64
17:11:27.139627 IP tky01.jp.nat.moe > syr.edu: ICMP echo request, id 22910, seq 2, length 64
17:11:28.163632 IP tky01.jp.nat.moe > syr.edu: ICMP echo request, id 22910, seq 3, length 64
17:11:29.187715 IP tky01.jp.nat.moe > syr.edu: ICMP echo request, id 22910, seq 4, length 64
17:11:30.211766 IP tky01.jp.nat.moe > syr.edu: ICMP echo request, id 22910, seq 5, length 64
eth1:
17:11:26.314683 IP syr.edu > tky01.jp.nat.moe: ICMP echo reply, id 22910, seq 1, length 64
17:11:27.317398 IP syr.edu > tky01.jp.nat.moe: ICMP echo reply, id 22910, seq 2, length 64
17:11:28.341461 IP syr.edu > tky01.jp.nat.moe: ICMP echo reply, id 22910, seq 3, length 64
17:11:29.365671 IP syr.edu > tky01.jp.nat.moe: ICMP echo reply, id 22910, seq 4, length 64
17:11:30.389885 IP syr.edu > tky01.jp.nat.moe: ICMP echo reply, id 22910, seq 5, length 64
Я попытался сделать политику маршрутизации:
ip rule add from x.x.x.x/24 lookup isp2 # where x.x.x.x is my subnet.
ip route add default via y.y.y.y dev eth1 table isp2 # where y.y.y.y is ISP2's gateway
Это заставляет ping
работать нормально, но теперь любой пользователь, выбравший для входа мою AS с использованием ISP1 (eth0), не сможет ничего достичь.
Как я могу сообщить Linux, что eth0
и eth1
могут ответить на запрос?