端口转发 + openVPN + iptables?

端口转发 + openVPN + iptables?

我正在尝试在我的网络之间共享 vpn 连接,但没有成功。

我确实有一个办公室,里面有几台电脑,我们使用 iptables 和 DNS 服务器共享互联网连接,我们还有邮件和 FTP 服务器。我们的 ISP 不断更改规则,他们开始阻止一些端口,如 25、21 和 143。所以我能想到的最佳解决方案是使用带有静态 IP 地址的 vpn 服务,而不是我的 ISP IP 地址。

我确实需要本地网络中的所有计算机都使用 VPN IP 地址而不是我的 ISP IP 地址。

我的网络基础设施是这样的:

具有 2 个 NIC 的主 DNS 服务器:/etc/network/interfaces

自动 lo eth0 eth1
iface lo inet 环回

#互联网
iface eth0 inet 静态
    地址 10.0.0.2 # DSL 调制解调器
    网络掩码 255.255.255.192
    网关 10.0.0.1        
#当地的
iface eth1 inet 静态
    地址10.0.1.1#本地网络
    网络掩码 255.255.255.240

邮件服务器 /etc/network/interfaces

自动档
iface lo inet 环回

# 主网络接口
自动 eth0
    iface eth0 inet 静态
        地址 10.0.1.3
        网络掩码 255.255.255.240
        网关 10.0.1.1


/etc/resolv.conf
名称服务器 10.0.1.1

本地网络上的其他客户端

地址 10.0.1.x  
网络掩码 255.255.255.240
网关 10.0.1.1
名称服务器 10.0.1.1

我找到了一种使用以下方法共享 VPN 连接的方法:

#禁用防火墙
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P 输入接受
iptables -P 转发接受
iptables -P 输出接受


WAN=eth0
VPN=tun0
LAN=eth1
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables --append FORWARD --in-interface $LAN -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface $WAN -j MASQUERADE
iptables --table nat --append POSTROUTING --out-interface $VPN -j MASQUERADE[/CODE]

这样,我网络上的所有计算机都可以使用 vpn ip 地址访问互联网。

我需要的是端口转发一些端口:

  • 53 从互联网到 10.0.1.1
  • 80 从互联网到 10.0.1.2
  • 110 来自互联网到 10.0.1.3
  • 143 来自互联网到 10.0.1.3
  • 25 从互联网到 10.0.1.3

iptables -L -v

链输入(策略接受107K数据包,53M字节)
 pkts 字节数 目标 协议 选择加入 退出 源 目标         

链转发(策略接受 93343 个数据包,45M 字节)
 pkts 字节数 目标 协议 选择加入 退出 源 目标         
 117K 18M 接受全部 -- eth1 任何位置 任何位置            

链输出(策略接受 131K 数据包,27M 字节)
 pkts 字节数 目标 协议 选择加入 退出 源 目标

iptables -L

链输入(策略接受)
目标 保护 优化 源 目标         

链转发(策略接受)
目标 保护 优化 源 目标         
接受所有 -- 任何地方 任何地方            

链输出(策略接受)
目标 保护 优化 源 目标  

路线-n

内核 IP 路由表
目标网关 Genmask 标志 指标参考使用 Iface
174.37.222.38 10.0.0.1 255.255.255.255 UGH 0 0 0 eth0
10.0.1.0 0.0.0.0 255.255.255.240 U 0 0 0 eth1
10.0.0.0 0.0.0.0 255.255.255.192 U 0 0 0 eth0
10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 tun0
0.0.0.0 10.10.11.1 128.0.0.0 UG 0 0 0 tun0
128.0.0.0 10.10.11.1 128.0.0.0 UG 0 0 0 tun0
0.0.0.0 10.0.0.1 0.0.0.0 UG 100 0 0 eth0

是否配置

eth0 链路封装:以太网 HWaddr 00:30:4f:1c:49:f8  
          inet 地址:10.0.0.2 Bcast:10.0.0.63 掩码:255.255.255.192
          inet6 地址:fe80::230:4fff:fe1c:49f8/64 范围:链接
          上行广播运行多播 MTU:1500 度量:1
          RX 数据包:107511 错误:0 丢弃:0 超限:0 帧:0
          TX 数据包:129620 错​​误:0 丢弃:0 超限:0 载波:0
          碰撞:0 txqueuelen:1000
          RX 字节:56746295 (56.7 MB) TX 字节:29161617 (29.1 MB)
          中断:11 基址:0xc000

eth1 链路封装:以太网 HWaddr 00:08:54:41:42:88  
          inet 地址:10.0.1.1 Bcast:10.0.1.15 掩码:255.255.255.240
          inet6 地址:fe80::208:54ff:fe41:4288/64 范围:链接
          上行广播运行多播 MTU:1500 度量:1
          RX 数据包:132276 错误:0 丢弃:0 超限:0 帧:0
          TX 数据包:105899 错误:0 丢弃:0 超限:0 载波:0
          碰撞:0 txqueuelen:1000
          RX 字节数:22646823 (22.6 MB) TX 字节数:50537547 (50.5 MB)
          中断:10 基址:0xc400

lo 链路封装:本地环回  
          inet 地址:127.0.0.1 掩码:255.0.0.0
          inet6 地址:::1/128 范围:主机
          上行环回运行 MTU:16436 度量:1
          RX 数据包:1501 错误:0 丢弃:0 超限:0 帧:0
          TX 数据包:1501 错误:0 丢弃:0 超限:0 载波:0
          碰撞:0 txqueuelen:0
          RX 字节:192540 (192.5 KB) TX 字节:192540 (192.5 KB)

tun0 链接封装:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet 地址:10.204.139.115 PtP:10.204.139.115 掩码:255.0.0.0
          UP POINTOPOINT 正在运行 NOARP 多播 MTU:1500 度量:1
          RX 数据包:101518 错误:0 丢弃:0 超限:0 帧:0
          TX 数据包:127403 错误:0 丢弃:0 超限:0 载波:0
          碰撞:0 txqueuelen:100
          RX 字节:46913004 (46.9 MB) TX 字节:19594649 (19.5 MB)

答案1

在您的网关上尝试以下规则:

-A PREROUTING -i $VPN_INTERFACE -p tcp -m tcp --dport 80 -j DNAT --到目的地 $INTERNAL_IP_DESTINATION:80
-A POSTROUTING -o $VPN_INTERFACE -j SNAT --to-source $VPN_IP_OF_SERVER
-A POSTROUTING -o $LAN_INTERFACE -j SNAT --to-source $LAN_IP_OF_SERVER

1. 进行端口转发。2
. 进行源 nat,这样从 VPN 发出的每个数据包都使用服务器 IP。3
. 将数据包转发到内部 IP,并具有服务器 lan ip 的源 nat

相关内容