Я новичок в сети и не знаю, как правильно настроить.
Я могу пинговать на сервер
ping -I 192.168.42.1 42.112.178.185
но я не мог пинговать
ping 42.112.178.185
42.112.178.185 позволяет принимать только 192.168.42.0/24.
Как мне добавить таблицу маршрутов? Я бы хотел использовать
ping 42.112.178.185
Вместо того
ping -I 192.168.42.1 42.112.178.185
Я пытаюсь позвонить http://42.112.178.185 с curl и нужно маршрутизировать из 192.168.42.1.
ОБНОВИТЬ По желанию, вот решение конкретной проблемы: иметь curl
используйте правильный исходный IP-адрес при подключении, указав ему привязаться к нему с помощью --interface
вариант перед подключением.
--интерфейс
Выполните операцию, используя указанный интерфейс. Вы можете ввести имя интерфейса, IP-адрес или имя хоста.
Таким образом, проблему можно решить, просто используя этот curl
команда для доступа к 42.112.178.185 с правильным IP:
curl --interface 192.168.42.1 http://42.112.178.185/
Конечно, вы также можете указать интерфейс.
Я все еще оставляю решение маршрутизации ниже, на случай, если оно кому-то поможет.
Действительно, можно добавить маршрут, который будет указывать на использование IP-адреса источника, отличного от IP-адреса по умолчанию (того, который принадлежит сети шлюза) при достижении цели.
Примечание. Поскольку некоторая необходимая информация не была предоставлена: IP-адрес шлюза по умолчанию и интерфейс для доступа к нему, для определения его значения требуются некоторые дополнительные сценарии. Кроме того, поскольку может существовать туннель, который, возможно, не заменил маршрут по умолчанию, но мог бы добавить два «половинных маршрута по умолчанию» 0.0.0.0/1 и 128.0.0.0/1, я получу маршрут до 42.112.178.185, чтобы иметь правильное значение.
Итак, давайте назначим IP-адрес gw для gw
:
gw=$(ip -o route get 42.112.178.185 | sed -n 's/^.* via \([^ ][^ ]*\) *.*$/\1/p')
Теперь вот простая команда маршрутизации:
ip route add 42.112.178.185 src 192.168.42.1 via $gw
Если, например, шлюз был 10.0.8.1 с предполагаемым IP-адресом tun0 Ubuntu 10.0.8.2, перед изменением запрос маршрута к 42.112.178.185 даст:
# ip route get 42.112.178.185
42.112.178.185 via 10.0.8.1 dev tun0 src 10.0.8.2
cache
После изменения это станет:
# ip route get 42.112.178.185
42.112.178.185 via 10.0.8.1 dev tun0 src 192.168.42.1
cache
В ip route
можно изменить, чтобы повлиять на более чем один IP-адрес, но что делать, зависит от других уже имеющихся маршрутов.