使用 squid 代理来更改传出 NIC

使用 squid 代理来更改传出 NIC

我之前曾尝试寻找解决方案,但我真的很困惑,并没有收到解决我的问题的答案(嗯,问题实际上是我缺乏知识)。

我想在图表中实现什么

我的本地网络上有一台带有 2 个 NIC 的 Linux(debian)计算机。

  • NIC 1(Wifi)连接到我的主路由器 GW(192.168.31.1)并具有静态 IP 192.168.31.33
  • NIC 2(USB)连接到我的 4G 手机网关(170.20.10.1)并具有静态 IP 170.20.10.2

我将 Squid 配置为监听端口 3128,配置如下:

acl ip1 myip 192.168.31.33
tcp_outgoing_address 170.20.10.2 ip1

acl home src 192.168.31.33 #LocalIP
http_access allow home
http_access deny all
http_port 3128
server_persistant_connections off

现在我知道从这里建立 192.168.31.33:3128 的连接并不足以最终使用网关 170.20.10.1。但我不确定这是 IP Masquerade 的问题(我很难完全理解)还是 iproute 的问题。

如能提供任何帮助或资源链接,我们将不胜感激!

编辑:

ip a 给出:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 30:f7:d7:03:7d:ee brd ff:ff:ff:ff:ff:ff
3: wlp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether f4:06:69:ce:33:12 brd ff:ff:ff:ff:ff:ff
    inet 192.168.31.33/24 brd 192.168.31.255 scope global dynamic noprefixroute wlp1s0
       valid_lft 38670sec preferred_lft 38670sec
    inet6 fe80::b338:170e:8e51:b04a/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
4: enp0s20u1c4i2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 36:a3:95:a2:12:a9 brd ff:ff:ff:ff:ff:ff
    inet 170.20.10.2/24 brd 170.20.10.255 scope global noprefixroute enp0s20u1c4i2
       valid_lft forever preferred_lft forever
    inet6 fe80::34a3:95ff:fea2:12a9/64 scope link 
       valid_lft forever preferred_lft forever

知识产权

default via 192.168.31.1 dev wlp1s0 proto dhcp metric 600 
default via 170.20.10.1 dev enp0s20u1c4i2 proto static metric 20100 
169.254.0.0/16 dev enp0s20u1c4i2 scope link metric 1000 
170.20.10.0/24 dev enp0s20u1c4i2 proto kernel scope link src 170.20.10.2 metric 100 
192.168.31.0/24 dev wlp1s0 proto kernel scope link src 192.168.31.33 metric 600 

答案1

您需要使用路由策略规则 ( ip rule) 来实现基于源的路由,该规则从特定路由表中查找特定源的路由。例如:

ip route add default via 172.20.10.1 table 123
ip rule add from 172.20.10.2 table 123

IP 伪装是一种源 NAT,这意味着它只会更改流量的源 IP(在“路由”之后)。它不确定流量通过/到达哪个接口/网关。

相关内容