![/etc/hosts를 사용하여 텔레그램 차단](https://linux55.com/image/110344/%2Fetc%2Fhosts%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%85%94%EB%A0%88%EA%B7%B8%EB%9E%A8%20%EC%B0%A8%EB%8B%A8.png)
저는 액세스하고 싶지 않은 도메인을 차단하기 위해 /etc/hosts를 사용하는데, 이는 대부분의 도메인에서 작동합니다. 다만, 텔레그램 웹채팅(web.telegram.org)에서는 작동하지 않는 것 같습니다.
내 파일에 다음 줄이 있습니다.
0.0.0.0 web.telegram.org
0.0.0.0 www.telegram.org
0.0.0.0 telegram.org
하지만 여전히 웹사이트에 액세스하고 웹 앱의 전체 기능을 사용할 수 있습니다. 내가 뭐 잘못 했어요?
답변1
/etc/hosts를 편집하고 있으므로 루트 액세스 권한이 있습니다. 가장 좋고 가장 우아한 방법은 iptables를 사용하는 것입니다(즉, 패킷이 상자에서 www.telegram.org로 나가는 것을 방지합니다).
명령줄에 iptables 명령을 입력하여 이를 테스트할 수 있습니다.
# iptables -A OUTPUT -d www.telegram.org -j REJECT
다음 규칙을 추가한 것을 확인할 수 있습니다.
# iptables -S OUTPUT
-P OUTPUT ACCEPT
-A OUTPUT -d 149.154.167.120/32 -j REJECT --reject-with icmp-port-unreachable
다음을 사용하여 이에 대한 액세스 시도를 테스트할 수 있습니다.
# wget web.telegram.org
--2017-04-26 14:38:01-- http://web.telegram.org/
Resolving web.telegram.org... 149.154.167.120, 2001:67c:4e8:fa60:3:0:811:140
Connecting to web.telegram.org|149.154.167.120|:80... failed: Connection refused.
Connecting to web.telegram.org|2001:67c:4e8:fa60:3:0:811:140|:80... failed: Network is unreachable.
실행 중인 OS가 무엇인지 알려주지 않았으므로 최신 버전의 iptables가 없을 수 있으므로 -S 스위치가 누락되었을 수 있습니다. -L을 사용할 수 있습니다.
# iptables -L OUTPUT
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere 149.154.167.120 reject-with icmp-port-unreachable
방금 추가한 규칙을 삭제하려면 위 명령에서 -A를 -D로 바꾸면 됩니다.
참고: 이러한 규칙을 재부팅 후에도 영구적으로 적용하려면 해당 iptables-save > /etc/sysconfig/iptables
규칙을 /etc/sysconfig/iptables에 수동으로 추가해야 합니다.
iptables는 꽤 복잡하지만 매뉴얼 페이지는 매우 유용합니다.
(저는 서버에서 CentOS 6과 7을 실행하고 있습니다. 방화벽은 CentOS 7의 새로운 기본 프런트엔드이지만 iptables-services를 설치하고 사용했는데 이는 완전히 지원됩니다.)
답변2
그런데 호스트를 0.0.0.0 대신 127.0.0.1로 설정했습니다....이것이 원래 문제였을 수도 있습니다.
어쨌든, 또 다른 비결은 문제의 IP 번호에 대한 특수 경로를 추가하는 것입니다.
# route add -host 10.11.12.13 dev lo
재부팅 시 이러한 규칙이 다시 생성되도록 하려면 이를 rc.local(또는 동등한 파일)에 추가해야 합니다.
나는 그것을 사용하여 사람들이 내 웹사이트 회사 비밀번호를 알아내려는 것을 막습니다.
답변3
메시지를 받기 위해 웹소켓을 사용합니다.
다음에 추가
0.0.0.0 zws2.web.telegram.org
추신: Chrome devtools에서 웹소켓을 디버깅하는 방법을 확인하세요.