|
|
|
@@ -65,20 +65,20 @@ func (i *ipip) Init(base int) error {
|
|
|
|
|
|
|
|
|
|
// Rules returns a set of iptables rules that are necessary
|
|
|
|
|
// when traffic between nodes must be encapsulated.
|
|
|
|
|
func (i *ipip) Rules(nodes []*net.IPNet) []iptables.Rule {
|
|
|
|
|
var rules []iptables.Rule
|
|
|
|
|
func (i *ipip) Rules(nodes []*net.IPNet) iptables.RuleSet {
|
|
|
|
|
rules := iptables.RuleSet{}
|
|
|
|
|
proto := ipipProtocolName()
|
|
|
|
|
rules = append(rules, iptables.NewIPv4Chain("filter", "KILO-IPIP"))
|
|
|
|
|
rules = append(rules, iptables.NewIPv6Chain("filter", "KILO-IPIP"))
|
|
|
|
|
rules = append(rules, iptables.NewIPv4Rule("filter", "INPUT", "-p", proto, "-m", "comment", "--comment", "Kilo: jump to IPIP chain", "-j", "KILO-IPIP"))
|
|
|
|
|
rules = append(rules, iptables.NewIPv6Rule("filter", "INPUT", "-p", proto, "-m", "comment", "--comment", "Kilo: jump to IPIP chain", "-j", "KILO-IPIP"))
|
|
|
|
|
rules.AppendRules = append(rules.AppendRules, iptables.NewIPv4Chain("filter", "KILO-IPIP"))
|
|
|
|
|
rules.AppendRules = append(rules.AppendRules, iptables.NewIPv6Chain("filter", "KILO-IPIP"))
|
|
|
|
|
rules.AppendRules = append(rules.AppendRules, iptables.NewIPv4Rule("filter", "INPUT", "-p", proto, "-m", "comment", "--comment", "Kilo: jump to IPIP chain", "-j", "KILO-IPIP"))
|
|
|
|
|
rules.AppendRules = append(rules.AppendRules, iptables.NewIPv6Rule("filter", "INPUT", "-p", proto, "-m", "comment", "--comment", "Kilo: jump to IPIP chain", "-j", "KILO-IPIP"))
|
|
|
|
|
for _, n := range nodes {
|
|
|
|
|
// Accept encapsulated traffic from peers.
|
|
|
|
|
rules = append(rules, iptables.NewRule(iptables.GetProtocol(n.IP), "filter", "KILO-IPIP", "-s", n.String(), "-m", "comment", "--comment", "Kilo: allow IPIP traffic", "-j", "ACCEPT"))
|
|
|
|
|
rules.PrependRules = append(rules.PrependRules, iptables.NewRule(iptables.GetProtocol(n.IP), "filter", "KILO-IPIP", "-s", n.String(), "-m", "comment", "--comment", "Kilo: allow IPIP traffic", "-j", "ACCEPT"))
|
|
|
|
|
}
|
|
|
|
|
// Drop all other IPIP traffic.
|
|
|
|
|
rules = append(rules, iptables.NewIPv4Rule("filter", "INPUT", "-p", proto, "-m", "comment", "--comment", "Kilo: reject other IPIP traffic", "-j", "DROP"))
|
|
|
|
|
rules = append(rules, iptables.NewIPv6Rule("filter", "INPUT", "-p", proto, "-m", "comment", "--comment", "Kilo: reject other IPIP traffic", "-j", "DROP"))
|
|
|
|
|
rules.AppendRules = append(rules.AppendRules, iptables.NewIPv4Rule("filter", "INPUT", "-p", proto, "-m", "comment", "--comment", "Kilo: reject other IPIP traffic", "-j", "DROP"))
|
|
|
|
|
rules.AppendRules = append(rules.AppendRules, iptables.NewIPv6Rule("filter", "INPUT", "-p", proto, "-m", "comment", "--comment", "Kilo: reject other IPIP traffic", "-j", "DROP"))
|
|
|
|
|
|
|
|
|
|
return rules
|
|
|
|
|
}
|
|
|
|
|