Spotify áĽáá´áľ daemonsáᣠRFCsáᣠá ááłá¨ áá¨áŚá˝á áĽááľáłá á áĽá áááľ áááá áĽááľáłáľá°ááá áá¨áłá áá˝ááᢠááá áááá áŤááťá áá áá¨á°áłáᣠááá áá á ááłááľ ááŞáá¨á áĽáŠ áááŽá˝á á áĽáááľ áááááá˘
á¨ááááŞáŤá
á áśáľá°áá áá, Spotify á á áá á áľáŤáťá ááá áá á¨á°áá°á¨áą ááľáłáááŤáá˝á áĽáŤáłá¨ áĽáá°áá á°áľá°ááá. á á ááłááľ á ááŽá˝ ááľáłáá፠á¨ááś áĽáá°ááááŁá á°á áááᢠáááłá, á á¤ááŠáľ áŞááĽáá. áĽá á¨á፠ááŞáá¨á áŁááá áá፠ááľáĽ ááľáłáááŤá ááá°áá¨á âá áŞáâ áĽá áľ á°áá°áá˘
áľá Spotify áľáá˝
á á á áááᣠSpotify áĽáááł ááᲠá ááᢠáááľáá˝á ááŞáá¨áá áááááľ ááá á áá ááá á áá áľáĄ á ááŽááá áá áŤááá áŚáł áá° áŁá á ááś áááᥠá áááá áĽáť á¨áá¨áá á°áľáá á¨áľáŚáł áŤááľ ááá á¨á áἠáá áá˛á á¨áááá áĽá áĽá á°ááśá˝á áááááᢠá á á ááá ᣠáĽáą ááĽáąá áá ᣠáá á¨á°áᨠá á°á á°á¨á°á ááᢠááá áĽááłá áĽá á°áá˝ áááŁáá áĽáŞáľ á˛á áá áá á˘áŤá°ááá áĽá áá ááááľ á¨áááᢠáľááá , á¨áá á áłá˝ áŤáá ááá ááá á á´áľááśá áľáŞáľ ááłá áá áĽáť áá¨áłá. á¨áá á á áá á¨á°ááŁáŽá˝ ááľáááľ á áááá. á ááłááľ á°á¨ááŞáášá áĽáť ááá¨áĄ.
ááá á áŁá á¨á°ááłá°á áá?
áĽá á Spotify áá á ááľáĽ ᨠsocks-proxy áááĽá á˛áááἠá áľá¤ áá áᢠá˝áአáááŁáą áĽá á¨ááá ááá á áá áá á áśááľ ááľáĽ áá¨ááἠá áá°áŤáᢠá á°á¨ááŞáᣠááá˘áá˝ á áá°á áááľ á ááŽáá˛á ááŞáŤ á¨áá ááá áŤá°áááᥠáá ááááľáŁ á¨ááŤá áá¨áá¨áᣠááá ááľá áᣠáá á á¨áŁá˘áŤ á᪠áá á¨ááááľ ááľá¨áŽá˝ áĽáá˛áá አáŤá°áááá˘
áŁáá°á¨áá á°ááŁáŤáľ áá áááá°ááá áĽá á¨á áá á áľá°ááá áĽá á áľá°áłá˝ ááá áááááľ á°ááľáá.
áĽáá
á¨áá áŚáł á ááŁá˘á áá á¨á
á áá áľ: ááá á áľááľáľá ssh
á ááá -D
áĽá ፠áá¨á¨áťá áá? áĽá á á á ááá, áĽáą áľááá áááá. ááá ááᣠá ááááŞáŤáŁ áľáá°áá°áą áááááśá˝ áááá°áĽ áá
á ááá ááá áá°á¨á áĽá á¨á ááśá˝ áá áá°áááľ áááľá¨áľ á áá áľá˘ áĽá ááá°á: á áŁá ááá áĽá á á°ááş áá.
á áľááľáá áľ
áĽáá°á°ááá°á á¨á፠áá° áá á¨áá áá° áłá˝ áĽáááľá âáááâ ááłáŁá˝áá á°ááŁáŤá áááľá¨á á¨ááŤáľááááá áá áĽáááá˝á˘
á ááááŞáŤ ááŽáᲠáŤáľáááááłá
áĽá áĽá á ááŤáŽá˝ á á ááľ áá á á-
- á¨á°á¨ááą á¨á°áŞ ááááŽá˝ áááľ áĽá ááá°áľ áá˝ááᢠááŤá˝ (ááá áááááľ á á¨ááą) ᣠáá áášá á¨áááłáá áĽá á¨áĽáá°áá
áŤá ááŽáá˛áá˝ á¨á
áááľ ááá áá° áᎠááá¨áŤáᢠáľááá
áááŽáᲠááááŽá˝ á°ááłá áááá/áááᣠá á°áááá á áááľ áĽá ááá ááŁáŤáľ á áľááá ááᣠáĽá á Spotify ááľáĽ á¨á°áááá á°áŞ á¨áá°áŤáľ áĽáŤá áááľ áĽáá°áá áááŤá (áĽáŠáŁ ááááŁáľ á
HTTP_PROXY
áŤáľá°ááá áĽá ááá ááá˝ áľáŤáá áá°á፠áĽááłááá áĽá áá á á፠ááá አááááľáŽá˝á˘ - á°ááłáłá ááŽáᲠááááľ áĽá á¨áá á¨á°ááášáľ á áĽááááš á˝ááŽá˝ áĽáŤáľáá ááłá áá˝áá. ááá áá á á°áŞ áá áá˛áŤáá á Spotify áá ááŞáá¨á ááááľ áá˝áá ᣠáĽá áá áááá á°ááŁá á°ááŁáŤá á áá°ááá˘
- áŤáá°á áŤáłáľáᢠááááŁáľ áĽáá°áááąáľ, áá á¨áĽá áá፠áá.
á á ááŁá á á¤ááŠáľ áŞááĽáá ááá á áá áľáá˝ ááá ááľáĽ á¨á áááá áá áá°á áĽááłáááľ ááłáá
áá˝ááᢠáá
áá áá áá áĽá á¨á°ááááá ááŽáᲠá áአáá áááŁáľ áŤáľáááááłáᢠáአáŁáááŤáá˝ áŤáá°á áŤáá áá°á áá áá¨áŠ áá˝ááá˘
áľááá
ᣠá¨áĽá á ááŤáŽá˝áĄ áľáŠááľ - á á á¨áłá˝ á áá°ááᣠáĽá á¨á¤á˝á˛á˛á ááŽáá˛á á áááááᣠá áá
ááŞáŤ á áŁá áĽá ááŽáśáŽáá˝ á áᢠáĽá á SOCKS á áŤáŁá˘ áŤááá á áľá°áá ááá á áľá°áá ááá á¨ááá˘
áľá ááŤá áĽá áááá á¨áłáá´ áááŞáŤá á áľá áĽá
ᢠáĽáą client pass
, socks pass
, á áááážášá á áľááá ááááἠáĽá áá¨ááá á áááą socksmethod: username
. á áá
á
á˝áŁ ááá¨áááŤáŁ á¨áá ááááŤá á¨áľáááą á°á áááá˝ ááá°áłáᢠáĽá áľá á°á
áááľ áŤáá ááá: áá° localhost ááłá¨áťá áá¨áá¨á, á°á áááá˝á ááá°áĽ, ááá° - áá
áĽáá° ááá ááŤá፠á¨ááá°á áĽáť áá.
áá° á ááłá¨ áá¨áĄ á¨áááá¨áľ á°áŞ áŤá°ááŠ
á¨ááłá á áááľ áľáááśá˝ áá.
á ááľ á áľáá
á°áŞáá á áľá°áŤáááááᣠá áá á¨á ááá áá áľá ááááľ á ááĽáᢠá á°áááá ááá ááľáĽ áá á áá áŤáá áá˝á áŤáááľ, áá áá ááĽáĽ á áĽááá áááá áá˝áá. á ááľ á¨ááá (áĽá, á¨áá áĽáá°á°á áá°á, á áá°áá˝ á¤áľ ááľáĽ áĽáááŤáá) áĽá á á á áŤá˘áŤá áŤáá áá á áá á áááá ááľáĽ á¨áá áŚáł áá, áľááá á ááłá¨ áá¨áŚá˝á áĽáá ááá.
áľááá
á áᣠá áľáŠá¨áľ á¨áá¨áłá°áá á ááŁá˘ áĽáá°áá áá áááᥠááá áĽáá° á ááľ ááŁá á áááááľ á áá áááá˘
á°ááŁáᥠᨠNAT ááᣠá¨áá áŚáł á°áŞ á áᣠáá á áá áŁáá áĽá á á áá áŤá áá áŤáá á¨áŞáá¤áľ áá°áŚá˝ á á ááą áá ááľáá áŤáľáááááłáá˘
áá
á áá áá°áĽ á ááľá°ááá áááł áá˝áá áĽá áá°áĽ ááááŤáłá áá (áá
á á¨áá á á°á áá°á áá á¨áľ á°ááŁáŤá áááá) ssh
) ááá áááľááá áá° áááŁá á ááłá¨ áá¨áĽ á áŞáá¤á á ááŁááᢠáá ssh
áĽáá´áľ ááĽáŤáľ áĽááłááĽá áĽááááá ᣠautossh
ááá°áľ á á°ááş ááᣠáľááá
OpenVPNá áĽááá°áľá˘
DigitalOcean á áá systemd
. áá (config) áŤáľááĄáľá˘ /etc/openvpn/client/
áĽá á
áĽáŤáá áá° ááá¨á á áááą .conf
. á¨á፠á áá á áááááąá áááľáą [email protected]
ááĽáˇ ááľá¨áá á áľááł enable
áĽá ááá ááá á ááĽá¨áŠ á°áľ áá áá˝áá˘
áĽááἠáá, áááááá á¨áľáŤáá á á áŁáŤ áá° á á˛áľ á¨á°áá ᨠVPN áá°áá¨á á ááĽá, ááááŤáąá á ááá˝ áłáľ ááľáĽ áľáŤáá á ááá á á°áá áá áá˝á áá áŤááá ááĽááľ ááááľ áľáááááá.
áĽá á áᣠáá°áá áá˝á á VPN á áááá áá á¨áááááłááľ á áá á áľáŤáť ááááἠá ááĽáᢠáá
á áłáŞáŠ ááľáĽ áľáá˝ áááś áŤáľááááá. áá
áá áááľá¨á ááááľ áŤáľáááááłá ifconfig-pool-persist
ᣠá ááľá ipp.txt
, á¨OpenVPN áá á¨á°áŤá°á° áĽá á°áá á-config-dirá áŤáá áĽá á¨á°ááááá á°áá á á áá¨á áá
á¨áľá áŤááľá ifconfig-push
á áľááááá áááĽá áĽá á ááááá á¨á áá á áľáŤáť.
áľáááľ áááľ
á áá á¨á áááá¨áĄ áá ááľ áááľ á¨áááἠáá˝á á "ááľááá" áá á áá áĽá ááŤáľ ááłáľááľ áĽá á áá ááá áá˝áá. áááľáᣠá¨áľáŤááŠá ááá á áĽáą á áŠá á ááá˘
áľááá , á á˛áľ á°ááŁá: áá áľáŤáá áá° á á˛áľ á¨á°áááá áááŁá á ááłá¨áá¨áĽ áĽáá˛ááľ áĽá áááš á¨á፠áĽáá˛áááľ á¨áŞáá¤áľ áá°áŚá˝ á á ááą áá á¨áá°áá°áá áľáŤáá ááĽááľ áŤáľáááááłá áá á ááá˘
áááľááĄ- á áĽááἠiptables
! á¨áĽáą áá ááááááľ áĽáá°áá
áŤá á áľá°áá áĽáľá ááź áááááłá?
á¨ááááá áá á¨áľ á áŁá á ááĽááľ ááá áá˝áá, á áśáľáľ á°ááłáľ ááľáĽ, ááś á¨ááłá°áĽ áááľ áĽá áĽááľ á¨á á áááŽá˝, ááááŤáąá ááľáááŽá˝á áá¨á á áŁá á¨á°áᨠáá°áľ áá.
á ááááŞáŤ á á¨ááá ááľáĽ á¨áľáŤáá á á
áŁáŤ ááá¨áá ááááľ áŤáľáááááłáᢠáá
ááá ááŁáá ipv4.ip_forward
áĽá á áľááá° áááá áĽá á á ááłá¨áá¨áĽ á áááŁáŞá áá á áááľá¨áľ á áľááš á á°áᨠáááł áá
áˇáá˘
á ááá°á á°á¨á, á VPS áá áá°áĽ ááá¨áĽ áĽá áá° áĽáą á¨áááąáľá áááá áľáŤáá áá° áááŁá áááľ á ááłá¨ áá¨áŚá˝ áá á áá áŤáľáááááłá. áá áá ááľá¨á ááťáá, áááłá, áĽáá°áá :
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8080 -j DNAT --to-destination 10.8.0.2:8080
áĽáá áááá ᨠTCP áľáŤáá áá°áĽ 8080 ááŤá á áááá˝ áá° áá˝á áĽáááŤáá IP 10.8.0.2 áĽá á°ááłáłá áá°áĽ 8080.
á¨áĽáŤáá ááťáť ááááŽá˝ ááááá netfilter
, iptables
áĽá á á á ááá ááááá, ááá°áá°á á áŁá á áľááá áá
áľááá ᣠá áá á¨áĽá ááŹáá˝ áá° áááŁáá áłáĽááľ áá ááŤá áĽá... áĽá፠áááŤáᢠá áľááá ᣠá¨áśááľ ááŽáá˛á á¨á°á°á á ááá˝ á áá˝á áá áŁáá ááŁáŞ ááá˘áŤ á áłáá´ á áŠá ááááłá áĽá á°ááŁáŠ ááĽááá ᣠááááŤáąá á ááľáááŽá˝ ááľáĽ áá ááľ á áá áĽáŤá ááá áĽá á¨áá ááá˝ ááá á á¨á°ááá° á áá°áá ᢠáľááá , áááŁáŁáľá ááá á á ááĽá.
áľááá
ᣠá áá áááá ááŹáá˝ á¨ááŽáá˛á áá° á¨áášáá áłáĽááľ áá° áŞáá¤áľ á áá á áá ááá áŤáľáááááłáᢠáĽáá
áááłá ââáľáá˝ á¨á¨á áá, ááááŤáąá áĽáť áá iptables
á á á ááá¨ááᣠááááŤáąá á¨áááŤá˝á á ááľ á¨ááľá¨áť á áľáŤáťáá áŤáľá°áŤá¨áá (PREROUTING
), á¨á፠á¨áĽá áĽá
á áá° á áááá¨áĽ á áá áá, áĽá áŤááľá°áŤá¨áá, áĽá
á áá° áááłá default gateway
. áľááá
, á¨áá¨á°ááľá ááľá¨á á ááĽááľ: á°áá°ááąá áŤáľáłááą mangle
, ááŹáśá˝á ááááľ áááľá¨á iptables
áĽá áá°áááąá áľ áŚáł á ááááá¸á á áĽá á¨áááŞáŤ á á¨á´á áá á á
ááá¸áá˘
áĽááłá°á¨áá áĽáá áłááááĄ-
iptables -t mangle -A OUTPUT -p tcp --sport 8080 -j MARK --set-mark 0x80
ip rule add fwmark 0x80 table 80
ip route add default via 10.8.0.1 dev tun0 table 80
á¨á᪠áľáŤááá áĽáááľáłáá ᣠá°áŞá á¨á°ááá á áľ áá°áĽ á¨áá ááá áá ááááľ áŤáľáá (á áĽá ááłá 8080) ᣠáááá ááááľ á¨á°á°á¨ááŁá¸áá áľáŤáá áá° áááŞáŤ á á¨á´áá ááĽá 80 áĽáááŤáá (á á á ááá ááĽáŠ á ááá áá á¨á°á፠á áá°áá ᣠáĽá áĽáť áĽáááááá) áá°) áĽá á ááľ áá á á áá áá¨ááŠ, á áá áá á¨áľ á áá á áá á¨áĽ ááľáĽ á¨á°áŤá°áąáľ ááá áĽá˝áá˝ áᰠᨠVPN ááĄáľ á ááłá¨ áá¨áĽ áá ááŤá.
á áŁá áĽáŠ! á áá ááŹááš áá° VPS ááááłá ... áĽá áĽá፠áááłá. ááááŤáąá VPS á¨áĽááą áá áá ááľá¨á áĽááłáá áľ á áŤáá á. áľááá ᣠáŤáá°á¸ááŠáŁ á¨á¨áášáá áłáĽááľ á¨áááŁáá áľáŤáá á ááá áá° á áááá¨áĽ ááááľ áá˝ááá˘
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 172.42.1.10
áĽáá ᨠ10.8.0.0 áłáĽáᾠᨠ255.255.255.000 áááĽá áŤáá ááá áá á ááá-á¤áá¤áľ á°á á áá áá° á áááá¨áĽ ááŻá áá° ááŁáŞ á áááá˝ áá ááŤáᢠáá ááá á¨áá áŤá áá°áĄá á ááá áŤáľá°áááá áĽáť áááá áááľá á VPS áá áŤáá áᢠáá°áĽ á¨ááŽáá˛áŤá˝á áá°áĽ áá á¨ááľáá áááá áἠááŁá áááŁáᢠá áá áá፠áľáá˝ á°á¨á᪠áá¨áŤ áá°ááľáĽááľ áá˝áá.
á¨áá áŚáł á áá ááá ááá ááľáŤáľ áááá á áá áľ. áĽá áľáá˝ áĽáť áááŤá: ááá ááááŠá áá¨áááĽáá á áááą iptables
и route
áłáá á¨á°ááᨠá áá á ááá ááᢠá iptables
áĽáá° áአáááá˝ á á /etc/iptables/rules.v4
(á áĄáĄááą áááł) ᣠáá áááááśá˝ ááá ááá áľáá˝ á¨á°ááłá°á ááᢠáááá¸á up/down
á¨áŞáá¤á áľááŞááśá˝á áááľáŁ ááá áĽááłá áĽááą á¨á áá á á¨áááľ á¨á°á¨ááá áááľáááá˘
áľáŤááá á¨áá°áá áŞáŤá á ááŽáᲠááľáĽ á á ááá
áľááá ᣠá ááááá ááá ááľáĽ áá¨áá፠áŤáá ááŽáᲠá ááᣠá áááááłááľ áá á áá á áľáŤáťá˘ á¨áá¨á áĽáąá áá áá áĽá á¨Spotify áľáŤááá áá°á፠ááá ááᢠááá áá á¨áá áĽáá°á°áááá á ááľ á˝áá á á ᣠá Spotify ááľáĽ á¨ááŽáá˛á á¨ááá˘áŤ-ááá áá á áá°áŤá ᣠáľááá áĽáąá áĽáá´áľ ááááľ áĽááłááĽá áĽááááááá˘
ááááá ᣠáľááĽáą áĽááľáłááľ
áá á°áľáłá áá áá áá á¨ááá áááá ᣠááááŤáąá á MacOS ááľáĽ áá¨á áááłá áĽá áĽá á¨á¨ááá á áĽáŤáá˝á ááááľ áŤáľáááááłá ᣠááá áá á áŤá áᥠáĽá áá ááłáŞáŤ ᨠSpotify áá á°ááłáłá á˝áá áĽááłáá áá¨áą ᢠá¨ááá˘áŤ-ááá áá á áśááľ-ááŽáᲠááá˘
áĽáá
á¨áá áŚáł ááá°ááἠáĽá ááŞáá¨á áááááľ ááá á áá áá ... áá á áááá! áĽáá˛áľá°áŤá¨á ááá á¨á
áĽáááá áááľ ááá áá! áĽááľáá
áĽáá°áá áĽáá áłáŤááᢠááá áá ááŁáľááłá˝áá áĽá á˛á áĽááľáłááłáá, á áłáá´ ááľáĽ á¨áá¨á áááłá áŤáĽáŠ, á ááśáá˝ á¨ááá አáŞááŁááľ áááá˝á ááá¨á áá° áááą.
á áŤáľ á°á áŤáľáááľ
ááŽáá˛áá á áá´ á¨á°áŤáŁ ááá ááá á áĽá áááááľ á áá áľá˘ ááá
á°áľáá á¨áá á ááľ áá á¨ááľáááŞáŤ áľáááľ á á, áĽáąá á MacOS ááľáĽ áááá, áááľá
á ááĽááľ áĽáááááá systemd
áĽá áĽáá
áááľ ááťáá áľáŤá áĽá xml
. ááĽááľá ááá á¨ááŤáá áá
áŽá˝ á¨ááᣠááá á áááľ áľáááá˝ á¨áá status
, restart
, daemon-reload
. áááľáŽá ááááľ áĽáť start-stop
, list-grep
, unload-load
áĽá ááá˝ áĽá áŤáá°áááą áááŽá˝á˘ áá
áá áá á áá¸áá áĽáá˝ááá plist
, á ááŤá áá. á áá°áŤá. áááá á¨áá¨á áá´á áĽáá ááá, áĽááľá°áŤáááá, áá áĽááłá áĽáá¨áłáá ENV
даМо PATH
á¨á°ááá°áá á áá°á¨áľááᣠáĽáá¨áŤá¨áŤááᣠáĽááľááŁááá (áá¨á /sbin
и /usr/local/bin
) áĽá á áá¨á¨áťá á áŤáľ á
áá áĽá á á°á¨áá á á áŤá á°áľá°áá˝ ááá˘
áá°áááľ
áá¤áą áááľáá? á¨á ááľ áłáááľ ááĽáąáŁ ááἠááľ á¨ááá áĽá á¨áááááá á¨ááŤá°áá á áááááľ á¨ááá á¨á¨á ááŤá á áŤááľá˘ á á áŤáŁáŞ á áá á´áááŤá á áŤáŁá˘áá˝ áľáá˝ áĽáááľáŁ áľáá˝ áááľ ááá áĽá âá á°á¨áŠáľ!â á¨ááá ááłáĽ á ááľá áá ááááł ááłáŤáá˘
PS: áá á¨áŤááłááľáśá˝á á¨áŚááŽáľ áĽáŞ á áá°áá ᣠááĽááŤáá˝á áááá ἠááá áá á ááá á°ááŽáá ᣠáá á á á ááá áĽááľá á¨ááá áĽááľá á¨áááá áĽá á¨áĽáľááľ áĽáľáá˝á á áááŤá˝ ááá˘
ááá: hab.com