Verwenden von Shadowsocks zum Erstellen eines transparenten LAN-Gateways

Verwenden von Shadowsocks zum Erstellen eines transparenten LAN-Gateways

Für Einzelnutzer wird SS auf dem Mobiltelefon oder Terminal installiert. Für Unternehmensnutzer ist eine solche Konfiguration mühsamer und nicht einfach zu verwalten und zu warten. Daher muss es am Gateway oder auf einem Server im Intranet konfiguriert werden und auf das Gateway verweisen.

Ideen:

1.dnsmasq+China DNS+ss-Tunnel löst das Problem der DNS-Verschmutzung

2. ss-redir arbeitet mit iptables und ipset zusammen, um inländischen und ausländischen Datenverkehr umzuleiten, sodass inländische Websites direkt verbunden sind, während ausländische Websites über ss-redir laufen

Analyse der Gateway-Lösung:

1. dnsmasq fungiert hauptsächlich als DNS-Cache. DNS-Anfragen werden an ChinaDNS gesendet, das die Anfragen gleichzeitig an inländische DNS-Server und SS-Tunnel sendet. SS-Tunnel ist für die Weiterleitung an SS-Server verantwortlich. Da SS im Ausland nicht kontaminiert wird, erhält ChinaDNS zwei Antworten und bestimmt, ob die Ergebnisse kontaminiert sind. Schließlich erhält dnsmasq eine nicht kontaminierte DNS-Antwort.

2.iptables arbeitet mit ipset zusammen, um zwischen inländischem und ausländischem Verkehr zu unterscheiden

System: Ubuntu 20.0

Installieren und konfigurieren Sie dnsmasq

1. Installieren Sie dnsmasq

apt-get installiere dnsmasq

2. Ändern Sie die Konfigurationsdatei /etc/dnsmasq.conf

keine Auflösung
server=127.0.0.1#5354

3. Starten Sie dnsmasq

Dienst DNSMASQ starten

Installieren und Konfigurieren von ChinaDNS

1. Siehe die offizielle Dokumentation von ChinaDNS

2. ChinaDNS herunterladen, ​​Link​​

wget -c https://github.com/shadowsocks/ChinaDNS/releases/download/1.3.2/chinadns-1.3.2.tar.gz

Kompilieren

tar -xvf chinadns-1.3.2.tar.gz && cd chinadns-1.3.2
./konfigurieren && make 
src/chinadns -m -p 5353 -c chnroute.txt & ###Wird nur verwendet um zu testen ob die chinadns gestartet werden können netstat -ntlpu ###### Den gestarteten Port anzeigen

3. Nach der Kompilierung wird eine ausführbare Datei chinadns im src-Verzeichnis generiert und nach /usr/local/bin kopiert

cp ./src/chinadns /usr/local/bin/

4. Erstellen Sie eine Datei mit dem Namen chinadns in /etc/init.d/ und kopieren Sie den folgenden Code hinein. Denken Sie daran, ​sudo chmod +x /etc/init.d/chinadns​ auszuführen, um es ausführbar zu machen

#!/bin/sh
### BEGINNEN INIT INFO
# Bietet: chinadns
# Erforderlicher Start: $network $local_fs $remote_fs $syslog
# Erforderlicher Stopp: $remote_fs
# Standard-Start: 2 3 4 5
# Standard-Stopp: 0 1 6
# Kurzbeschreibung: Starten Sie ChinaDNS beim Booten
### END INIT INFO ### Bereitstellungspfad starten
# Legen Sie diese Datei unter /etc/init.d/ ab.
### Bereitstellung beenden PathDAEMON=/usr/local/bin/chinadns
DESC=ChinaDNS
NAME=chinadns
PIDFILE=/var/run/$NAME.pidtest -x $DAEMON || exit 0case "$1" in
  Start)
    echo -n "$DESC wird gestartet: "
    $DAEMON \
        -c /etc/chinadns/chnroute.txt \
 -M \
        -p 5354 \
 -s 114.114.114.114,127.0.0.1:5300 \
        1> /var/log/$NAME.log \
        2> /var/log/$NAME.err.log &
    echo $! > $PIDFILE
    echo "$NAME."
    ;;
  stoppen)
    echo -n "$DESC wird gestoppt: "
    beende `cat $PIDFILE`
    rm -f $PIDFILE
    echo "$NAME."
    ;;
  Neustart|Force-Neuladen)
    $0 Stopp
    Schlaf 1
    $0 Start
    ;;
  *)
    N=/etc/init.d/$NAME
    echo "Verwendung: $N {start|stop|restart|force-reload}" >&2
    Ausfahrt 1
    ;;
