У меня есть виртуальная сеть в VMWare с 2 виртуальными машинами.
A: Не подключен к Интернету, но подключен к B
B: подключен к Интернету и к A (интерфейс для A - 192.168.16.2)
Мне нужно создать прокси-сервер SOCKS для перенаправления всего трафика TCP (и HTTP / S) от A к B.
Таким образом, A может пользоваться Интернетом.
Для этого я установил REDSOCKS на A с этой конфигурацией (redsocks.conf):
base {
log_debug = on;
log_info = on;
log = "stderr";
daemon = on;
redirector = iptables;
}
redsocks {
local_ip = 127.0.0.1;
local_port = 12345;
ip = 192.168.16.2;
port = 1337;
type = socks5;
login = "Bmachine";
password = "Bmachine";
}
И я начинаю Redsocks с
sudo redsocks -c redsocks.conf
затем я запускаю ssh на B с помощью этой команды:
ssh -N -D 0.0.0.0:1337 127.0.0.1
А чтобы перенаправить весь трафик на прокси, на A я выполняю следующие команды:
sudo iptables -t nat -N REDSOCKS
sudo iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN
sudo iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345
sudo iptables -t nat -A OUTPUT -p tcp --dport 443 -j REDSOCKS
sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDSOCKS
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDSOCKS
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDSOCKS
Вот и все, но когда я пытаюсь использовать Интернет или открывать Firefox из A, я ничего не могу получить, Интернет не работает.
Вам нужно запустить команду ssh на A
ssh -N -D 1337 b_username@ip_of_b
Затем вы можете настроить свой веб-браузер или установить переменные среды указать на этот прокси: 127.0.0.1:1337
Если вы хотите использовать redsocks, чтобы весь TCP-трафик, предназначенный для порта 80 или 443, направлялся на прокси-сервер, вы можете обновить конфигурацию:
redsocks {
local_ip = 127.0.0.1;
local_port = 12345;
ip = 127.0.0.1;
port = 1337;
type = socks5;
}
Боковое примечание: если вы не туннелируете трафик через A, вам также не нужны правила PREROUTING в iptables.