#!/bin/sh # network : ipv4.ipv4.ipv4.ipv4/mask || dns/mask # clients : PROTO ; PORT ; UID/GID ; UID/GID ; UID/GID .... | # servers : PROTO ; PORT ; UID/GID ; UID/GID ; UID/GID .... | # forward : PROTO ; PORT | local network="${net}" # -- CLIENT -- #local clients="$clients|UDP ;domain ;root/root" # -- SERVER -- #local servers="$servers|TCP ;ssh ;root/root" # dropOut : iptables -t filter -A OUTPUT -o ""$eth"" -s ${ip}/32 -j ""$rulesOut"" # dropIn : iptables -t filter -A INPUT -i ""$eth"" -d ${ip}/32 -j ""$rulesIn"" # ruleEthOut : iptables -t filter -A OUTPUT -o ""$eth"" -j ""$rulesEthOut"" # ruleEthIn : iptables -t filter -A INPUT -i ""$eth"" -j ""$rulesEthIn"" local ruleEthIn="$ruleEthIn ;vxlan_in | -s "$net" -d "$ip" -p udp --dport 4789" local ruleEthOut="$ruleEthOut;vxlan_out | -d "$net" -s "$ip" -p udp --dport 4789" local ruleEthOut="$ruleEthOut;vxlan_out | -d "$net" -s "$ip" -p udp --sport 4789" local ruleEthIn="$ruleEthIn ;vxlan_in | -s "$net" -d "$ip" -p udp --sport 4789" echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts #NETFILTER_INPUTIN=outbox0 OUT= MAC=ff:ff:ff:ff:ff:ff:00:13:20:16:6a:85:08:00 SRC=10.90.6.2 #DST=10.90.6.255 LEN=92 TOS=0x00 PREC=0x00 TTL=64 ID=11949 PROTO=UDP SPT=59448 DPT=4789 LEN=72 MARK=0xa # 224.0.0.1/32 # vx354:225.3.54.1 gre354:226.3.54.1 vx383:225.3.83.1 gre383:226.3.83.1 vx390:225.3.90.1 gre390:226.3.90.1 # vx254:225.2.54.1 gre254:226.2.54.1 vx283:225.2.83.1 gre254:226.2.83.1 vx290:225.2.90.1 gre290:226.2.90.1 # vx154:225.1.54.1 gre154:226.1.54.1 vx183:225.1.83.1 gre154:226.1.83.1 vx190:225.1.90.1 gre190:226.1.90.1 for brdAddr in ${broadcast}/32 225.3.54.1/32 225.3.83.1/32 225.3.90.1/32 225.2.54.1/32 225.2.83.1/32 225.2.90.1/32 225.1.54.1/32 225.1.83.1/32 225.1.90.1/32;do # NETFILTER_OUTPUTIN= OUT=eth1 SRC=10.90.6.2 DST=224.0.0.1 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=1554 DF PROTO=47 MARK=0xb local dropEthIn="$dropEthIn ;vxlan_in | -s "$ip" -d "$brdAddr" -p udp --dport 4789" local ruleEthIn="$ruleEthIn ;vxlan_i | -s "$net" -d "$brdAddr" -p udp --dport 4789" local ruleEthOut="$ruleEthOut;vxlan_o | -d "$brdAddr" -s "$ip" -p udp --dport 4789" #local ruleEthIn="$ruleEthIn ;vxlan_i | -s "$net" -d "$brdAddr" -p udp --sport 4789" #local ruleEthOut="$ruleEthOut;vxlan_o | -d "$brdAddr" -s "$ip" -p udp --sport 4789" # igmp local ruleEthIn="$ruleEthIn ;igmp | -s "$net" -d "$brdAddr" -p igmp" local ruleEthOut="$ruleEthOut ;igmp | -d "$brdAddr" -s "$ip" -p igmp" # icmp (echo-reply:0/0, echo-request:8/0) local icmpEthIn="$icmpEthIn ;icmp | -s "$net" -d "$brdAddr" -p icmp --icmp-type 8/0 -m state --state ESTABLISHED,RELATED,NEW" local icmpEthOut="$icmpEthOut ;icmp | -d "$brdAddr" -s "$ip" -p icmp --icmp-type 8/0 -m state --state ESTABLISHED,RELATED,NEW" # icmp (host-unreachable:3/1, port-unreachable:3/3, fragmentation-needed:3/4) local icmpEthIn="$icmpEthIn ;icmp | -s "$net" -d "$brdAddr" -p icmp --icmp-type 3/1 -m state --state ESTABLISHED,RELATED,NEW" local icmpEthOut="$icmpEthOut ;icmp | -d "$brdAddr" -s "$ip" -p icmp --icmp-type 3/1 -m state --state ESTABLISHED,RELATED,NEW" local icmpEthIn="$icmpEthIn ;icmp | -s "$net" -d "$brdAddr" -p icmp --icmp-type 3/3 -m state --state ESTABLISHED,RELATED,NEW" local icmpEthOut="$icmpEthOut ;icmp | -d "$brdAddr" -s "$ip" -p icmp --icmp-type 3/3 -m state --state ESTABLISHED,RELATED,NEW" local icmpEthIn="$icmpEthIn ;icmp | -s "$net" -d "$brdAddr" -p icmp --icmp-type 3/4 -m state --state ESTABLISHED,RELATED,NEW" local icmpEthOut="$icmpEthOut ;icmp | -d "$brdAddr" -s "$ip" -p icmp --icmp-type 3/4 -m state --state ESTABLISHED,RELATED,NEW" done #local ruleEthOut="$ruleEthOut;clt_dhcp | -d 255.255.255.255 -s 0.0.0.0 -p udp --sport ${bootpcPort} --dport ${bootpsPort} -m state --state ESTABLISHED,RELATED,NEW -m owner --uid-owner ${rootUID} --gid-owner ${rootGID}" #local ruleEthIn="$ruleEthIn ;clt_dhcp | -s "$net" -d 255.255.255.255 -p udp --sport ${bootpcPort} --dport ${bootpsPort} -m state --state NEW" #local ruleEthIn="$ruleEthIn ;clt_dhcp | -s "$net" -d 255.255.255.255 -p udp --sport ${bootpsPort} --dport ${bootpcPort} -m state --state NEW" # DROP # client dhcp (bootps : 67, bootpc : 68) #local dropEthIn="$dropIn ;drop_dhcp | -d 255.255.255.255 -s 0.0.0.0 -p udp --sport ${bootpcPort} --dport ${bootpsPort} -m state --state NEW" #local dropEthIn="$dropIn ;drop_igmp | -d 224.0.0.1 -s 0.0.0.0 -p igmp"