Переслать интернет-соединение через 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
,
Надеюсь, это поможет!
Я разобрался с минимальной настройкой, это можно сделать двумя способами: эфемерно или постоянно:
Эфемерная установка, которая исчезает при каждой перезагрузке:
На шлюзе (локальный компьютер)
-
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
-
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
Постоянная настройка, которая остается после перезагрузки:
На шлюзе (локальный компьютер)
- сохранить правило с
iptables-save
и повторно применить его - В /etc/sysctl.conf раскомментируйте
#net.ipv4.ip_forward=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