Я розміщую спеціальні послуги HTTP та HTTPS на портах 8006 та 8007 відповідно. Я використовую iptables для "активації" сервера; тобто для маршрутизації вхідних портів HTTP та HTTPS:
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8006 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8007 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8006
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8007
iptables -A OUTPUT -t nat -d 127.0.0.1 -p tcp --dport 80 -j REDIRECT --to-ports 8006
iptables -A OUTPUT -t nat -d 127.0.0.1 -p tcp --dport 443 -j REDIRECT --to-ports 8007
Це працює як шарм. Однак я хотів би створити ще один сценарій, який знову відключить мій сервер; тобто відновити iptables до стану, в якому він був, перш ніж запускати рядки вище. Однак мені важко з'ясувати синтаксис, щоб видалити ці правила. Єдине, що, здається, спрацьовує:
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
Але це також видалить інші правила iptables, що небажано.
-I
замість-A
дляACCEPT
ліній. Це тому, що зазвичай останній рядок (наприклад, дляINPUT
ланцюжка) - цеDROP
або,REJECT
і ви хочете, щоб ваше правило було до цього.-A
ставить нове правило після останнього правила, при цьому-I
ставить його на початок.