linux ping 虚拟网卡_linux,生成虚拟网卡,指定此虚拟网卡的数据流走向,如何做?...

本文介绍了如何在Linux系统中利用SoftEther VPN创建虚拟网卡,并详细阐述了配置过程,包括服务器和客户端的设置。通过这种方法,可以实现特定数据流的路由,例如通过日本VPS访问YouTube。过程中涉及到了iptables、iproute2的使用,以及如何处理路由和防火墙规则,确保网络连接的正常和灵活性。
摘要由CSDN通过智能技术生成

23

2015-12-18 10:40:22 +08:00

基础太差。。。很多东西理解起来也困难。

原先就是看了这篇文档以为很简单,结果还是有很多特定环境的限制,包括 ipv4+ipv6 环境,服务器不支持 ip6tables -t nat ,需要禁用 AAAA 查询,还包括 iproute2 的一些无底坑,这些坑在官方文档中都没有任何提及。

OpenWrt VPN 按域名路由

https://blog.sorz.org/p/openwrt-outwall/

redsocks2 原先在 openwrt 下面配置成功过,可是 vps 。。。反正在透明代理这块基本上网上能找到的实例,命令打一遍最终没效果,也不知道坑在哪里。。。

所以最终用 softether vpn ,这东东无比的强大,它本身就有虚拟网卡实现,最终基本甚至没用到任何的虚拟 L3 路由功能。目前实现的效果就是 就近访问日本 vps , vps 中一部分 youtube 流量中转的是美国 vps 上的流量,所以跟你想要实现的效果差不多。自己多试几遍吧,回头看看还是挺简单的,但是可扩展效果比透明代理好多了。实例虽然是用 dnsmasq ipset 特定域名,其实可以实现建立 ipset -N outwall4 nethash ,然后直接写路由表。

vpn 采用 softether vpn server

服务器端

创建虚拟 HUB server/管理虚拟 HUB/并添加用于客户端连接用的 管理用户

本地网桥设置 /将虚拟 HUB server 选择创建的类型 新 tap 设备的桥接,并输入设备名称 soft1

ifconfig tap_soft1 192.168.60.100

ifconfig tap_soft1 mtu 1392

添加 ipv6 地址,只是为了以后不需要改动服务器配置所以固定一个地址

ip address add fe80::4ac:20ff:fe9c:1000/128 dev tap_soft1

#ip address del fe80::4ac:20ff:fe9c:1000/128 dev tap_soft1

客户端

创建虚拟 HUB client/管理虚拟 HUB/管理级联连接 创建到服务器端的连接

本地网桥设置 /将虚拟 HUB client 选择创建的类型 新 tap 设备的桥接,并输入设备名称 soft1

ifconfig tap_soft1 192.168.60.200

ifconfig tap_soft1 mtu 1392

#ip address add fe80::4ac:20ff:fe9c:2000/128 dev tap_soft1

#ip address del fe80::4ac:20ff:fe9c:2000/128 dev tap_soft1

如果能互相 ping 通 vpn 连接已经没有任何问题。

ping 192.168.60.100

ping6 -I tap_soft1 fe80::4ac:20ff:fe9c:1000

* 2015 年 12 月 14 日星期一

- [bash] iptables iproute2 and multiple routes

http://aftermanict.blogspot.it/2015/11/bash-iptables-iproute2-and-multiple.html

- 今天按这篇文档一路设置下来第一次用 fwmark 成功设置路由,由于服务器并没有 ip6table_nat 模块,所以仅能使用 iptable_nat

- 另外似乎设置的 set-mark 3 和原先的 QOS 标记有冲突,只有在 iptables -t mangle -F 清空原先的标记时才有效果,应该是能解决的

- 这次设置最成功的地方在于不会有 vpn 客户端拔号时出现因为接口的问题而无法访问网络

- 另外第一次注意到 iptabes 的全局 ACCEPT 并不是万能的,像此例必须指定特定接口的 MASQUERADE 才可以成功。

/etc/sysctl.conf

net.ipv4.conf.default.rp_filter = 2

net.ipv4.conf.all.rp_filter = 2

net.ipv4.ip_forward = 1

for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 0 >| $f ; done

iptables -I OUTPUT -o eth0 -p udp --dport 53 -m string --hex-string "|07|youtube|03|com|00001c|" --algo bm -j DROP

dnsmasq.conf

ipset=/youtube.com/outwall4,outwall6

iptables-restore /da/fw

ipset destroy outwall6

ipset -N outwall6 iphash family inet6

ipset destroy outwall4

ipset -N outwall4 iphash

##echo "200 outwall" >> /etc/iproute2/rt_tables

ipset -L outwall4 >/tmp/outwall4.tmp

for i in `sed -n "7,$ p" /tmp/outwall4.tmp`;do echo $i;ipset -D outwall4 $i;done

kill -HUP $(pidof dnsmasq)

nslookup www.youtube.com

nslookup m.youtube.com

nslookup youtube.com

#ipset 需要 dnsmasq 通过本地像 192.168.40.253:53 进行查询,直接外部 dns 服务器会没结果

ipset -L outwall4

iptables -t mangle -D PREROUTING -m mark --mark 0x0/0xff00 -m set --match-set outwall4 dst -j MARK --set-xmark 0xfe00/0xff00

iptables -t mangle -D OUTPUT -m mark --mark 0x0/0xff00 -m set --match-set outwall4 dst -j MARK --set-xmark 0xfe00/0xff00

iptables -t mangle -I PREROUTING 2 -m mark --mark 0x0/0xff00 -m set --match-set outwall4 dst -j MARK --set-xmark 0xfe00/0xff00

iptables -t mangle -I OUTPUT -m mark --mark 0x0/0xff00 -m set --match-set outwall4 dst -j MARK --set-xmark 0xfe00/0xff00

##ip route add 192.168.40.0/24 via 192.168.30.254 dev tap_soft

ip route flush table outwall

ip route add default via 192.168.30.254 dev tap_soft table outwall

#ip route add 192.168.40.0/24 via 192.168.30.254 dev tap_soft table outwall

ip rule del table outwall

ip rule add fwmark 0xfe00/0xff00 table outwall prio 1

#ip rule add from 192.168.50.0/24 table outwall prio 1

ip route flush cache

iptables -t nat -F POSTROUTING

iptables -t nat -A POSTROUTING -o vpns+ -j MASQUERADE

iptables -t nat -A POSTROUTING -o tap_soft -j MASQUERADE

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

- 调整了原先的 qos 标记为 0x00/0xff ,路由标记为 0xfe00/0xff00,如果标记为 0xff00/0xff00 则变为 or 标记。注意使用 iptables -I 将规则放在最前面。有关 iptables xmark 的描述看不懂,有人说可以把不同的 mask 看成是 subnet 。

- qos-scripts currently uses the last 8 bits to mark traffic e.g.-j MARK --set-xmark 0x44/0xff

whereas multi-wan uses the next 8 bits (0xff00) to mask its marks:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值