Переслать интернет-соединение через SSH на удаленный компьютер

Я изо всех сил пытаюсь получить доступ к Интернету с моего удаленного компьютера. Я хотел бы получить доступ к удаленному компьютеру через ssh и там есть подключение к интернету для установки пакетов и т. д.

Это выглядит так:

(Internet) <--wlan0--> ((Local Computer)) <--eth0--> ((Remote Computer))

На обоих компьютерах работает Linux с Ubuntu trusty.
IP-адреса компьютеров:

Локальный компьютер:

wlan0:  10.2.217.213
eth0:   192.168.1.10 (fixed)

Удаленный компьютер:

eth0: 192.168.1.13 (fixed)

Могу ли я просто перенаправить порт, где я получаю подключение к Интернету на моем локальном компьютере? Как я могу определить этот порт?

Я рад за вашу помощь! Я не эксперт по сети, уже несколько часов гуглил и пытался переадресовать, соединить, sshuttle и т. Д., Но безуспешно.

Большое спасибо,
Jonas

3 ответа

Решение

Используйте этот набор правил iptables, чтобы настроить локальный компьютер в качестве маршрутизатора NAT:

iptables -P INPUT DROP  # drop every INPUT
iptables -P FORWARD DROP    # drop every FORWARD
iptables -A INPUT -i lo -j ACCEPT   # accept loopback-INPUT
iptables -A INPUT -i eth0 -j ACCEPT # accept eth0 INPUT
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE   # NAT-Translation
iptables -A FORWARD -i eth0 -j ACCEPT   # accept FORWARD-Traffic from eth0
iptables -A FORWARD -i wlan0 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT # accept FORWARD-Traffic as reply for existing connections
iptables -A INPUT -i wlan0 -m state --state ESTABLISHED,RELATED -j ACCEPT # allow the local computer to access the internet
iptables -A INPUT -i wlan0 -p icmp --icmp-type echo-request -j ACCEPT # allow pings on wlan0
echo "1" > /proc/sys/net/ipv4/ip_forward

Не копируйте эти правила без предварительной проверки. Используйте root-Shell (например, sudo -s) применить эти правила к iptables.

Не забудьте установить локальный компьютер в качестве шлюза для удаленного.

Предполагая, что оба являются Linux-машинами, вам придется настроить маршрутизацию на локальном компьютере, что означает, по крайней мере, установку этого параметра ядра:

echo "1" > /proc/sys/net/ipv4/ip_forward

(Это не постоянная настройка, она исчезла после перезагрузки. Поместите эту строку в /etc/rc.local например, делать это всегда при запуске.)

Удаленный компьютер должен иметь локальный компьютер, настроенный в качестве шлюза по умолчанию.

В зависимости от конфигурации вашего локального компьютера вам может потребоваться настроить iptables для определенных вещей, например NAT. Но в принципе это не должно быть необходимо. Кроме того, маршрутизатору между Интернетом и вашим локальным компьютером, возможно, потребуется знать маршрут к eth0-network (192.168.1.0/24?)

РЕДАКТИРОВАТЬ: я забыл главное: при условии, что у вас есть маршрутизатор NAT между Интернетом и локальным компьютером, и вы установили маршрут на этом интернет-маршрутизаторе к вашему eth0-network, вы можете настроить перенаправление портов для ssh прямо к 192.168.1.13,

Надеюсь, это поможет!

Я разобрался с минимальной настройкой, это можно сделать двумя способами: эфемерно или постоянно:

Эфемерная установка, которая исчезает при каждой перезагрузке:

На шлюзе (локальный компьютер)

  1. sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
  2. echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

Постоянная настройка, которая остается после перезагрузки:

На шлюзе (локальный компьютер)

  1. сохранить правило сiptables-saveи повторно применить его
  2. В /etc/sysctl.conf раскомментируйте#net.ipv4.ip_forward=1

И на удаленном компьютере (это постоянно)

  1. sudo ip route add default via 192.168.1.10

По умолчанию маршрут по умолчанию — 192.168.1.0, либо ваш шлюз использует этот IP-адрес, либо вы меняете маршрут по умолчанию, проверьте выводip route.

См /questions/31665/pereslat-internet-soedinenie-cherez-ssh-na-udalennyij-kompyuter/946960#946960

Другие вопросы по тегам