Parcourir la source

Merge pull request #235 from MohdAhmad/SrcDestCheck

Disable src/dest check
Mohammad Ahmad il y a 9 ans
Parent
commit
7274716973
2 fichiers modifiés avec 14 ajouts et 2 suppressions
  1. 1 2
      README.md
  2. 13 0
      backend/awsvpc/awsvpc.go

+ 1 - 2
README.md

@@ -75,8 +75,7 @@ This is the only mandatory key.
 * aws-vpc: create IP routes in an [Amazon VPC route table](http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html).
   * Requirements:
 	* Running on an EC2 instance that is in an Amazon VPC.
-	* Permissions required: `CreateRoute`, `DeleteRoute`,`DescribeRouteTables`, `DescribeInstances [optional]`
-	* [Disable source/destination checks](http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html#EIP_Disable_SrcDestCheck) on instances running flannel.
+	* Permissions required: `CreateRoute`, `DeleteRoute`,`DescribeRouteTables`, `ModifyInstanceAttribute`, `DescribeInstances [optional]`
   * `Type` (string): `aws-vpc`
   * `RouteTableID` (string): [optional] The ID of the VPC route table to add routes to.
      The route table must be in the same region as the EC2 instance that flannel is running on.

+ 13 - 0
backend/awsvpc/awsvpc.go

@@ -102,6 +102,10 @@ func (m *AwsVpcBackend) Init(extIface *net.Interface, extIP net.IP) (*backend.Su
 	}
 	ec2c := ec2.New(auth, region)
 
+	if _, err = m.DisableSrcDestCheck(instanceID, ec2c); err != nil {
+		log.Info("Warning- disabling source destination check falied!: %v", err)
+	}
+
 	if m.cfg.RouteTableID == "" {
 		log.Infof("RouteTableID not passed as config parameter, attempting to detect")
 		routeTableID, err := m.DetectRouteTableID(instanceID, ec2c)
@@ -162,6 +166,15 @@ func (m *AwsVpcBackend) Init(extIface *net.Interface, extIP net.IP) (*backend.Su
 	}, nil
 }
 
+func (m *AwsVpcBackend) DisableSrcDestCheck(instanceID string, ec2c *ec2.EC2) (*ec2.ModifyInstanceResp, error) {
+	modifyAttributes := &ec2.ModifyInstance{
+		SourceDestCheck:    false,
+		SetSourceDestCheck: true,
+	}
+
+	return ec2c.ModifyInstance(instanceID, modifyAttributes)
+}
+
 func (m *AwsVpcBackend) DetectRouteTableID(instanceID string, ec2c *ec2.EC2) (string, error) {
 	resp, err := ec2c.Instances([]string{instanceID}, nil)
 	if err != nil {