Итак, хост A (Mac OS) имеет ip: 10.1.10.65, а хост B имеет ip: 10.1.10.68, который представляет собой Linux Ubuntu на виртуальной машине на хосте A. Я хочу направить весь трафик с хоста A через хост B.

На данный момент я включил ip forwarding на хосте B:

sysctl net.ipv4.ip_forward=1

и на хосте A:

route delete default
route add default 10.1.10.68

После этих операций я могу нормально просматривать Интернет на хосте A, но я действительно не уверен, что если весь трафик сейчас маршрутизируется через хост B. Я прочитал некоторые другие посты, и они упоминали, что они используют iptables -t nat -A POSTROUTING -o ethx -j MASQUERADE на хосте B, я не использовал эту команду на хосте B, но все еще могу нормально подключиться к Интернету на хосте A Я что-то здесь упускаю? Как мне узнать, что я правильно перенаправил трафик через хост B? Спасибо.

2 ответа2

0

Запустите traceroute 8.8.8.8 на хосте A. Первый прыжок скажет вам, через какую машину проходит трафик.

0

Многие люди в Интернете ошибочно полагают, что им нужны iptables для маршрутизации (это моя любимая мозоль).

Вы можете проверить маршрутизацию на хосте A с помощью ip route get a.b.c.d , который сообщит вам, где следующий переход IP a.b.c.d в соответствии с текущими правилами.

Вы также можете использовать traceroute , или mtr или аналогичный, чтобы увидеть фактический путь, по которому проходят пакеты (если хосты, через которые они проходят, не настроены для предотвращения этого).

Кстати, route - старая команда, ip route ... - более новая версия, а некоторые функции маршрутизации новых ядер будут доступны только при использовании ip route .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .