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

9

Я не являюсь системным администратором нашей корпоративной сети, но у меня есть две рабочие станции Linux (хосты A и B) с корневым доступом к обоим.

Оба хоста хорошо видят друг друга (ssh, ping и т. Д. Работает от одного к другому). Однако только хост A может выйти из нашего корпоративного брандмауэра и получить доступ к Интернету и т. Д .; хост B не может.

Вопрос: Как я мог иметь весь (и не только HTTP) исходящий и входящий сетевой трафик на хосте B, маршрутизируемый через хост A, без привлечения моего системного администратора? Сейчас я не знаю, нужно ли мне использовать NAT для хоста B, и / или сделать хост A прокси-сервером, и / или сделать хост A маршрутизатором.

На хосте B я попытался ввести route add -host <HostA> gw <HostA's Gateway>команду, но она не сработала: мне не удалось pingзайти на сайт www.google.com с хоста B. Прошу прощения за незнание этого вопроса маршрутизации / работы в сети.

Гарри
источник

Ответы:

16

У вас есть несколько решений для этого:

Более простой способ: NAT

Сделайте A маршрутизатором, разрешив пересылку: sysctl net.ipv4.ip_forward=1 поместите net.ipv4.ip_forward=1в /etc/sysctl.conf, чтобы сделать его постоянным.

Затем на A, nat trafic, набрав: iptables -t nat -A POSTROUTING -o ethx -j MASQUERADE

Наконец на B: Маршрутизация всего трафика через A:

ip route del default  
ip route add default via IP_of_A

Другое решение: Proxify ,

но вам нужно настроить все компоненты для использования прокси:

На B откройте SSH-соединение с A с помощью этой команды:

ssh -D8000 -N -f user@IP_of_A 

Это откроет прокси-носок на B и ретранслирует весь трафик через A. Если вы используете, например, веб-браузер, вам нужно настроить прокси-носок v5 на 127.0.0.1, прослушивая порт 8000. Вам не нужно будет настраивать ip пересылка или касание к маршрутам.

DrGkill
источник
При выдаче ip route addкоманды я получил эту ошибку:Error: either "to" is duplicate, or "gw" is a garbage.
Гарри
Кстати, DrGkill, я был бы очень, очень признателен, если бы вы могли также упомянуть другие способы. А также, некоторые книги / ресурсы, где эти концепции рассматриваются на практике. Мне не нужна теория, подобная Танненбауму, скорее полезны концепции и реальные команды Linux, которые я могу попробовать и выучить. Не уверен, что, по-видимому, дата [ faqs.org/docs/linux_network/index.html](Linux Network Administrator's Guide) по-прежнему актуальна и охватывает рецепт, который вы дали выше. Большое спасибо и благослови Бог.
Гарри
Правильный синтаксис - ip route add default viaили route add default gw.
кванты
Ошибка отредактирована, плюс добавлен способ прокси. Наслаждаться.
DrGkill
1
Спасибо кванты! Команда была принята успешно. Но, когда я сейчас ping www.google.com, я получаю сообщение From hostA (<ipaddrOfHostA>) icmp_seq=1 Destination Host Prohibitedоб ошибке и 100% потери пакетов.
Гарри
1

Я считаю, что вам нужно будет отключить ваш брандмауэр.

service iptables stop

Не уверен, что это необходимо как на хосте A, так и на хосте B, но он заставил меня передать сообщение «Destination Host Pro запрещен»

Эрик
источник