- Автор темы
- Добавить закладку
- #21
Можно полностью скрипты написать?[Unit]
After=docker.service
Requires=docker.service Это команды в терминале тоже?
Можно полностью скрипты написать?[Unit]
After=docker.service
Requires=docker.service Это команды в терминале тоже?
It's just so that it waits until Docker is up, guaranteeing the DOCKER-USER chain is available before restoring your rules.[Unit]
After=docker.service
Requires=docker.service Это команды в терминале тоже?
then addsudo systemctl edit netfilter-persistent
[Unit]
After=docker.service
Requires=docker.service
/usr/local/sbin/firewall.sh:It's just so that it waits until Docker is up, guaranteeing the DOCKER-USER chain is available before restoring your rules.
Yes, just create an override file
then add
ipset 'myset' is prepared right?/usr/local/sbin/firewall.sh:
Bash:
#!/bin/bash
# CHAIN exists?
sudo iptables -N CHAIN 2>/dev/null || true
# DOCKER-USER jump to CHAIN
sudo iptables -C DOCKER-USER -j CHAIN 2>/dev/null || \
sudo iptables -I DOCKER-USER -j CHAIN
# CHAIN drops packets from myset
sudo iptables -C CHAIN -m set --match-set myset src -j DROP 2>/dev/null || \
sudo iptables -A CHAIN -m set --match-set myset src -j DROP
Так сделать?
No, please don't do that. The technique you are mentioning is valid and goes something like this:Потом
/etc/systemd/system/firewall.service
[Unit]
After=docker.service
Requires=docker.service
И активировать?
sudo systemctl daemon-reload
sudo systemctl enable firewall.service
then[Unit]
Description=dockr iptables ruless
After=docker.service
Requires=docker.service
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/firewall.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable firewall.service
sudo systemctl start firewall.service
then addsudo systemctl edit netfilter-persistent
[Unit]
After=docker.service
Requires=docker.service
sudo systemctl edit netfilter-persistentipset 'myset' is prepared right?
No, please don't do that. The technique you are mentioning is valid and goes something like this:
/etc/systemd/system/firewall.service with
then
Instead, I recommend creating an override file:
then add
Посмотреть вложение 103582
--force --full is more than you need but it will work. Just create a minimal ovverride .conf inside /etc/systemd/system/netfilter-persistent.service.d (much cleaner)sudo systemctl edit netfilter-persistent
No files found for netfilter-persistent.service.
Run 'systemctl edit --force --full netfilter-persistent.service' to create a new unit.
Gotta be something in your script. shebang? chmod +x? "myset"? something else?Job for firewall.service failed because the control process exited with error code.
This will setup 2 services: netfilter-persistent (load/save iptables) + ipset-persistent (load/save ipsets)sudo apt install iptables-persistent ipset-persistent
sudo ipset create myset nethash
sudo ipset add myset 111.222.33.4
sudo ipset add myset 1.2.3.0/24
ipset-persistent will autoload this file on reboot (recreating myset).sudo ipset save > /etc/ipset.conf
if already exists: error.sudo iptables -N CHAIN
any inbound traffic to containers goes through CHAIN.sudo iptables -I DOCKER-USER -j CHAIN
sudo iptables -A CHAIN -m set --match-set myset src -j DROP
By default: iptables-persistent loads this file on reboot.sudo iptables-save > /etc/iptables/rules.v4
sudo mkdir -p /etc/systemd/system/netfilter-persistent.service.d
sudo vi /etc/systemd/system/netfilter-persistent.service.d/override.conf
[Unit]
After=docker.service
Requires=docker.service
sudo systemctl daemon-reload
sudo systemctl enable netfilter-persistent
sudo ipset list myset
sudo iptables -L CHAIN -n -v
This will setup 2 services: netfilter-persistent (load/save iptables) + ipset-persistent (load/save ipsets)
IP set "myset" will hold ips/subnets for blocking.
Create in memory:
ipset-persistent will autoload this file on reboot (recreating myset).
Crreate custom chain:
if already exists: error.
Insert our chain into DOCKER-USER chain:
any inbound traffic to containers goes through CHAIN.
Drop traffic from myset in CHAIN:
By default: iptables-persistent loads this file on reboot.
Посмотреть вложение 103583
Docker creates the DOCKER-USER chain when it starts. Sometimes netfilter-persistent might run before Docker on boot. So we override netfilter-persistent so it starts after Docker:
Place the following in override.conf:
Reload systemd
Usually it's enabled by default but you can always:
When you reboot: Docker starts, creates DOCKER-USER, netfilter-persistent (from iptables-persistent) will then load /etc/ipset.conf (rebuilding myset) + /etc/iptables/rules.v4 (rebuilding CHAIN chain + DOCKER-USER jump).
On reboot, you can check:
Посмотреть вложение 103584
Description=Восстановление правил iptables и ipset Это точно так должно быть в /etc/systemd/system/firewall.serviceDescription=Восстановление правил iptables и ipset
Сейчас установил чистую Ubuntu 12