Încerc să direcționez tot traficul printr-un tunel SSH/proxy SOCKS5. Am câteva reguli de tabele IP configurate pentru a redirecționa (aproape) tot traficul către un program bazat pe socket care apoi negociază și redirecționează traficul către proxy-ul SOCKS5. Ceea ce constat este că nu tot traficul meu este redirecționat corect și bănuiesc că este iptables
reguli care nu funcționează. Ar fi cineva dispus să-mi împrumute o a doua pereche de ochi?
De exemplu, pot alerga nc 8.8.8.8 80 2>&1
și văd în programul meu bazat pe socket că redirecționarea are loc. Dar când eu curl google.com
, primesc o eroare de rezoluție: curl: (6) Nu s-a putut rezolva gazda: google.com
. Nu există jurnale în programul meu bazat pe socket care să arate că a fost încercată orice redirecționare.
Am programul bazat pe socket care ascult la 0.0.0.0:9900
iar proxy-ul SOCKS5 este inițiat pe portul 9901, de exemplu. Rulez toate acestea într-un container Docker, în cazul în care contează (dar nu cred că ar trebui să conteze prea mult...).
Inițiez proxy-ul SOCKS5 astfel:
#!/usr/bin/env bash
ssh -D 127.0.0.1:9901 -N [email protected]
Aici sunt iptables
regulile pe care le folosesc:
#!/usr/bin/env bash
# Creați un lanț nou în tabelul NAT.
iptables -t nat --new-chain CUSTOM
# Creați o regulă pentru a lăsa pachetele destinate localhost în pace.
iptables -t nat --append CUSTOM --destination 127.0.0.0/8 --jump RETURN
# Creați o regulă pentru a părăsi tunelul pe care îl vom crea singuri.
# 192.168.0.25 este IP-ul static al mașinii care rulează serverul SOCKS5.
iptables -t nat --append CUSTOM --destination 192.168.0.25 --protocol tcp --destination-port 22 --jump RETURN
# Creați o regulă pentru redirecționarea întregului trafic TCP prin tunelul SSH.
iptables -t nat --append CUSTOM --protocol tcp --jump LOG --log-level info --log-prefix='[iptables] '
iptables -t nat --append CUSTOM --protocol tcp --jump REDIRECT --la-porturi 9900
# Conectați lanțurile OUTPUT și PREROUTING ale tabelului NAT la lanțul nostru personalizat definit de utilizator.
iptables -t nat -I IEȘIRE 1 --jump CUSTOM
iptables -t nat -I PREROUTING 1 --jump CUSTOM
Și aici este rezultatul complet al iptables -t nat -L -v
:
PRERUUTARE în lanț (politica ACCEPTĂ 165 pachete, 21537 octeți)
pkts bytes target prot opt in out source destination
165 21537 CUSTOM toate -- oriunde oriunde oriunde
5129 389K DOCKER toate -- oriunde oriunde oriunde ADDRTYPE se potrivește cu dst-type LOCAL
6987 1026K delegate_prerouting all -- oricare oriunde oriunde
INTRARE în lanț (politica ACCEPTĂ 114 pachete, 8854 octeți)
pkts bytes target prot opt in out source destination
IEȘIRE în lanț (politica ACCEPTĂ 40 de pachete, 2369 de octeți)
pkts bytes target prot opt in out source destination
40 2369 CUSTOM toate -- oriunde oriunde oriunde
0 0 DOCKER all -- oricare oriunde oriunde !127.0.0.0/8 ADDRTYPE se potrivește cu dst-type LOCAL
POSTROUTING în lanț (politica ACCEPTĂ 39 de pachete, 2301 de octeți)
pkts bytes target prot opt in out source destination
72 9027 MASQUERADE toate -- orice !docker0 172.17.0.0/16 oriunde
1614 99565 delegate_postrouting all -- oricare oriunde oriunde
Lanț DOCKER (2 referințe)
pkts bytes target prot opt in out source destination
0 0 RETURN all -- docker0 oriunde oriunde
Lanț CUSTOM (2 referințe)
pkts bytes target prot opt in out source destination
39 2301 RETURN all -- oricare oriunde oriunde 127.0.0.0/8
0 0 RETURN tcp -- orice oriunde oriunde 192.168.0.25 tcp dpt:ssh
0 0 LOG tcp -- oriunde oriunde oriunde prefixul informațiilor la nivel de LOG „[iptables]”
0 0 REDIRECT tcp -- oriunde oriunde oriunde porturi redir 9900
Lanț MINIUPNPD (2 referințe)
pkts bytes target prot opt in out source destination
Chain delegate_postrouting (1 referințe)
pkts bytes target prot opt in out source destination
1614 99565 postrouting_rule all -- orice oriunde oriunde oriunde /* lanț de utilizatori pentru postrouting */
0 0 zone_lan_postrouting all -- orice br-lan oriunde oriunde
0 0 zone_wifi_postrouting all -- orice br-wifi oriunde oriunde
55 5757 zone_wan_postrouting all -- orice eth0 oriunde oriunde
Chain delegate_prerouting (1 referințe)
pkts bytes target prot opt in out source destination
6987 1026K prerouting_rule all -- oriunde oriunde oriunde /* lanț de utilizatori pentru preroutare */
4545 342K zone_lan_prerouting all -- br-lan oriunde oriunde
1 32 zone_wifi_prerouting all -- br-wifi oriunde oriunde
2441 684K zone_wan_prerouting all -- eth0 oriunde oriunde
Chain postrouting_lan_rule (1 referințe)
pkts bytes target prot opt in out source destination
Chain postrouting_rule (1 referințe)
pkts bytes target prot opt in out source destination
Chain postrouting_wan_rule (1 referințe)
pkts bytes target prot opt in out source destination
Chain postrouting_wifi_rule (1 referințe)
pkts bytes target prot opt in out source destination
Chain prerouting_lan_rule (1 referințe)
pkts bytes target prot opt in out source destination
Chain prerouting_rule (1 referințe)
pkts bytes target prot opt in out source destination
Chain prerouting_wan_rule (1 referințe)
pkts bytes target prot opt in out source destination
Chain prerouting_wifi_rule (1 referințe)
pkts bytes target prot opt in out source destination
Lanț zone_lan_postrouting (1 referințe)
pkts bytes target prot opt in out source destination
0 0 postrouting_lan_rule all -- orice oriunde oriunde oriunde /* lanț de utilizatori pentru postrouting */
Lanț zone_lan_prerouting (1 referințe)
pkts bytes target prot opt in out source destination
4545 342K prerouting_lan_rule all -- oriunde oriunde oriunde /* lanț de utilizatori pentru preroutare */
Lanț zone_wan_postrouting (1 referințe)
pkts bytes target prot opt in out source destination
55 5757 postrouting_wan_rule all -- orice oriunde oriunde oriunde /* lanț de utilizatori pentru postrouting */
55 5757 MASQUERADE toate -- oriunde oriunde oriunde
Lanț zone_wan_prerouting (1 referințe)
pkts bytes target prot opt in out source destination
2441 684K MINIUPNPD toate -- oriunde oriunde oriunde
2441 684K MINIUPNPD toate -- oriunde oriunde oriunde
2441 684K prerouting_wan_rule all -- oriunde oriunde oriunde /* lanț de utilizatori pentru preroutare */
Chain zone_wifi_postrouting (1 referințe)
pkts bytes target prot opt in out source destination
0 0 postrouting_wifi_rule all -- orice oriunde oriunde oriunde /* lanț de utilizatori pentru postrouting */
Chain zone_wifi_prerouting (1 referințe)
pkts bytes target prot opt in out source destination
1 32 prerouting_wifi_rule all -- any anywhere anywhere /* lanț de utilizatori pentru prerouting */
Anunță-mă dacă mai sunt și alte informații pe care ar trebui să le includ și mulțumesc anticipat!