esacexit 0

Hinweis: Für Zeile 18 -c /etc/chinadns/chnroute.txt füllen Sie bitte den Pfad entsprechend Ihren eigenen Anforderungen aus.

5. Chinadns starten/neu starten/stoppen

Dienst Chinadns starten #Chinadns starten
Service Chinadns neu starten #Chinadns neu starten
Dienst Chinadns stoppen #Stop Chinadns

Installieren und konfigurieren Sie shadowsocks-libev (einschließlich ss-redir und ss-tunnel)

1. Detaillierte Informationen zum Vorgang finden Sie in der offiziellen Dokumentation

2. Führen Sie den folgenden Code aus

apt-get installiere Software-Eigenschaften-Common -y
add-apt-repository ppa:max-c-lv/shadowsocks-libev -y
apt-get-Aktualisierung
apt installiere Shadowsocks-libev

3. Konfigurieren Sie /etc/shadowsocks-libev/config.json. Ersetzen Sie 111.111.111.111 durch Ihre eigene VPS-Serveradresse und ändern Sie das „Passwort“ selbst.

{
    "Server":"111.111.111.111",
    "Server-Port": 8388,
    "lokale_Adresse": "0.0.0.0",
    "lokaler_Port":1080,
    "Passwort": "Passwort",
    "Zeitüberschreitung": 60,
    "Methode":"aes-256-cfb",
    "Modus": "tcp_and_udp"
}

4. Starten Sie SS-Tunnel und SS-Redir

/usr/bin/ss-tunnel -c /etc/shadowsocks-libev/config.json -u -l 5300 -L 8.8.8.8:53 &
/usr/bin/ss-redir -c /etc/shadowsocks-libev/config.json -b 0.0.0.0 -u &

Weiterleitung aktivieren

1. Ändern Sie /etc/sysctl.conf und heben Sie die Kommentierung auf:

net.ipv4.ip_forward=1

2. Führen Sie den Befehl aus, damit er wirksam wird

sysctl -p

Konfigurieren Sie iptables und ipset

1. IPset für inländische IP-Adresse generieren

curl -sL http://f.ip.cn/rt/chnroutes.txt | egrep -v '^$|^#' > cidr_cn
###Wenn die Ausführung fehlschlägt, können Sie cat /usr/local/src/chinadns-1.3.2/chnroute.txt | egrep -v '^$|^#' > cidr_cn verwenden.
ipset -N cidr_cn hash:net
für i in „cat cidr_cn“; führe echo ipset -A cidr_cn $i >> ipset.sh aus; fertig
chmod +x ipset.sh und sudo ./ipset.sh
rm -f ipset.cidr_cn.rules
ipset -S > ipset.cidr_cn.rules
cp ./ipset.cidr_cn.rules /etc/ipset.cidr_cn.rules

2. Iptables konfigurieren

iptables -t nat -N shadowsocks# Reservierte Adressen, private Adressen und Loopback-Adressen gehen nicht durch den Proxy iptables -t nat -A shadowsocks -d 0/8 -j RETURN
iptables -t nat -A shadowsocks -d 127/8 -j ZURÜCK
iptables -t nat -A shadowsocks -d 10/8 -j ZURÜCK
iptables -t nat -A shadowsocks -d 169.254/16 -j ZURÜCK
iptables -t nat -A shadowsocks -d 172.16/12 -j ZURÜCK
iptables -t nat -A shadowsocks -d 192.168/16 -j ZURÜCK
iptables -t nat -A shadowsocks -d 224/4 -j ZURÜCK
iptables -t nat -A shadowsocks -d 240/4 -j RETURN# Die folgenden IPs sind die IPs von Geräten im LAN, die keinen Proxy verwenden
iptables -t nat -A shadowsocks -s 192.168.2.10 -j RETURN# Daten, die an den Shadowsocks-Server gesendet werden, gehen nicht durch den Proxy, da sie sonst in eine Endlosschleife geraten.# Ersetzen Sie 111.111.111.111 durch die IP/den Domänennamen Ihres SS-Serversiptables -t nat -A shadowsocks -d 111.111.111.111 -j RETURN    
# Adressen auf dem chinesischen Festland verwenden den Proxy nicht, da dies sinnlos ist und viel Aufwand erfordert. iptables -t nat -A shadowsocks -m set --match-set cidr_cn dst -j RETURN# Alle anderen Weiterleitungen werden zum ss-redir-Abhörport 1080 umgeleitet (die Portnummer ist beliebig, vereinheitlichen Sie sie einfach).
iptables -t nat -A shadowsocks ! -p icmp -j REDIRECT --to-ports 1080# Fügen Sie der OUTPUT-Kette eine Regel hinzu, um zur Shadowsocks-Kette umzuleiten iptables -t nat -A OUTPUT ! ​​​​-p icmp -j shadowsocks
iptables -t nat -A VORROUTING ! -p icmp -j shadowsocks

