나는 아파치를 실행하는 작은 VPS와 Minecraft 서버를 가지고 있습니다. 절대 끄지 않지만 어떤 이유로 다시 시작하면 IPTables는 포트 80을 포함한 대부분의 포트를 차단합니다. 이 문제를 해결하기 위해 다양한 제안을 시도했지만 성공하지 못했습니다. 또한 공급자가 OVH이므로 지원이 부족합니다.
그래서 해결 방법을 만들었고 만족합니다. 재부팅 시 열어야 하는 특정 포트(현재 80 및 25565)를 열기 위해 간단한 쉘 스크립트 파일을 만들었습니다. 21, 22 등 중요한 항목은 다시 시작해도 영향을 받지 않습니다.
스크립트는 다음과 같습니다.
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p udp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 25565 -j ACCEPT
iptables -I INPUT -p udp --dport 25565 -j ACCEPT
/sbin/service iptables save
을 입력하여 수동으로 실행하면 /iptdef.sh
정상적으로 실행되고 포트도 열려 있으며 모든 것이 정상입니다.
물론, 서버가 재시작될 때마다 기억해서 실행하는 것은 비현실적이어서 crontab을 추가했습니다. 문제는 작동/실행되지 않는다는 것입니다. 이것은 내 crontab 파일입니다.
*/5 * * * * /backup2.sh
*/55 * * * * /backup3.sh
@reboot /iptdef.sh
* * * * * /iptdef.sh
처음 두 줄은 유효합니다. 그것은 나를 위해 폴더를 백업하는 간단한 스크립트일 뿐입니다. 두 번째 줄은 작동하지 않습니다.
cron에서 iptables 명령을 실행할 수 없는 것이 가능합니까? 어리석게 들리지만 작동하지 않는 다른 이유는 없습니다. 스크립트에 올바른 권한이 있습니다.
답변1
PATH
cron이 강제로 로 설정되어 있기 때문입니다 . 스크립트나 crontab으로 호출하거나 추가 /usr/bin:/bin
해야 합니다 . 자세한 내용은 crontab(5)을 참조하십시오.iptables
/sbin/iptables
PATH=/usr/sbin:/sbin:/usr/bin:/bin
답변2
여기에 꽤 잘 설명되어 있는 것 같습니다.crontab의 @reboot는 루트에만 적용됩니까?기본적으로 대답은 사용 중인 Cron 및 Linux 배포판에 따라 많이 달라집니다.
답변3
/etc/hosts
내 서버의 FQDN에 있는 모든 사람에게 보낸 메일을 구문 분석하려면 다음을 추가해야 했습니다 .
127.0.0.1 mydomain.com.
끝에 점을 주목하세요. 내 경우에는 기본적으로 root@localhost로 이메일을 보냈고 다음 MAILTO=root
과 같이 번역되었습니다.[이메일 보호됨].