我希望使用笔记本电脑同时无线连接到 Intranet 和 Internet。假设访问Internet的网络的子网IP地址范围为192.168.0.X,内网的子网IP地址范围为10.10.0.X。我在 2017 款 Lenovo ThinkPad 上运行 Arch Linux。看来我的无线网卡支持组合。我不完全理解下面的所有输出,但我认为它证实了我的卡可以同时在多种模式下运行。
iw list | grep -A 2 'interface combination'
valid interface combinations:
* #{ managed } <= 1, #{ AP, P2P-client, P2P-GO } <= 1, #{ P2P-device } <= 1,
total <= 3, #channels <= 2
Run Code Online (Sandbox Code Playgroud)
我用这个答案开始:https://askubuntu.com/a/488604/36661
我已经验证以下命令成功:
iw dev wlan0 interface add wlan1 type station
Run Code Online (Sandbox Code Playgroud)
运行该命令后,我看到这个界面:
4: wlan1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether c6:d1:7c:2b:1a:b2 brd ff:ff:ff:ff:ff:ff
Run Code Online (Sandbox Code Playgroud)
但是,我没有成功将该接口连接到第二个接入点。首先,我尝试了 NetworkManager GUI,在其中创建了一个新的无线连接,给它一个随机 MAC 地址,将其分配给新的 …
$ /sbin/route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.122.1 0.0.0.0 UG 0 0 0 ens3
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 ens3
$ /sbin/ifconfig
ens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.122.202 netmask 255.255.255.0 broadcast 192.168.122.255
inet6 fe80::5054:ff:fe99:5eee prefixlen 64 scopeid 0x20<link>
ether 52:54:00:99:5e:ee txqueuelen 1000 (Ethernet)
RX packets 14906 bytes 18020195 (17.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 7390 bytes 786783 (768.3 KiB)
TX errors 0 …
Run Code Online (Sandbox Code Playgroud) 我有一台带有两个网络接口和两个不同互联网连接的机器。我知道有多个路由表之类的东西。不过我有一个非常简单的场景。传出 ssh 应用程序应始终通过 wlan0。那么为什么要做这么复杂的事情呢?
第一次使用curl 进行测试,它的工作非常完美:
curl --interface wlan0 ifconfig.me
185.107.XX.XX
curl --interface eth0 ifconfig.me
62.226.XX.XX
Run Code Online (Sandbox Code Playgroud)
因此,无需为两个接口设置任何特殊的路由规则,它就完全按照我想要的方式工作。eth0 是默认路由
ip route
default via 192.168.178.1 dev eth0 proto dhcp src 192.168.178.21 metric 202
default via 172.16.1.1 dev wlan0 proto dhcp src 172.16.1.88 metric 303
172.16.1.0/24 dev wlan0 proto dhcp scope link src 172.16.1.88 metric 303
192.168.178.0/24 dev eth0 proto dhcp scope link src 192.168.178.21 metric 202
Run Code Online (Sandbox Code Playgroud)
现在尝试用 wget 做同样的事情。Wget 非常适合调试,因为它具有与--bind-address
ssh 相同的选项-b
。
wget -O- --bind-address=192.168.178.21 ifconfig.me 2> /dev/null
62.226.XX.XX …
Run Code Online (Sandbox Code Playgroud) 工作人员,请看下面的路由表。dev ens160 接受来自 172.17.4.x 的传入 ping 请求,并通过 dev tun0 应答。
主机:172.31.4.225
Lan:172.31.4.0/24
GW:172.31.4.1
tun0:访问互联网的隧道 (openvpn)
ens160:虚拟机网络接口
远程客户端:172.17.4.x
# ip route
0.0.0.0/1 via 10.z.0.1 dev tun0
default via 172.31.4.1 dev ens160 proto dhcp src 172.31.4.225 metric 100
10.z.0.0/16 dev tun0 proto kernel scope link src 10.z.0.6
128.0.0.0/1 via 10.23.0.1 dev tun0
172.16.0.0/16 via 172.31.4.1 dev ens160
172.31.4.0/24 dev ens160 proto kernel scope link src 172.31.4.225
172.31.4.1 dev ens160 proto dhcp scope link src 172.31.4.225 metric …
Run Code Online (Sandbox Code Playgroud)