AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1595822
Accepted
Richard Barraclough
Richard Barraclough
Asked: 2020-10-21 04:18:26 +0800 CST2020-10-21 04:18:26 +0800 CST 2020-10-21 04:18:26 +0800 CST

IP伪装在上行链路之间自动切换

  • 772

使用两个 Internet 连接运行 Debian 10。

主连接断开并定期恢复。

什么时候wlan0倒下我怎么能enp0s6f1u2接手?互联网继续在本地机器上运行,但不适用于网络上的其他设备,因为wlan0它已硬编码到我的iptables脚本中。

我怎么说iptables:输出伪装到默认路由所在的任何接口?

/etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback

iface enp0s10 inet manual


### WiFi for access point

allow-hotplug wlx00e032800384
iface wlx00e032800384 inet manual
        pre-up ip link set dev wlx00e032800384 address 02:e0:32:80:03:80


### Bridge: internal network

auto br0
iface br0 inet static
#       bridge_ports enp0s10 wlx00e032800384
        bridge_ports enp0s10 ap_wep ap_open
        address 192.168.1.31
        netmask 255.255.255.0


### WiFi to Internet: physical plus virtual for each network defined in wpa_supplicant.conf

auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#        wpa-ssid RWB
#        wpa-psk MYWIFI3518

allow-hotplug RWB
iface RWB inet dhcp
        metric 1


### 4G to Internet (failover)

auto enp0s6f1u2
allow-hotplug enp0s6f1u2
iface enp0s6f1u2 inet dhcp
        metric 9999

iptables脚本

#!/bin/sh

iptables -t nat -F
iptables -t mangle -F
iptables -F
iptables -X

# Squid transparent proxy for HTTP (not HTTPS)

iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j DNAT --to 192.168.1.31:3128
iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128

# IP masquerade

iptables -A FORWARD -o wlan0 -i br0 -s 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

# echo 1 > /proc/sys/net/ipv4/ip_forward

iptables-save > /etc/iptables/rules.v4

一些ip route

当两个接口都启动时:

# ip route
default via 192.168.43.40 dev wlan0 metric 1
default via 192.168.42.129 dev enp0s6f1u2 metric 9999
192.168.1.0/24 dev br0 proto kernel scope link src 192.168.1.31
192.168.42.0/24 dev enp0s6f1u2 proto kernel scope link src 192.168.42.221
192.168.43.0/24 dev wlan0 proto kernel scope link src 192.168.43.7

何时wlan0下降:

# ip route
default via 192.168.42.129 dev enp0s6f1u2 metric 9999
192.168.1.0/24 dev br0 proto kernel scope link src 192.168.1.31
192.168.42.0/24 dev enp0s6f1u2 proto kernel scope link src 192.168.42.221
iptables failover
  • 1 1 个回答
  • 48 Views

1 个回答

  • Voted
  1. Best Answer
    user1686
    2020-10-21T05:56:22+08:002020-10-21T05:56:22+08:00

    我在 iptables 中怎么说:输出伪装到默认路由所在的任何接口?

    默认情况下会发生这种情况——iptables 不会首先决定输出接口。您的规则实际上是相反的:“如果输出接口是 wlan0,则伪装数据包”。(这实际上就是为什么链被命名为后路由的原因。)

    因此,您可以简单地使用两个 iptables 规则,每个规则都匹配一个接口,并且都应用 SNAT(伪装)。或者,您可以有一个与目标地址匹配的规则,而不关心接口(例如! -s 192.168.0.0/16,伪装所有未发送到 LAN 的内容,无论接口如何)。

    (你的“FORWARD”规则也是如此——你可以只拥有其中两个,接受来自所有必要接口的流量。)

    • 1

相关问题

  • 我可以在 iptables 命令中省略 -m 开关吗?

  • 在 docker-compose 网络和一台外部服务器中打开 iptables

  • 华硕RT-AC88U路由被防火墙拦截

  • 打开 VPN 客户端无法访问 VPN 服务器可以访问的其他子网

  • 将来自 eth1 的所有流量路由到 tun0 (ssh)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve