DigitalOcean에 여러 개의 서버가 있고 이들이 서로 통신할 수 있기를 원한다고 가정해 보겠습니다.
DigitalOcean은 WAN 연결과 LAN 연결을 제공합니다. 문제는 둘 다 안전하다고 느끼지 않는다는 것입니다. WAN은 인터넷이고 LAN은 DigitalOcean에 컴퓨터(VPS)를 가진 모든 사람이 공유합니다.
그래서 WAN에서 53, 80, 443 등과 같은 몇몇 포트를 제외한 모든 포트를 차단하고 싶습니다. 이는 표준 절차입니다.
그런 다음 다른 컴퓨터에 MySQL이 있을 수 있으므로 IP 주소 10.1.1.1(실제로 DigitalOcean에서 작동하지 않는 IP 예)에 대해 포트 3306을 열고 싶습니다.
이제 내 문제는 인터페이스가 나타나기 전에 방화벽 규칙이 적용되기를 원한다는 것입니다.
auto eth0 eth1
iface eth0 inet static
address 8.8.8.2 # some Internet address
netmask 255.255.255.255
gateway 8.8.8.1 # some Internet address
dns-nameservers 8.8.8.8 8.8.4.4
pre-up /etc/network/firewall
iface eth1 inet static
address 10.1.1.1
netmask 255.0.0.0
pre-up /etc/network/firewall
내가 생각해 낸 것은 pre-up
두 인터페이스 모두에 추가하는 것입니다. 이렇게 하면 스크립트가 두 번 실행되기 전에 시작되도록 할 수 있습니다. 이는 스크립트가 두 번 실행된다는 의미이기도 합니다.
이렇게 하면 되나요? 아니면 pre-up
모든 인터페이스에 대해 전역적으로 동등한 기능을 달성하는 더 좋은 방법이 있습니까 ?
참고: 운영 체제는 사용 가능한 최신 버전인 Ubuntu 16.04.1입니다.
답변1
저는 실제로 해결책을 찾았습니다. 저는 Ubuntu 16.04를 사용하고 있고 systemd를 갖고 있기 때문에 스크립트를 생성하여 snapinitfirewall.service
방화벽 코드에 설치했습니다.
# Documentation available at:
# https://www.freedesktop.org/software/systemd/man/systemd.service.html
[Unit]
Description=Snap! Websites firewall initialization
Before=network.target
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/etc/network/firewall
#ExecStop=... -- why would you ever want to remove your firewall rules?
[Install]
WantedBy=multi-user.target
# vim: syntax=dosini
/etc/network/firewall
시작 시 모든 규칙을 즉시 복원하는 스크립트입니다.
해당 패키지에 대한 또 다른 서비스 파일이 있기 때문에(즉, 하나의 패키지가 두 서비스를 모두 제공함) 초기화가 활성화되고 재부팅 시 실행되도록 하려면 다음 줄을 포함해야 합니다.
systemctl -q enable snapinitfirewall
pre-up
이는 네트워크가 시작되기 전에 실행 중인지 확인할 수 있기 때문에 이 기능을 사용하는 것보다 더 나은 접근 방식입니다 .
더 궁금하신 분들을 위해,스냅샷 방화벽 프로젝트github에서.