Как маршрутизировать сетевой трафик хоста через другого в той же локальной сети?

354
zfgo

Итак, хост 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? Спасибо.

0

2 ответа на вопрос

0
atetees

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

0
dirkt

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

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

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

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