Ofcourse Вы не можете получить доступ к Интернету. Вы просто добавили правило, которое снижает весь входящий трафик (за исключением трафика, поступающего в порты 22, 80 и 443).
При попытке получить доступ к Интернету (если вы используете браузер), ваша машина устанавливает соединение с
<local IP>:<port1> <----> <remote IP>:80
Когда удаленный сервер реагирует на вас, он будет реагировать на ту же port1 что вы отправили запрос (который НЕ будет 22, или 80 или 443. Это будет число, обычно превышающее 32768), поэтому оно будет опущено iptables.
Попробуйте эти правила вместо:
iptables -P INPUT DROP
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
Второе правило говорит таблицы IP-ПРИНЯТЬ трафик, который приходит к нам, если он приходит в порт, который мы использовали для отправки исходящего трафика. Это позволит вам увидеть ответ с сервера, который вы отбрасываете.
Однако по-прежнему существует проблема с DNS-трафиком, поскольку он использует UDP, а не TCP. Вы можете обойти это, изменив первое правило на:
iptables -P INPUT -p tcp DROP
так что он только снижает трафик TCP, но не UDP-трафик. Могут быть другие способы обойти проблему DNS, в зависимости от того, что именно вы хотите сделать.
Так что ваш окончательный набор правил должен выглядеть следующим образом:
iptables -P INPUT -p tcp DROP
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
правила выглядят прекрасно до сих пор. Мы не можем сказать больше с небольшой информацией, которую вы дали. Работает ли HTTP-сервер вообще? Это работает, если вы полностью очистите правила? – arkascha
Только эти правила? Нет ESTABLISHED, ни DNS не принимаете? –
Без темы. Попробуйте serverfault или суперпользователь. – EJP