Festlegen des Standardgateways

Das transparente Gateway muss die Standardadresse des nächsten Hops festlegen, d. h. wohin das Gateway das Datenpaket senden soll, nachdem es die Route des Datenpakets ermittelt hat. In unserer Heim-LAN-Umgebung ist dieser nächste Hop die Adresse des Routers.

Bitte beachten Sie, dass 192.168.2.1 die Adresse des Routers sein sollte. Manche könnten 192.168.0.1 und manche 192.168.1.1 sein. Sie müssen die spezifischen Einstellungen überprüfen.

p2p1 ist die Netzwerkkarte, manchmal kann es auch eth0 sein. Bitte überprüfen Sie Ihren eigenen Netzwerkkartencode über ​ifconfig​

route del default
Route hinzufügen Standard gw 192.168.2.1 p2p1

Richten Sie das DNS- und DHCP-Gateway des Routers ein

1. Angenommen, die IP-Adresse des transparenten Gateways ist 192.168.2.2, dann stellen Sie den DNS des Routers auf 192.168.2.2 ein

2. Stellen Sie im Unterpunkt DHCP des Routers das Intranet-Gateway des Routers auf 192.168.2.2 ein

Dies ist das Ende des Artikels über die Verwendung von Shadowsocks zum Erstellen eines transparenten LAN-Gateways. Weitere Informationen zur Verwendung von Shadowsocks zum Erstellen eines transparenten Gateways finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Einrichten eines globalen Shadowsocks+Polipo-Proxys in einer Linux-Umgebung

<<:  CSS-Stil zurücksetzen und löschen (damit verschiedene Browser den gleichen Effekt anzeigen)

>>:  Vue3+Vite+TS implementiert sekundäre Kapselung von Element-Plus-Geschäftskomponenten sfasga

Artikel empfehlen

Implementierung der Vue-Nuxt-Anmeldeauthentifizierung

Inhaltsverzeichnis einführen Link Start Gehen Sie...

Der Unterschied zwischen clientWidth, offsetWidth, scrollWidth in JavaScript

1. Konzept Sie alle sind Attribute des Elements u...

Importieren Sie die CSV-Datei mit Navicat in MySQL

In diesem Artikel wird der spezifische Code zum I...

Die HTML-Eingabedateisteuerung begrenzt den Typ der hochgeladenen Dateien

Fügen Sie der Webseite ein HTML-Steuerelement für...

Beispiel zur MySQL-Passwortänderung – ausführliche Erklärung

Beispiel zur MySQL-Passwortänderung – ausführlich...

Analysieren der häufig verwendeten v-Anweisungen in vue.js

Inhaltsverzeichnis Erklärung des V-Texts bei „if“...

Verwendung des Zielattributs des HTML-Tags a

1: Wenn Sie das Tag <a> zum Verlinken auf ei...

Mehrere magische Verwendungen des JS ES6 Spread-Operators

Inhaltsverzeichnis 1. Attribute hinzufügen 2. Meh...

Zwei Möglichkeiten, das WeChat-Miniprogramm mit Tencent Maps zu verbinden

Ich habe kürzlich ein WeChat-Applet geschrieben u...

Detaillierte Erklärung der Verwendung des MySQL-Paradigmas

1. Paradigma Der englische Name des Paradigmas la...

Rastersysteme im Webdesign

Bildung des Gittersystems Im Jahr 1692 war der fr...

Einführung mehrerer benutzerdefinierter Schriftarten in CSS3

Heute habe ich ein Problem in HTML gefunden. Es s...