局域网主机如何通过socket访问外网服务器?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了局域网主机如何通过socket访问外网服务器?相关的知识,希望对你有一定的参考价值。

在有线情况下,通过tcp/ip协议、socket通信,能够实现ARM开发板和局域网服务器间通信!但是,同样的方法,要想ARM开发板和外网服务器间通信却不能成功!是不是有些设置问题?跪求高手点拨!

socket通信程序是支持局域网服务器间通信,他本身就是一个局域网服务器间通信程序,他不支持外部公网,所以你想这样访问的话,无法实现,除非你用共有的网络端口访问,或者影射过去,这样才可以达到效果, 参考技术A 你把ARM开发板接到路由器上,再把路由器接到外网上,设置好ARM开发板在路由器局域网中的IP以后你再去设置一下路由器,让外网访问路由器的时候直接映射到ARM开发板在局域网中的IP就可以了 参考技术B 在路由器上进行NAT映射就可以了

linux局域网通过映射(双网卡)访问外网

图示说明:

 

IP规划设置

主机名 ip地址 ip地址(第二个网卡配置的地址) 地址类别
oldboy01 192.168.10.20 仅可访问内网主机
oldboy02 192.168.10.10 10.0.0.10 可访问内外网主机

 

 

 

 

修改网卡配置及iptables配置

开始修改oldboy01(LAN)主机配置

[root@web01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=192.168.10.20          #设置网卡ip
NETMASK=255.255.255.0        # 设置掩码
GATEWAY=192.168.10.10          #修改网关配置为oldboy2局域网IP地址
DNS1=223.5.5.5               #设置DNS,如果不设置DNS,则无法ping通域名
USERCTL=no
PEERDNS=yes
IPV6INIT=no

显示oldboy01的路由:

完成oldboy01的修改

开始oldboy02(WLAN)的设置

echo "1"> /proc/sys/net/ipv4/ip_forward #修改当前系统内存中ip_forward的值,这是开启ip转发
cat /proc/sys/net/ipv4/ip_forward
3  1
sysctl -p
echo -e "# Controls IP packet forwarding\\nnet.ipv4.ip_forward = 1 " >>/etc/sysctl.conf #将ip转发参数,写入内容到配置文件,每次启动机器时都会开启ip转发功能
tail -3 /etc/sysctl.conf
# Controls IP packet forwarding
net.ipv4.ip_forward = 1         

[root@oldboy02 /]# iptables -t nat -A POSTROUTING -o eth0 -s 192.168.10.0/24 -j SNAT --to 10.0.0.10     #将内网出口规则写入到iptables内存中
[root@oldboy02 /]#      service iptables save          #保存设置
                                  #将上面写入的内容保存到文件中
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]        #上面规则写入的配置文件/etc/sysconfig/iptables
[root@oldboy02 /]# /etc/init.d/iptables restart                #重启iptables
iptables: Setting chains to policy ACCEPT: nat filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
[root@oldboy02 /]# iptables-save                    #显示iptables规则(iptables-save可以显示iptables配置文件及内存中新添加的规则)
# Generated by iptables-save v1.4.7 on Thu Nov 2 14:24:33 2017
*filter
:INPUT ACCEPT [10:720]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [7:1032]
-A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
COMMIT
# Completed on Thu Nov 2 14:24:33 2017
# Generated by iptables-save v1.4.7 on Thu Nov 2 14:24:33 2017
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [1:120]
:OUTPUT ACCEPT [1:120]
-A POSTROUTING -s 192.168.10.0/24 -o eth0 -j SNAT --to-source 10.0.0.10             #之前追加的iptables规则
COMMIT
# Completed on Thu Nov 2 14:24:33 2017
完成修改oldboy02主机配置

测试是否可以访问外网oldboy01



 

以上是关于局域网主机如何通过socket访问外网服务器?的主要内容,如果未能解决你的问题,请参考以下文章

外网如何连接到内网

linux局域网通过映射(双网卡)访问外网

C#如何指定网络(网卡)利用socket通信呢?

虚拟机如何能够让局域网其他电脑访问

外网能访问,内部局域网却不能访问,请问啥原因?网卡,网线连接良好

如何让局域网的服务器在外网能访问?