Skip to content

Instantly share code, notes, and snippets.

@ustbgaofan
ustbgaofan / defaultGatewayIoctlSet.c
Created April 23, 2018 09:15 — forked from lbuchy/defaultGatewayIoctlSet.c
Add default gateway route using ioctl
#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <net/route.h>
#include <sys/types.h>
#include <sys/ioctl.h>
int main(char** args) {
int sockfd;
@ustbgaofan
ustbgaofan / heap.c
Created April 10, 2018 07:37 — forked from GuoJing/heap.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef int heap_elem_t;
typedef struct heap_t
{
int size;
int capacity;
@ustbgaofan
ustbgaofan / lru_cache.c
Created April 2, 2018 07:04 — forked from jehiah/lru_cache.c
a LRU cache in C using uthash
#include <string.h>
#include <uthash.h>
// this is an example of how to do a LRU cache in C using uthash
// http://uthash.sourceforge.net/
// by Jehiah Czebotar 2011 - [email protected]
// this code is in the public domain http://unlicense.org/
#define MAX_CACHE_SIZE 100000
@ustbgaofan
ustbgaofan / openvpn over shadowsocks.txt
Created March 27, 2018 11:55 — forked from wynemo/add_route
openvpn over shadowsocks
shadowsocks服务器远程IP我们假设是45.67.89.123
接下来把openvpn调通 要用udp协议 openvpn服务器和客户端都要指定udp协议
(可能tcp被封杀的比较厉害 自己先用udp的协议在没有代理的情况下把openvpn弄通可以上网)
然后架一个shadowsocks 本地端口2080
通过ss的代理连openvpn(注意这个时候openvpn服务器和客户端是tcp协议 udp协议我试了用ss代理好像有问题)
client.conf里加上这4行, 45.67.89.123换成你自己的ss server ip
@ustbgaofan
ustbgaofan / Naive-VPN.md
Created January 3, 2018 02:12 — forked from klzgrad/Naive-VPN.md
朴素VPN:一个纯内核级静态隧道

朴素VPN:一个纯内核级静态隧道

由于路由管控系统的建立,实时动态黑洞路由已成为最有效的封锁手段,TCP连接重置和DNS污染成为次要手段,利用漏洞的穿墙方法已不再具有普遍意义。对此应对方法是多样化协议的VPN来抵抗识别。这里介绍一种太简单、有时很朴素的“穷人VPN”。

朴素VPN只需要一次内核配置(Linux内核),即可永久稳定运行,不需要任何用户态守护进程。所有流量转换和加密全部由内核完成,原生性能,开销几乎没有。静态配置,避免动态握手和参数协商产生指纹特征导致被识别。并且支持NAT,移动的内网用户可以使用此方法。支持广泛,基于L2TPv3标准,Linux内核3.2+都有支持,其他操作系统原则上也能支持。但有两个局限:需要root权限;一个隧道只支持一个用户。

朴素VPN利用UDP封装的静态L2TP隧道实现VPN,内核XFRM实现静态IPsec。实际上IP-in-IP隧道即可实现VPN,但是这种协议无法穿越NAT,因此必须利用UDP封装。内核3.18将支持Foo-over-UDP,在UDP里面直接封装IP,与静态的L2TP-over-UDP很类似。

创建一个朴素VPN

@ustbgaofan
ustbgaofan / gist:d94a72caeeb39858dc3b5bc5d7ae3463
Created January 2, 2018 07:22 — forked from windwiny/gist:c85dd8c2571b4374f874
Linux 基于策略的路由(Linux Policy Routing)(Linux 多个网卡使用相同网段的IP地址设置)
----
Linux 基于策略的路由(Linux Policy Routing)
Linux 有传统的基于数据包目的地址的路由算法,和新的基于策略的路由算法
新算法优点:支持多个路由表,支持按数据报属性(源地址、目的地址、协议、端口、数据包大小、内容等)选择不同路由表
# 查看规则命令,后面可跟其它参数,默认为 show(list) 显示全部
ip rule
@ustbgaofan
ustbgaofan / gist:642299af01521894013f353a17ebbd97
Created January 2, 2018 07:22 — forked from windwiny/gist:c85dd8c2571b4374f874
Linux 基于策略的路由(Linux Policy Routing)(Linux 多个网卡使用相同网段的IP地址设置)
----
Linux 基于策略的路由(Linux Policy Routing)
Linux 有传统的基于数据包目的地址的路由算法,和新的基于策略的路由算法
新算法优点:支持多个路由表,支持按数据报属性(源地址、目的地址、协议、端口、数据包大小、内容等)选择不同路由表
# 查看规则命令,后面可跟其它参数,默认为 show(list) 显示全部
ip rule
@ustbgaofan
ustbgaofan / config.h
Created November 27, 2017 06:30 — forked from soulmachine/config.h
写纯C代码时用的公共头文件
/** @file config.h
* @brief 公共头文件
* @author [email protected]
* @date 2010-8-3
* @version 0.1
* @note 无
*/
#ifndef _CONFIG_H_
#define _CONFIG_H_
from ryu.base import app_manager
from ryu.controller import ofp_event
from ryu.controller.handler import CONFIG_DISPATCHER, MAIN_DISPATCHER
from ryu.controller.handler import set_ev_cls
from ryu.ofproto import ofproto_v1_3
from ryu.lib.packet import packet
from ryu.lib.packet import ethernet
class SimpleSwitch13(app_manager.RyuApp):

测试平台:DigitalOcean VPS ubuntu14.04 x64, strongswan5.2.2

运行以下命令请使用root权限

一:安装strongswan

由于ubuntu软件仓库中strongswan版本较低,因此从官网源码编译安装

apt-get install build-essential     #编译环境
aptitude install libgmp10 libgmp3-dev libssl-dev pkg-config libpcsclite-dev libpam0g-dev     #编译所需要的软件