V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
testcaoy7
V2EX  ›  奇思妙想

DNS over IPsec Transport Mode

  •  
  •   testcaoy7 · 2023-01-20 13:58:43 +08:00 · 1588 次点击
    这是一个创建于 699 天前的主题,其中的信息可能已经有所发展或是发生改变。

    IPsec 的 Tunnel 模式被广泛采用,但其实 IPsec 还有 Transport 模式,可以用来给任何协议添加加密

    IPsec 软件这里选择了 strongSwan ,配置 /etc/swanctl/conf.d/dns.conf 即可

    A 端(国内,记得把 100.64.0.1 改成国内机器的公网 ip ):

    connections {
    	dns {
    		version = 2
    		local_addrs  = 100.64.0.1
    		remote_addrs = 100.64.0.2
    		proposals = aes128gcm16-prfsha256-ecp256
    		mobike = no
    		dpd_delay = 20
    		
    		local {
    			auth = psk
    			id = 100.64.0.1
    		}
    		
    		remote {
    			auth = psk
    			id = 100.64.0.2
    		}
    		
    		children {
    			transport {
    				esp_proposals = aes128gcm128-x25519
    				start_action = trap
    				local_ts  = 100.64.0.1[udp/any]
    				remote_ts = 100.64.0.2[udp/53]
    				mode = transport
    			}
    		}		
    	}
    }
    
    secrets {
    	ike-psk {
    		secret = IxwmdgyTsUwpobnrCP5hQka4PFNzYL3FPqRkv9CWec8=
    		id-a = 100.64.0.1
    		id-b = 100.64.0.2
    	}
    }
    

    B 端(国外,local 和 remote 交换一下即可,记得把 100.64.0.2 改成国外机器的公网 ip ):

    		children {
    			transport {
    				esp_proposals = aes128gcm128-x25519
    				start_action = trap
    				local_ts  = 100.64.0.2[udp/53]
    				remote_ts = 100.64.0.1[udp/any]
    				mode = transport
    			}
    		}	
    

    在 B 端(国外)跑一个 coredns:

    . {
    	bind 127.0.0.53
    	whoami
    	erratic
    	log
    }
    

    erratic 插件的作用就是不管查询什么域名,返回的都是 192.0.2.53 和 2001:DB8::53

    然后在国内机器上用 nslookup 查询谷歌域名:

    nslookup www.google.com 100.64.0.2
    

    查询出来的结果应该是 192.0.2.53 和 2001:DB8::53

    在双边机器上查看 IPsec 流量统计:

    ip -s xfrm state
    
    bao3
        1
    bao3  
       2023-01-20 23:22:52 +08:00 via iPhone
    感谢提供思路
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3101 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 13:34 · PVG 21:34 · LAX 05:34 · JFK 08:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.