ANDROID: Iptables บล็อกการเชื่อมต่อที่เข้ามา

ฉันต้องการบล็อกการเชื่อมต่อขาเข้าทั้งหมดด้วย iptables บนอุปกรณ์ Android ของฉัน ฉันรู้ว่าแอปของ Google เช่น play store ฯลฯ จำเป็นต้องมีการเชื่อมต่อขาเข้า (เช่น GTalkSerivice) และแอปเหล่านั้นจะไม่ทำงานหลังจากการบล็อก แต่ฉันต้องการเพียงใช้เบราว์เซอร์ของฉัน และฉันรู้ว่าเบราว์เซอร์ไม่จำเป็นต้องมีการเชื่อมต่อเข้ามา ดังนั้นฉันจึงพยายามบล็อกการเชื่อมต่อขาเข้าทั้งหมดด้วย:

iptables -A INPUT --j DROP

ปัญหาคือตอนนี้การเชื่อมต่อทั้งหมดถูกบล็อกและเบราว์เซอร์ของฉันก็ออฟไลน์เช่นกัน ทำไมจึงเป็นเช่นนั้น?


person Aprel    schedule 05.04.2012    source แหล่งที่มา


คำตอบ (1)


ประเด็นก็คือ iptables ไม่ได้บล็อกการเชื่อมต่อ แต่เป็นแพ็กเก็ต สิ่งที่คุณทำคือบล็อกแพ็กเก็ตขาเข้าทั้งหมด ดังนั้นจึงเป็นเรื่องปกติที่คุณจะไม่ได้รับการตอบกลับ คุณต้องเพิ่มสิ่งนี้เพื่อให้แพ็กเก็ตสร้างการเชื่อมต่อที่สร้างไว้แล้ว (อันที่คุณเริ่มต้นโดยการเปิดหน้าเว็บ ฯลฯ ) ผ่าน:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

การบล็อกการเชื่อมต่อขาเข้าทั้งหมดจะทำให้หลายสิ่งเสียหาย ดังนั้นควรใช้ด้วยความระมัดระวัง

person Nikolay Elenkov    schedule 05.04.2012
comment
และเป็นไปได้ไหมที่จะบล็อกการเชื่อมต่อขาเข้าทั้งหมดภายใต้ Android? - person Aprel; 05.04.2012
comment
แน่นอน. มันอาจทำให้สิ่งต่าง ๆ พังได้ - person Nikolay Elenkov; 06.04.2012
comment
และฉันจะทำเช่นนี้ได้อย่างไร? บล็อกการเชื่อมต่อที่เข้ามาทั้งหมดหรือไม่ - person Aprel; 06.04.2012
comment
คุณควรอ่าน iptables อย่างน้อยก่อนที่จะลองทำสิ่งนี้ คุณได้บล็อกพวกเขาแล้ว เพียงเพิ่มกฎที่ฉันเขียนไว้ด้านบนเพื่ออนุญาตการเชื่อมต่อที่สร้างไว้แล้ว - person Nikolay Elenkov; 06.04.2012
comment
ฉันพบวิธีอื่นที่จะทำสิ่งเดียวกัน เป็นไปได้ที่จะทิ้งแพ็กเก็ต SYN ทั้งหมด อะไรประมาณนั้น : iptables -A INPUT -p tcp --syn -j DROP - person Aprel; 06.04.2012
comment
มีความแตกต่างเล็กน้อยระหว่าง --syn และ --state ESTABLISHED แต่ก็ควรได้ผลเช่นกัน - person Nikolay Elenkov; 08.04.2012